在设计网页的时候,一些版块需要对文章标题的长度进行限制,超出汉字就不美观了,就比如我的一个站点,图片列表下面标题最多显示8个汉字,如果超出了就换行了,考虑到标题最后两字是通用词也就是XX教程、XX下载,所以我只需要把超过长度的最后两个字去除即可。
在DedeCMS中的[field:title/]标签里,加一条规则,如果标题超过8个汉字,则隐藏最后两个字。
以下是两种解决方案,推荐文案二:
方案一:直接在模板中使用PHP代码(简单方法)
[field:title runphp='yes']
@me = (strlen(@me) > 16) ? substr(@me, 0, -6) : @me;
[/field:title]
GBK编码下每个汉字占2字节,根据自己需求进行修改
[field:title function='(strlen("@me")>16) ? mb_substr("@me",0,8,"GBK")."" : "@me"' /]
这个是超过8个汉字隐藏超出部份。
方案二:创建自定义函数(推荐方法)
在/include/extend.func.php文件中添加以下函数(如果没有此文件,可以创建):
function cutTitle($title) {
if (strlen($title) > 16) {
$len = strlen($title);
return substr($title, 0, $len - 4);
}
return $title;
}
然后在模板中的标签如下:
[field:title function="cutTitle(@me)"/]
须知:
- 上面代码编码是GBK(每个汉字2字节),如果是UTF-8编码需修改。
- 方案一中的24是因为GBK编码下8个汉字=16字节,但为了处理标点符号等做了适当放宽。
- 如果标题中包含英文或数字,可能需要进一步调整逻辑。