使用 likearticle 标签 (最常用、最简单)
这是 DedeCMS 内置的专门用于调用相关文章的标签,使用起来非常方便,它的原理是通过当前文章的关键词(或你指定的关键词)进行模糊匹配。

(图片来源网络,侵删)
标签结构
{dede:likearticle row='10' titlelen='30'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:likearticle}
参数详解
row='10':调用文章的数量,10表示调用 10 篇,len='30'的长度,30` 表示最多显示 30 个字符(一个汉字算一个字符)。col='':分列,col='2'表示每行显示 2 篇。infolen=''简介长度。imgwidth=''和imgheight='':缩略图的宽度和高度。typeid='':(重要) 指定栏目 ID,如果你只想在某个特定栏目内查找相关文章,就设置这个参数,留空则全站查找。aid='':(核心) 指定文章 ID,如果不设置,默认是调用当前文章的相关内容,如果你想根据另一篇文章的关键词来查找,就设置aid='目标文章ID'。keyword='':(核心) 直接指定关键词,这是实现你需求最直接的方式,你可以在模板里手动输入一个关键词,系统会根据这个关键词查找相关文章。注意:如果同时设置了keyword和aid,keyword的优先级更高。
使用 arclistsg 标签 (更灵活、更强大)
arclistsg 是一个更通用的列表标签,功能比 likearticle 更强大,可以实现更复杂的条件查询,它也可以通过关键词来筛选文章。
标签结构
{dede:arclistsg row='10' titlelen='30' keyword='指定的关键词'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclistsg}
参数详解
除了 likearticle 的大部分参数外,arclistsg 还有一些独有的强大参数:
keyword='指定的关键词':核心参数,直接在这里填写你想要关联的关键词,多个关键词可以用英文逗号 隔开,表示“与”的关系。channelid='':指定模型 ID。channelid='1'只调用普通文章。orderby='':排序方式。orderby='hot'(按点击量),orderby='pubdate'(按发布时间)。subday='':指定多少天内的文章。subday='7'只调用最近 7 天发布的文章。
使用 SQL 查询标签 (最灵活、最复杂)
当 likearticle 和 arclistsg 无法满足你的复杂需求时(需要关联多个字段、进行复杂的排序等),你可以直接使用 DedeCMS 的 dede:sql 标签来执行自定义的 SQL 语句。
注意: 直接使用 SQL 有一定的风险,SQL 语句写错可能会导致网站出错,请确保你对 SQL 语句有一定了解。

(图片来源网络,侵删)
标签结构
{dede:sql sql="
SELECT a.*
FROM `dede_archives` a
LEFT JOIN `dede_taglist` t ON a.id = aid
WHERE t.tag like '%指定的关键词%'
ORDER BY a.pubdate DESC
LIMIT 0, 10
"}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:sql}
代码详解
- *`SELECT a.
**: 从dede_archives(文章主表) 中选择所有字段。a` 是表的别名,方便书写。 FROMdede_archivesa: 指定主表为dede_archives。LEFT JOINdede_taglistt ON a.id = aid: 左连接dede_taglist(标签列表表),通过文章 ID (a.id和t.aid) 关联,这样我们就可以通过标签表来筛选文章。WHERE t.tag like '%指定的关键词%': 核心筛选条件,在taglist表的tag字段中查找包含“指定的关键词”的记录。 是 SQL 中的通配符,表示任意字符。ORDER BY a.pubdate DESC: 按发布时间倒序排列。LIMIT 0, 10: 从第 0 条记录开始,查询 10 条,等同于row='10'。[field:arcurl/]和[field:title/]: 在dede:sql中,这些字段调用需要和主表dede_archives的字段名一致,id、title、typeid等,获取文章链接需要自己拼接,通常使用"/plus/view.php?aid={dede:field.id/}"。
实际应用场景示例
假设你的文章详情页是 article_article.htm,你想在文章下方显示与“织梦CMS”相关的 5 篇文章。
调用当前文章的相关内容 (最常见)
直接使用 likearticle,它会自动获取当前文章的关键词进行匹配。
<h3>相关文章</h3>
<ul class="related-list">
{dede:likearticle row='5' titlelen='42'}
<li><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></li>
{/dede:likearticle}
</ul>
根据一个固定的关键词调用相关内容
你想在所有文章的页脚都显示与“网站建设”相关的文章。
使用 arclistsg 标签,直接指定关键词。

(图片来源网络,侵删)
<h3>网站建设相关文章</h3>
<ul class="footer-related">
{dede:arclistsg row='6' titlelen='30' keyword='网站建设'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclistsg}
</ul>
根据不同文章显示不同相关内容
你在文章列表页,想在每篇文章旁边显示与该文章相关的其他文章。
你需要在列表循环中嵌套 likearticle 标签,并指定 aid。
{dede:list pagesize='10'}
<div class="list-item">
<h2><a href="[field:arcurl/]">[field:title/]</a></h2>
<p>[field:description/]...</p>
<!-- 在这里调用与当前文章相关的文章 -->
<div class="related-in-list">
<h4>相关阅读</h4>
{dede:likearticle row='3' titlelen='20' aid='[field:id]'}
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
{/dede:likearticle}
</div>
</div>
{/dede:list}
注意: 在列表循环中嵌套调用会增加数据库查询次数,如果列表条目多,可能会对网站性能产生一定影响。
总结与建议
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
likearticle |
简单、快捷、专用,专为相关文章设计。 | 灵活性相对较低,依赖关键词匹配质量。 | 绝大多数相关文章调用场景,尤其是在文章详情页。 |
arclistsg |
功能强大,可以结合多种条件(关键词、栏目、时间等)。 | 参数较多,需要花时间学习。 | 需要更复杂筛选条件的列表调用,标签云”下的文章列表。 |
dede:sql |
极度灵活,可以实现任何复杂的 SQL 查询逻辑。 | 有一定风险,对使用者的 SQL 知识有要求,代码可读性差。 | likearticle 和 arclistsg 无法解决的复杂查询需求。 |
对于你的需求——“dede 调用相关内容 指定关键词”,强烈推荐使用方法一 (likearticle 配合 keyword 参数) 或方法二 (arclistsg),它们既安全又高效,足以应对 99% 的情况。
