dede文章摘要长度如何设置?

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

在 DedeCMS 中,文章摘要的长度通常不是直接在一个全局设置里定义的,而是通过调用标签的参数来控制的,也就是说,你在哪个地方(首页、列表页、内容页)调用摘要,就在那个标签里指定长度。

下面我将分三种情况,从最常用到最特殊,为你详细说明如何设置摘要长度。


在列表页或首页调用文章摘要(最常用)

这是最常见的需求,比如在首页的“最新文章”或“热门文章”模块,以及列表页中,每篇文章旁边都显示一段摘要。

核心标签: {dede:arclist}

关键属性: description

{dede:arclist} 标签有一个 description 属性,用于控制摘要的长度,它有两种取值方式:

  1. description='len':显示由 len 指定的固定长度的字符数。
  2. description='all' 显示文章在后台设置的“字段中的全部内容。

示例:

场景: 在首页调用最新10篇文章,并显示摘要,摘要长度限制为100个汉字。

{dede:arclist titlelen='32' row='10' description='100'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <p>[field:description/]...</p>
    </li>
{/dede:arclist}

代码解析: len='32'`:标题长度限制为32个字节(一个汉字算2个字节,一个英文算1个字节)。

  • row='10':调用10篇文章。
  • description='100'这是关键,它告诉系统从文章正文中截取前100个字符作为摘要,这里的100指的是字符数,不是汉字数。
  • [field:description/]:调用摘要内容。
  • 在摘要末尾加上省略号,是常见的做法。

页调用摘要

页(article_article.htm),你可能想在文章标题下方显示一段固定的摘要。

核心标签: {dede:field name='description'}

这个标签直接调用文章在后台编辑时填写的“字段,它的长度取决于你在后台填写了多少内容。

如何控制长度?

这里同样需要一个技巧,因为 field:description 本身不带长度参数,我们需要结合PHP的 substr 函数来截取。

示例:

场景: 在文章内容页,显示从后台摘要字段中截取的前80个字符。

<div class="summary">
    <strong></strong>
    {dede:field name='description' function='substr(@me,0,80)'/}...
</div>

代码解析:

  • {dede:field name='description'}:获取后台的摘要内容。
  • function='substr(@me,0,80)':这是一个功能强大的用法。
    • @me:代表当前字段的值,也就是 field:description 的内容。
    • substr():是PHP的字符串截取函数。
    • substr(@me, 0, 80):表示从 @me 的第0个位置开始,截取80个字符。
  • 同样,在末尾手动添加省略号。

从文章正文中自动提取摘要(高级用法)

你可能希望摘要不是手动填写的,也不是从正文中简单截取,而是更智能地提取,比如提取正文的前200个字符,并且去除HTML标签。

核心标签: {dede:field name='body'}

实现方法:

通过 function 属性结合PHP函数来实现。

示例:

场景: 在列表页调用摘要,但摘要不是来自 description 字段,而是来自文章正文 body,并截取前150个非HTML标签的字符。

{dede:arclist row='5'}
    <h2><a href="[field:arcurl/]">[field:title/]</a></h2>
    <div class="abstract">
        [field:body function='strip_tags(@me)'/]...
    </div>
    <a href="[field:arcurl/]">阅读全文</a>
{/dede:arclist}

代码解析:

  • [field:body function='strip_tags(@me)'/]
    • field:body:获取文章的正文内容。
    • strip_tags(@me)strip_tags() 是PHP的内置函数,作用是去除字符串中的所有HTML和PHP标签@me 同样代表当前字段的值(即文章正文)。
    • 这个组合的效果是:先获取正文,然后去掉所有标签(<p><img> 等),只留下纯文本内容,DedeCMS的默认行为会截取一部分(通常是120个字符)来显示。

如果你想精确控制从正文中提取的长度,可以这样做:

[field:body function='cn_substr(strip_tags(@me), 200)'/]...

代码解析:

  • cn_substr():这是 DedeCMS 自定义的一个非常实用的函数。
    • 它可以正确处理中英文混合的字符串截断,一个汉字算一个字符,一个英文也算一个字符,不会出现半个汉字乱码的问题。
    • cn_substr(字符串, 长度)
  • strip_tags(@me):先去除HTML标签。
  • cn_substr(strip_tags(@me), 200):然后对纯文本内容截取前200个字符。

总结与最佳实践

需求场景 推荐标签 关键属性/方法 说明
列表页/首页调用摘要 {dede:arclist} description='100' 从文章正文中截取指定字符数作为摘要,最常用。

给你的建议:

  1. 养成好习惯: 在后台发布文章时,务必手动填写“,这样做的好处是,摘要内容可以由你精心编辑,更准确地概括文章,有利于SEO和用户体验。
  2. 统一调用方式: 尽量在你的网站中统一摘要的调用方式,约定所有列表页都使用 {dede:arclist description='150'} 来调用150字符的摘要。
  3. 使用 cn_substr 如果需要从正文提取,优先使用 cn_substr 函数,它能更好地处理中文,避免乱码问题。

希望这份详细的解释能帮助你完全掌握 DedeCMS 文章摘要长度的设置!

-- 展开阅读全文 --
头像
dede标签 加入变量
« 上一篇 03-21
谭浩强C语言程序设计哪里能下载?
下一篇 » 03-21

相关文章

取消
微信二维码
支付宝二维码

目录[+]