这是 DedeCMS 开发者和网站管理员最常用到的功能之一,控制标题长度主要有两种方法:

- 使用
titlelen属性(推荐,最常用) - 使用
function属性配合自定义函数(更灵活,功能更强)
使用 titlelen 属性(推荐)
这是最直接、最简单的方法,适用于绝大多数场景。titlelen 属性用于指定标题显示的最大字符数(一个汉字、一个字母或一个符号都算一个字符)。
语法
{dede:arclist titlelen='字符数' ...}
<a href='[field:arcurl/]'>[field:title/]</a>
{/dede:arclist}
len='20'`:表示标题最多显示 20 个字符,如果标题超过 20 个字符,DedeCMS 会自动进行截断。
- 默认值:
titlelen属性不写,默认值是 30,即默认显示 30 个字符。
示例
假设有一篇文章标题是:“DedeCMS 是一款非常优秀的国产开源 CMS 系统”。
不设置 titlelen (默认显示30个字符)

{dede:arclist typeid='1' row='5'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
输出结果可能会是:
<li><a href="...">DedeCMS 是一款非常优秀的国产开源 CMS 系统</a></li>长度没有超过30,所以完整显示)
设置 titlelen='15'
{dede:arclist typeid='1' row='5' titlelen='15'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
输出结果会是:
<li><a href="...">DedeCMS 是一款非常...</a></li>
(注意:这里会自动在末尾加上 )
重要提示: 的来源
你可能会发现,被截断的标题末尾会自动出现三个点 ,这个 是由 DedeCMS 系统自动添加的,表示标题被截断了,它的代码是 ,在 HTML 中显示为 。
使用 function 属性(灵活且强大)
当你需要更复杂的控制时,比如按字数截断并手动添加“阅读更多”链接,或者按不同栏目设置不同的标题长度,function 属性就派上用场了。
function 属性允许你对 field:title 的值进行 PHP 函数处理。
示例1:按字数截断并添加自定义后缀
假设我们想让标题显示 15 个字符,并在末尾添加 [详情] 而不是 。
步骤1:在 /include/helpers/ 目录下创建一个自定义函数文件,extend.helper.php
(如果文件已存在,直接在文件末尾添加函数即可)
步骤2:在 extend.helper.php 中添加以下函数
<?php
// 函数名可以自定义,这里叫 'SubstrTitle'
// 参数 $title 是传入的标题, $len 是你想要的长度
if(!function_exists('SubstrTitle'))
{
function SubstrTitle($title, $len = 30)
{
// 使用 mb_substr 函数进行截断,防止中文乱码
$result = mb_substr($title, 0, $len, 'UTF-8');
// 判断是否被截断
if (mb_strlen($title, 'UTF-8') > $len) {
$result .= ' [详情]'; // 添加自定义后缀
}
return $result;
}
}
?>
步骤3:在模板中使用 function 调用这个函数
{dede:arclist typeid='1' row='5'}
<li>
<a href="[field:arcurl/]" title="[field:title function='htmlspecialchars(@me)'/]">
[field:title function='SubstrTitle(@me, 15)'/]
</a>
</li>
{/dede:arclist}
代码解释:
[field:title function='SubstrTitle(@me, 15)'/]@me:这是 DedeCMS 的一个特殊变量,代表当前标签(这里是field:title)的原始值。SubstrTitle(@me, 15):调用我们刚刚创建的SubstrTitle函数,并将原始标题和长度参数15传进去。htmlspecialchars():这是一个很好的实践,可以防止标题中包含特殊字符(如<,>,&)破坏 HTML 结构。
总结与对比
| 特性 | titlelen 属性 |
function 属性 |
|---|---|---|
| 易用性 | 非常简单,一行代码搞定 | 稍复杂,需要创建PHP函数 |
| 灵活性 | 较低,只能截断并自动加 | 非常高,可自定义截断逻辑、后缀、样式等 |
| 功能 | 控制字符数 | 可执行任何PHP代码处理标题 |
| 适用场景 | 大部分常规列表页,快速实现 | 需要个性化、复杂样式的场景,如首页大图标题、不同栏目不同样式等 |
推荐做法:
- 99% 的情况,直接使用
titlelen就足够了,简单高效。 - 当你需要自定义截断后的显示效果(比如换行、加图标、加不同文字链接等)时,再使用
function方法。
希望这个详细的解释能帮助你完全掌握 DedeCMS arclist 的标题长度控制!
