友情链接字数限制,织梦如何设置?

99ANYc3cd6
预计阅读时长 10 分钟
位置: 首页 织梦建站 正文
  1. 后台添加/编辑时,输入框的字符限制。
  2. 前台模板调用时,实际显示的字数限制。

这两种情况的限制是独立的,需要分别处理。

织梦友情链接字数限制
(图片来源网络,侵删)

后台添加/编辑时的字数限制

当你登录织梦后台,进入“核心” -> “友情链接”页面,点击“增加一个链接”时,会看到网站名称和网站地址的输入框。

网站名称 的字数限制

这个限制是由数据库字段长度决定的。

  • 默认限制: 织梦默认的 dede_friendlink 数据库表中,webname 字段(存放网站名称)的长度是 50个字符
  • 如何查看/修改:
    1. 登录你的网站数据库管理工具(如 phpMyAdmin)。
    2. 找到你的织梦数据库,找到 dede_friendlink 表(如果你的表前缀不是 dede_,请使用你自己的前缀)。
    3. 点击 webname 字段,查看其“长度/值”属性,默认是 50
    4. 修改方法: 你可以直接在这里修改长度,比如改为 100修改前务必备份数据库! 修改后,你之前添加的超过50个字符的网站名称就能正常显示了。

如果你想添加一个超过50个字符的网站名称,你需要直接修改数据库中 webname 字段的长度。

网站地址 的字数限制

这个限制同样由数据库字段决定。

织梦友情链接字数限制
(图片来源网络,侵删)
  • 默认限制: url 字段(存放网站地址)的长度是 255个字符
  • 说明: 255个字符对于绝大多数网址来说都绰绰有余,所以通常你不需要修改这个限制,如果你有特殊的长网址需求,可以按照上述方法修改 url 字段的长度。

前台模板调用时的字数限制

这是更常见的情况,即使后台允许你输入很长的网站名称,但在前台页面显示时,你可能希望限制显示的字数,以保持页面布局的美观。

织梦提供了非常灵活的模板标签来实现这一点,核心是使用 {dede:field.function} 结合PHP的 substr() 函数。

使用 substr 函数截取(最常用)

假设你想让友情链接的网站名称最多显示 10个字符,如果超过则用省略号 代替。

在你的友情链接模板文件中(通常位于 /templets/default/ 目录下,文件名可能是 friendlink.htm 或其他自定义名称),找到调用友情链接的循环代码,将:

织梦友情链接字数限制
(图片来源网络,侵删)
<a href='[field:url/]' target='_blank'>[field:webname/]</a>

修改为:

<a href='[field:url/]' target='_blank'>
    [field:webname function='substr(@me,0,10)."..."'/]
</a>

代码解释:

  • [field:webname function='...'/]:这是织梦的自定义函数调用格式。
  • substr(@me, 0, 10):这是一个PHP函数。
    • @me:代表当前字段的值,也就是 [field:webname/] 的原始内容。
    • 0:表示从第0个字符(即第一个字符)开始截取。
    • 10:表示截取10个字符。
  • 表示在截取后的字符串末尾加上省略号。

进阶用法(仅当超过指定长度时才显示省略号):

如果希望名称本身不超过10个字符时,不显示省略号,可以使用更复杂的PHP判断:

<a href='[field:url/]' target='_blank'>
    [field:webname function='if(strlen(@me)>10) substr(@me,0,10)."..." else @me'/]
</a>
  • strlen(@me):获取字符串的总长度。
  • if(...) else ...:如果长度大于10,则截取并加省略号;否则,显示原内容。

使用 cn_substr 函数(按中文字符长度截取)

substr 函数是按字节计算的,一个中文字符可能占用2-3个字节,直接使用可能会导致截断一半汉字,织梦内置了 cn_substr 函数,可以更精确地按“字符个数”来截断中英文字符串。

<a href='[field:url/]' target='_blank'>
    [field:webname function='cn_substr(@me, 10)' /]
</a>
  • cn_substr(@me, 10):会从 [field:webname/] 中截取前10个“字符”(无论中英文)。

同样,你也可以结合省略号使用:

<a href='[field:url/]' target='_blank'>
    [field:webname function='if(strlen(cn_substr(@me,10))<strlen(@me)) cn_substr(@me,10)."..." else @me'/]
</a>

这段代码的意思是:如果截取10个字符后的长度不等于原始长度,说明被截断了,就加上省略号;否则显示原内容。


总结与建议

场景 默认限制 解决方案
后台添加 网站名称 50字符 修改数据库 dede_friendlink 表的 webname 字段长度。
前台显示 无硬性限制,取决于模板 修改模板文件,使用 {dede:field.function}substr()cn_substr() 函数进行截断。

最佳实践建议:

  1. 不要轻易修改数据库:除非你确实有超过50个字符的网站名称需求,否则不建议修改数据库,保持默认设置可以避免不必要的麻烦。
  2. 优先使用模板控制:页面的显示效果应该由模板来控制,通过修改模板文件来限制显示字数,是最灵活、最安全、最推荐的方法。
  3. 推荐使用 cn_substr:如果你的网站主要面向中文用户,使用 cn_substr 函数可以确保中文字符不会被错误地截断,显示效果更佳。
-- 展开阅读全文 --
头像
织梦模板修改账号密码
« 上一篇 今天
C语言showinfo是什么?如何实现?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]