直接使用系统自带的 shorttitle 标签 (最推荐)
这是最简单、最直接的方法,前提是你的文章在发布时已经填写了“短标题”字段。

适用场景:
- 文章在后台发布时,在“高级选项”里填写了“短标题”。
- 你没有对系统进行过大的修改,默认的字段都存在。
实现步骤:
-
打开文章模板文件 登录你的 DedeCMS 后台,进入【模板】->【默认模板管理】->【文章模板】。 找到你正在使用的文章页模板,通常是
article_article.htm,点击后面的【修改】。 -
添加调用代码 在你需要显示短标题的位置,插入以下代码:
{dede:field name='shorttitle'/} -
保存并更新 保存模板文件,为了让修改生效,你需要:
- 更新HTML:进入【生成】->【HTML更新】->【更新文档HTML】,选择你想要更新的文章,点击“开始更新”。
- 或者直接在文章页刷新缓存(如果开启了模板缓存)。
示例:

假设你想让文章的短标题显示在文章标题的下方,可以这样修改模板:
<h1 class="article-title">{dede:field.title/}</h1>
<!-- 在这里调用短标题 -->
<h2 class="article-shorttitle">{dede:field.name='shorttitle'/}</h2>
<div class="article-content">
{dede:field.body/}
</div>
使用自定义字段 (灵活度最高)
如果你的文章没有填写“短标题”,或者你想用一个全新的名字来定义这个字段(subtitle),使用自定义字段是最佳选择。
适用场景:
- 后台没有填写“短标题”。
- 你想要更灵活的字段名称。
- 需要为旧文章批量添加这个功能。
实现步骤:
-
添加自定义字段
- 进入 DedeCMS 后台【核心】->【内容模型管理】->【普通文章】(或其他你使用的模型) ->【字段管理】。
- 点击【添加新字段】。
- 字段名称:输入
shorttitle(或你喜欢的名字,如subtitle)。 - 字段提示:输入“文章短标题” (这个会在后台发布文章时显示)。
- 字段类型:选择“单行文本”。
- 是否为必填项:根据需要选择。
- 其他选项保持默认即可,点击【保存】。
-
更新文章列表 添加完字段后,需要更新一下数据库结构,进入【系统】->【SQL命令行工具】,执行以下命令:
(图片来源网络,侵删)ALTER TABLE `dede_archives` ADD `shorttitle` VARCHAR(255) NOT NULL DEFAULT '';
注意:
dede_是你的数据库表前缀,如果不是请自行修改。 -
后台发布/编辑文章 打开任意一篇文章进行编辑或发布,你会发现在“高级选项”或自定义字段区域出现了“文章短标题”的输入框,填入你的短标题内容并保存。
-
在模板中调用 打开
article_article.htm模板文件,使用和第一种方法完全一样的标签来调用:{dede:field name='shorttitle'/}DedeCMS 会自动识别你添加的自定义字段。
通过修改PHP文件实现 (功能扩展)
如果你希望短标题能自动从长标题中提取,或者有更复杂的逻辑处理,可以通过修改PHP文件来实现,这是一种比较“硬核”的方法。
适用场景:
- 不想在后台重复填写短标题,需要根据长标题自动生成(只取前20个字符)。
- 有特殊的数据处理需求。
实现步骤:
-
修改PHP文件 找到并打开
/include/extend.func.php文件,如果这个文件不存在,就新建一个,这个文件是专门用来存放自定义函数的。在文件末尾添加以下 PHP 函数:
/** * 获取文章短标题 * 如果填写了shorttitle字段则优先使用,否则截取长标题的一部分 * @param string $title 原始标题 * @param int $length 截取长度,默认为20 * @return string 短标题 */ function GetShortTitle($title, $length = 20) { // 优先调用系统自带的 shorttitle 字段 if (isset($GLOBALS['arcid']) && $GLOBALS['arcid'] > 0) { $query = "SELECT shorttitle FROM dede_archives WHERE id = '{$GLOBALS['arcid']}'"; $row = $GLOBALS['dsql']->GetOne($query); if (!empty($row['shorttitle'])) { return $row['shorttitle']; } } // shorttitle 为空,则截取长标题 if (mb_strlen($title, 'UTF-8') > $length) { return mb_substr($title, 0, $length, 'UTF-8') . '...'; } else { return $title; } }注意:同样,
dede_archives请根据你的数据库表前缀进行修改。 -
在模板中调用 打开
article_article.htm模板文件,使用以下方式调用你刚刚创建的函数:{dede:geturl function='GetShortTitle(@me)'/}或者,如果你的系统支持更直接的函数调用(取决于版本和配置),也可以尝试:
[field: function='GetShortTitle(@me, 15)'/]
但第一种
{dede:geturl}方式兼容性最好。
总结与推荐
| 方法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
{dede:field name='shorttitle'/} |
最简单、最原生、性能最好 | 依赖后台是否填写了短标题 | ⭐⭐⭐⭐⭐ (首选) |
| 自定义字段 | 最灵活、可扩展性强 | 需要手动添加字段和更新数据库 | ⭐⭐⭐⭐ (次选,适合新项目或改造) |
| 修改PHP文件 | 功能最强大、可自动化处理 | 需要修改代码,有一定门槛,升级可能有风险 | ⭐⭐ (适合有特殊需求的开发者) |
对于绝大多数用户,强烈推荐使用方法一,如果发现后台没有这个字段或者功能不正常,再采用方法二进行补充和扩展。
