页如何调用文章描述?

99ANYc3cd6
预计阅读时长 13 分钟
位置: 首页 DEDE建站 正文

使用系统自带标签(最推荐、最常用)

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

dede内容页调用文章描述
(图片来源网络,侵删)

使用 {dede:field.description/}

这是最直接、最常用的方法,它会直接调用文章在后台“内容模型”中设置的“或“描述”。

使用方法:页模板文件(通常是 /templets/default/article_article.htm)中,将 {dede:field.description/} 标签插入到你想要显示描述的位置。

示例代码:

<div class="article-meta">
    <p class="description">{dede:field.description/}</p>
</div>

优点:

dede内容页调用文章描述
(图片来源网络,侵删)
  • 简单直接,无需额外配置。
  • 由DedeCMS官方支持,稳定可靠。

注意事项:

  • 这个标签调用的是你在发布文章时,编辑器下方“输入框里填写的内容,如果那里没有填写,那么这里就不会显示任何内容。
  • 默认情况下,如果描述为空,标签也不会渲染任何东西,不会留下空白。

使用 {dede:field.body function='cn_substr(@me, 200)'/} 标签(自动截取)

如果你没有填写文章摘要,但又希望自动从文章正文中提取一部分作为描述,可以使用这个方法。

使用方法: 这个标签通过 function 参数调用PHP的 cn_substr 函数来截取文章正文(field.body)的前200个字符。

示例代码:

dede内容页调用文章描述
(图片来源网络,侵删)
<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扩展功能的标准做法。

步骤:

  1. 用FTP或文件管理器打开你的网站根目录下的 /include/extend.func.php 文件。
  2. 在文件末尾添加以下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文件,有技术门槛 对描述有特殊格式化要求,或需要复杂逻辑处理。

给你的建议:

  1. 首选方法一:直接使用 {dede:field.description/},这是最规范的做法,鼓励你在发布文章时认真填写摘要。
  2. 备选方案:如果担心编辑忘记填摘要,可以在模板里同时使用方法一和方法二,形成一个优雅的降级处理,先用方法一,如果为空则再用方法二。
    {dede:field.description runphp='yes'}
        if(@me=='') @me = cn_substr(strip_tags(@me), 200);
    {/dede:field.description}

    (注意:这个内联PHP的写法比较老旧,推荐使用上面提到的自定义函数方法,更清晰。)

希望这些方法能帮到你!

-- 展开阅读全文 --
头像
c语言程序设计学习指导 答案是否为官方配套答案?
« 上一篇 02-13
PIC单片机C语言如何快速入门?
下一篇 » 02-13
取消
微信二维码
支付宝二维码