是什么?
在DedeCMS中,“简略标题”通常指两种情况:

- 文章栏目页的“列表标题”:在文章列表(栏目页、首页列表)中显示的标题,通常比主标题更短,用于吸引点击和适应布局。
- 页的副标题或摘要:在文章内容页内部,有时会希望显示一个比主标题更简短的副标题。
下面我将分别讲解如何处理这两种情况。
修改栏目列表页显示的简略标题
这是最常见的需求,你希望在栏目列表里显示一个简短的标题,但文章内容页的主标题保持不变。
方法1:使用DedeCMS自带的“列表标题”字段(推荐)
这是最标准、最规范的方法,充分利用了DedeCMS的字段功能。
步骤:

-
添加字段:
- 登录你的DedeCMS后台。
- 进入 【核心】 -> 【内容模型管理】。
- 点击你正在使用的内容模型(通常是“文章”模型)后面的 【字段管理】。
- 点击 【添加新字段】。
- 字段名称:
listtitle(可以自定义,但建议用英文) - 字段提示: (后台表单中显示的提示文字)
- 字段类型:
单行文本 - 其他选项保持默认或根据需要设置,然后点击 【保存】。
-
在后台发布文章时填写:
- 现在去发布或修改一篇文章,在编辑页面下方,你会新看到一个“列表标题”的输入框。
- 在这里填写你希望在栏目列表页显示的简短标题。
- 文章的“标题”字段保持不变,它将用于内容页的标题。
-
修改模板文件:
-
找到你的列表页模板文件,通常是
templets/default/list_article.htm(路径可能因你的模板而异)。 -
找到原来调用文章标题的代码,它通常是这样的:
<a href='[field:arcurl/]'>[field:title/]</a>
-
将其修改为:优先显示
listtitle,listtitle为空,则显示title。<a href='[field:arcurl/]'> [field:listtitle function='(@me ? @me : @me)'/] <!-- 或者更简洁的写法,但上面那种更明确 --> <!-- [field:listtitle/][field:listtitle runphp='yes']if(@me == "") @me = @me; else @me = @me;[/field:listtitle] --> </a>
-
解释:
[field:listtitle/]会调用我们新添加的字段,如果这个字段是空的,它就会显示空白,上面的function='(@me ? @me : @me)'写法有点绕,更清晰的是用runphp判断:<a href='[field:arcurl/]'> [field:listtitle runphp='yes'] if(@me == ""){ @me = @me; // 如果为空,则不显示任何东西,会显示主标题 }else{ @me = @me; // 如果不为空,则显示简略标题 } [/field:listtitle] </a> -
更简单的方法(直接替换):直接用
[field:listtitle/]替换[field:title/],然后在后台发布文章时,如果不填写“列表标题”,该字段为空,在页面上就不会显示任何内容,这显然不行,所以最稳妥的方法是使用 PHP判断。 -
正确的PHP判断写法(推荐):
<a href='[field:arcurl/]'> [field:listtitle runphp='yes'] if(trim(@me) == ''){ @me = '<span class="main-title">[field:title/]</span>'; }else{ @me = '<span class="short-title">' . @me . '</span>'; } [/field:listtitle] </a>这段代码的意思是:
listtitle字段为空,就调用主title;如果不为空,就调用listtitle,你可以给它们加上不同的CSS类以便样式区分。
-
方法2:使用标题截断函数(不推荐,但有局限性)
如果你不想添加新字段,只想在模板里对主标题进行长度限制,可以使用DedeCMS的内置函数。
步骤:
- 找到列表页模板
list_article.htm。 - 调用代码
<a href='[field:arcurl/]'>[field:title/]</a>。 - 修改为截断形式:
<a href='[field:arcurl/]'>[field:title function='cn_substr(@me, 20)'/]</a>
- 解释:
cn_substr(@me, 20)是一个PHP函数,表示截取@me(即当前字段的值,这里是title)的前20个中文字符(一个汉字算一个字符)。
- 解释:
局限性:
- 不灵活都被强制截断到同样长度,可能导致一些标题被截断得不通顺。
- SEO影响:列表页的标题是SEO的重要部分,截断后的标题可能包含不完整的关键词。
- 无法自定义:你不能为某篇文章特别指定一个简短的标题。
页显示一个简略的副标题
如果你想在文章内容页(article_article.htm下方或上方显示一个简短的副标题。
方法1:复用“列表标题”字段(推荐)
如果你已经按照情况一的方法添加了 listtitle 字段,那么在内容页模板里调用它就非常简单。
步骤:
- 确保已添加
listtitle字段(参考情况一)。 - 页模板
article_article.htm。 - 下方添加调用代码:
<h1 class="title">[field:title/]</h1> {if field:listtitle} <h2 class="subtitle">[field:listtitle/]</h2> {/if}- 解释:这里使用了DedeCMS的
if条件判断。{if field:listtitle}的意思是“listtitle字段不为空”,则执行后面的代码,这样,只有填写了简略标题的文章才会显示副标题,页面更整洁。
- 解释:这里使用了DedeCMS的
方法2:使用文章摘要(不推荐作标题)
有些朋友会想,能不能用文章摘要(description 字段)作为简略标题?
- 可以,但不推荐。
- 原因:
description字段主要用于SEO和文章列表的摘要描述,其内容通常是文章的简介,而不是一个标题,把它当作标题显示在内容页,语义上不通顺,且长度不受控制。 - 如果非要使用,可以在
article_article.htm里这样调用:<h1 class="title">[field:title/]</h1> <p class="summary">[field:description/]</p>
然后用CSS样式去美化这个
p.summary,让它看起来像副标题。
总结与最佳实践
| 需求场景 | 推荐方法 | 优点 | 缺点 |
|---|---|---|---|
| 栏目列表页需要简短标题 | 方法1:添加listtitle字段,并用PHP判断调用 |
最规范、最灵活、SEO友好 | 需要手动添加字段和修改模板,初期稍显复杂 |
方法2:使用cn_substr函数截断 |
简单,无需修改数据库 | 不灵活,可能截断不通顺,影响SEO | |
用description字段作副标题 |
不推荐 | 无需新字段 | 语义不清,内容不受控制,不专业 |
最终建议:
花几分钟时间,按照 情况一的方法1 为你的网站添加一个 listtitle 字段,这是一个一劳永逸的优化,不仅能完美解决列表页的简略标题问题,还能在内容页、首页等任何地方灵活调用,让你的网站内容管理更加专业和高效。
