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

(图片来源网络,侵删)
核心要点
arclist的作用:主要用于循环输出文章列表、图片、日期、链接等)。- 的标签:调用文章内容通常使用
{dede:field.body/}或{dede:field.description/}。 - 如何结合:我们可以在
arclist标签内部使用{dede:field.body/},并通过innertext来控制最终输出的内容。
调用文章摘要(推荐,性能最佳)
这是最常用也是最推荐的方法,因为文章摘要(description 字段)是文章的副标题或简介,内容精炼,不会像全文那样造成页面臃肿和加载缓慢。
确保文章有摘要
在后台发布文章时,务必在“或“内容简介”字段中填写内容,如果没有填写,这里将显示为空。
使用 arclist 调用摘要
在模板文件中(通常是 index.htm 或 list_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 ...}: 调用文章列表标签。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。 仅建议在调用单篇文章详情时使用,而不是在列表页。
使用 innertext 和 body 字段
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 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 列表页内容调用的标准、高效且正确的做法,只有在非常特殊的需求下,才考虑使用方法二或三,并且一定要充分评估其对性能和用户体验的影响。
