dede arclist如何调用文章内容?

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

下面我将为你详细解释如何实现,并提供不同场景下的解决方案。

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

核心要点

  1. arclist 的作用:主要用于循环输出文章列表、图片、日期、链接等)。
  2. 的标签:调用文章内容通常使用 {dede:field.body/}{dede:field.description/}
  3. 如何结合:我们可以在 arclist 标签内部使用 {dede:field.body/},并通过 innertext 来控制最终输出的内容。

调用文章摘要(推荐,性能最佳)

这是最常用也是最推荐的方法,因为文章摘要(description 字段)是文章的副标题或简介,内容精炼,不会像全文那样造成页面臃肿和加载缓慢。

确保文章有摘要

在后台发布文章时,务必在“或“内容简介”字段中填写内容,如果没有填写,这里将显示为空。

使用 arclist 调用摘要

在模板文件中(通常是 index.htmlist_article.htm),使用以下代码:

{dede:arclist row='10' titlelen='50' orderby='pubdate'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <p>[field:description function='cn_substr(@me, 100)'/]</p>
    </li>
{/dede:arclist}

代码解析:

dede arclist 调用文章内容
(图片来源网络,侵删)
  • {dede:arclist ...}: 调用文章列表标签。
    • row='10': 调用 10 篇文章。
    • titlelen='50': 标题长度限制为 50 个字符。
    • orderby='pubdate': 按发布时间降序排列。
  • [field:arcurl/]: 文章链接。
  • [field:title/]: 文章标题。
  • [field:description function='cn_substr(@me, 100)'/]: 这是核心
    • [field:description/]: 调用文章摘要字段的值。
    • function='cn_substr(@me, 100)': 对摘要内容进行处理。cn_substr 是 DedeCMS 的一个函数,用于截取中文字符串。@me 代表当前字段的原始值,100 表示截取 100 个字符,这样可以避免摘要过长,破坏页面布局。

调用文章内容全文(不推荐,需谨慎)

在某些特殊布局下,你可能需要调用文章的全文内容。请务必注意,这种方法会严重影响页面加载速度,并可能导致内容重复,不利于 SEO。 仅建议在调用单篇文章详情时使用,而不是在列表页。

使用 innertextbody 字段

arclist 有一个强大的属性 innertext,它可以包裹整个循环体,并允许你在其中使用底层字段。

{dede:arclist row='5' orderby='pubdate' typeid='1'}
    <div class="article-content">
        <h2><a href="[field:arcurl/]">[field:title/]</a></h2>
        [field:body/]
    </div>
{/dede:arclist}

代码解析:

  • [field:body/]: 这个标签直接调用文章的 body 字段,即文章的完整内容。
  • 性能问题arclist 循环 5 次,就意味着要从数据库中读取 5 篇文章的完整 HTML 内容,然后拼接在一起输出,如果文章很长或数量稍多,页面会变得非常巨大,加载速度极慢。
  • 样式问题[field:body/] 会包含文章的原始格式(<p>, <img>, <h3> 等),可能会破坏你当前列表页的 CSS 样式。

优化:调用全文并截取(折中方案)

如果确实需要调用一部分正文内容,而不是摘要,可以截取 body 字段的开头部分。

dede arclist 调用文章内容
(图片来源网络,侵删)
{dede:arclist row='5' orderby='pubdate' typeid='1'}
    <div class="article-summary">
        <h2><a href="[field:arcurl/]">[field:title/]</a></h2>
        [field:body function='cn_substr(@me, 300)'/]
        <a href="[field:arcurl/]">[阅读全文]</a>
    </div>
{/dede:arclist}

代码解析:

  • [field:body function='cn_substr(@me, 300)'/]: 调用文章全文,并用 cn_substr 函数截取前 300 个字符。
  • 这种方法比直接调用全文要好,但依然不如直接使用摘要字段 [field:description/] 高效,因为它每次都要处理可能很长的 body

调用自定义字段内容(最灵活)

如果你的文章内容存储在一个自定义字段中(mycontent),调用方法也是一样的。

{dede:arclist row='5' orderby='pubdate'}
    <div>
        <h2>[field:title/]</h2>
        <!-- 调用名为 mycontent 的自定义字段 -->
        [field:mycontent/]
    </div>
{/dede:arclist}

总结与最佳实践

场景 推荐方法 代码示例 优点 缺点
列表页显示简介 调用摘要 [field:description function='cn_substr(@me, 100)'/] 性能最佳精炼,符合 SEO 需要手动填写摘要
列表页显示全文 不推荐 [field:body/] 内容完整 性能极差,页面臃肿,样式错乱
列表页显示部分正文 折中方案 [field:body function='cn_substr(@me, 300)'/] 灵活,无需摘要 性能不如摘要,可能截断 HTML 标签
单篇文章详情页 使用 {dede:field.body/} 在文章详情模板中使用 正确用法 -

最终建议:

在绝大多数情况下,请使用方法一,即调用 [field:description/ 并配合 cn_substr 函数进行截取。 这是 DedeCMS 列表页内容调用的标准、高效且正确的做法,只有在非常特殊的需求下,才考虑使用方法二或三,并且一定要充分评估其对性能和用户体验的影响。

-- 展开阅读全文 --
头像
全国计算机二级C语言笔试考什么?
« 上一篇 12-06
全国计算机二级C语言上机题库怎么用?
下一篇 » 12-06
取消
微信二维码
支付宝二维码