使用系统自带标签(最推荐、最常用)
这是最标准、最安全的方法,适用于绝大多数情况,DedeCMS的标签系统已经为我们准备好了这个功能。

(图片来源网络,侵删)
使用 {dede:field.description/}
这是最直接、最常用的方法,它会直接调用文章在后台“内容模型”中设置的“或“描述”。
使用方法:页模板文件(通常是 /templets/default/article_article.htm)中,将 {dede:field.description/} 标签插入到你想要显示描述的位置。
示例代码:
<div class="article-meta">
<p class="description">{dede:field.description/}</p>
</div>
优点:
(图片来源网络,侵删)
- 简单直接,无需额外配置。
- 由DedeCMS官方支持,稳定可靠。
注意事项:
- 这个标签调用的是你在发布文章时,编辑器下方“输入框里填写的内容,如果那里没有填写,那么这里就不会显示任何内容。
- 默认情况下,如果描述为空,标签也不会渲染任何东西,不会留下空白。
使用 {dede:field.body function='cn_substr(@me, 200)'/} 标签(自动截取)
如果你没有填写文章摘要,但又希望自动从文章正文中提取一部分作为描述,可以使用这个方法。
使用方法:
这个标签通过 function 参数调用PHP的 cn_substr 函数来截取文章正文(field.body)的前200个字符。
示例代码:
(图片来源网络,侵删)
<div class="article-meta">
<p class="description">
{dede:field.body function='cn_substr(@me, 200)'/}...
</p>
</div>
参数说明:
@me:代表当前标签的原始值,在这里就是 field.body 的全部内容。
cn_substr(@me, 200):表示从原始内容中截取前200个字符。
- 可以手动在末尾添加省略号,表示内容被截断了。
优点:
- 自动生成描述,即使后台没有填写摘要也能显示。
- 非常适合SEO,确保每个页面都有描述。
缺点:
- 可能会截断不完整,影响阅读体验。
- 如果文章开头是图片、代码等非文字内容,截取出来的描述可能没有意义。
使用自定义函数(更灵活)
当默认的 {dede:field.description/} 不满足你的需求时,例如你希望对获取到的描述进行一些处理(比如去除HTML标签、统一长度等),可以自定义一个函数。
在 include/extend.func.php 中添加自定义函数
这是DedeCMS扩展功能的标准做法。
步骤:
- 用FTP或文件管理器打开你的网站根目录下的
/include/extend.func.php 文件。
- 在文件末尾添加以下PHP代码(如果没有这个文件就新建一个):
/**
* 获取文章描述,如果描述为空则自动从正文中截取
* @param string $description 原始描述
* @param int $body_len 如果描述为空,从正文中截取的长度
* @return string 处理后的描述
*/
function GetArtDescription($description = '', $body_len = 200) {
// 如果描述不为空,则直接返回
if (!empty($description)) {
return $description;
}
// 如果描述为空,则从正文中截取
// 注意:这里需要获取文章正文,通常通过$GLOBALS['arc']对象
global $arc;
if (is_object($arc)) {
$body = $arc->Fields['body'];
// 去除HTML标签
$body = preg_replace('/<[^>]+>/', '', $body);
// 去除空白字符(如空格、换行)
$body = str_replace(array("\n", "\r", "\t"), '', $body);
// 截取指定长度
return cn_substr($body, $body_len);
}
return '';
}
在模板中调用自定义函数
你可以在文章页模板中使用这个新函数了。
使用方法:
使用 {dede:field.function='你的函数名(参数)'/} 的格式来调用。
示例代码:
<div class="article-meta">
<p class="description">
{dede:field.description function='GetArtDescription(@me, 150)'/}...
</p>
</div>
代码解释:
function='GetArtDescription(@me, 150)':调用我们刚刚创建的 GetArtDescription 函数。
@me:作为第一个参数,传入 {dede:field.description/} 的原始值(即后台填写的摘要)。
150:作为第二个参数,如果摘要为空,则从正文截取150个字符。
优点:
- 功能极其灵活,可以任意处理描述内容。
- 代码复用性强,可以在任何地方调用这个函数。
缺点:
- 需要修改PHP文件,对新手有一定门槛。
- 如果修改了
extend.func.php 文件,建议做好备份。
总结与推荐
方法
优点
缺点
适用场景
{dede:field.description/}
最简单、最标准、最推荐
依赖后台手动填写摘要
绝大多数情况编辑规范。
{dede:field.body function='...'/}
自动生成,SEO友好
可能截断不完整,体验一般
后台编辑不积极,但SEO要求高的网站。
自定义函数
最灵活、功能最强
需要修改PHP文件,有技术门槛
对描述有特殊格式化要求,或需要复杂逻辑处理。
给你的建议:
- 首选方法一:直接使用
{dede:field.description/},这是最规范的做法,鼓励你在发布文章时认真填写摘要。
- 备选方案:如果担心编辑忘记填摘要,可以在模板里同时使用方法一和方法二,形成一个优雅的降级处理,先用方法一,如果为空则再用方法二。
{dede:field.description runphp='yes'}
if(@me=='') @me = cn_substr(strip_tags(@me), 200);
{/dede:field.description}
(注意:这个内联PHP的写法比较老旧,推荐使用上面提到的自定义函数方法,更清晰。)
希望这些方法能帮到你!
这是最直接、最常用的方法,它会直接调用文章在后台“内容模型”中设置的“或“描述”。
使用方法:页模板文件(通常是 /templets/default/article_article.htm)中,将 {dede:field.description/} 标签插入到你想要显示描述的位置。
示例代码:
<div class="article-meta">
<p class="description">{dede:field.description/}</p>
</div>
优点:

(图片来源网络,侵删)
- 简单直接,无需额外配置。
- 由DedeCMS官方支持,稳定可靠。
注意事项:
- 这个标签调用的是你在发布文章时,编辑器下方“输入框里填写的内容,如果那里没有填写,那么这里就不会显示任何内容。
- 默认情况下,如果描述为空,标签也不会渲染任何东西,不会留下空白。
使用 {dede:field.body function='cn_substr(@me, 200)'/} 标签(自动截取)
如果你没有填写文章摘要,但又希望自动从文章正文中提取一部分作为描述,可以使用这个方法。
使用方法:
这个标签通过 function 参数调用PHP的 cn_substr 函数来截取文章正文(field.body)的前200个字符。
示例代码:

(图片来源网络,侵删)
<div class="article-meta">
<p class="description">
{dede:field.body function='cn_substr(@me, 200)'/}...
</p>
</div>
参数说明:
@me:代表当前标签的原始值,在这里就是field.body的全部内容。cn_substr(@me, 200):表示从原始内容中截取前200个字符。- 可以手动在末尾添加省略号,表示内容被截断了。
优点:
- 自动生成描述,即使后台没有填写摘要也能显示。
- 非常适合SEO,确保每个页面都有描述。
缺点:
- 可能会截断不完整,影响阅读体验。
- 如果文章开头是图片、代码等非文字内容,截取出来的描述可能没有意义。
使用自定义函数(更灵活)
当默认的 {dede:field.description/} 不满足你的需求时,例如你希望对获取到的描述进行一些处理(比如去除HTML标签、统一长度等),可以自定义一个函数。
在 include/extend.func.php 中添加自定义函数
这是DedeCMS扩展功能的标准做法。
步骤:
- 用FTP或文件管理器打开你的网站根目录下的
/include/extend.func.php文件。 - 在文件末尾添加以下PHP代码(如果没有这个文件就新建一个):
/**
* 获取文章描述,如果描述为空则自动从正文中截取
* @param string $description 原始描述
* @param int $body_len 如果描述为空,从正文中截取的长度
* @return string 处理后的描述
*/
function GetArtDescription($description = '', $body_len = 200) {
// 如果描述不为空,则直接返回
if (!empty($description)) {
return $description;
}
// 如果描述为空,则从正文中截取
// 注意:这里需要获取文章正文,通常通过$GLOBALS['arc']对象
global $arc;
if (is_object($arc)) {
$body = $arc->Fields['body'];
// 去除HTML标签
$body = preg_replace('/<[^>]+>/', '', $body);
// 去除空白字符(如空格、换行)
$body = str_replace(array("\n", "\r", "\t"), '', $body);
// 截取指定长度
return cn_substr($body, $body_len);
}
return '';
}
在模板中调用自定义函数
你可以在文章页模板中使用这个新函数了。
使用方法:
使用 {dede:field.function='你的函数名(参数)'/} 的格式来调用。
示例代码:
<div class="article-meta">
<p class="description">
{dede:field.description function='GetArtDescription(@me, 150)'/}...
</p>
</div>
代码解释:
function='GetArtDescription(@me, 150)':调用我们刚刚创建的GetArtDescription函数。@me:作为第一个参数,传入{dede:field.description/}的原始值(即后台填写的摘要)。150:作为第二个参数,如果摘要为空,则从正文截取150个字符。
优点:
- 功能极其灵活,可以任意处理描述内容。
- 代码复用性强,可以在任何地方调用这个函数。
缺点:
- 需要修改PHP文件,对新手有一定门槛。
- 如果修改了
extend.func.php文件,建议做好备份。
总结与推荐
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
{dede:field.description/} |
最简单、最标准、最推荐 | 依赖后台手动填写摘要 | 绝大多数情况编辑规范。 |
{dede:field.body function='...'/} |
自动生成,SEO友好 | 可能截断不完整,体验一般 | 后台编辑不积极,但SEO要求高的网站。 |
| 自定义函数 | 最灵活、功能最强 | 需要修改PHP文件,有技术门槛 | 对描述有特殊格式化要求,或需要复杂逻辑处理。 |
给你的建议:
- 首选方法一:直接使用
{dede:field.description/},这是最规范的做法,鼓励你在发布文章时认真填写摘要。 - 备选方案:如果担心编辑忘记填摘要,可以在模板里同时使用方法一和方法二,形成一个优雅的降级处理,先用方法一,如果为空则再用方法二。
{dede:field.description runphp='yes'} if(@me=='') @me = cn_substr(strip_tags(@me), 200); {/dede:field.description}(注意:这个内联PHP的写法比较老旧,推荐使用上面提到的自定义函数方法,更清晰。)
希望这些方法能帮到你!
