最简单的方法(基于当前文章的栏目ID)
这是最基础也是最常用的一种方法,它调用的是与当前文章在同一栏目下的其他文章。

(图片来源网络,侵删)
适用场景:简单博客、新闻列表等,对相关性要求不高的场景。
调用代码:
{dede:likearticle col='1' row='10' titlelen='42'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:likearticle}
代码详解:
{dede:likearticle}: 这是织梦调用相关文章的标签。col='1': 这是关键参数。col代表栏目ID。col='1'表示调用当前文章所在栏目的文章,如果你想调用指定ID栏目的文章,直接修改数字即可,col='5'。row='10': 表示调用文章的数量,这里是10篇,len='42'`: 表示文章标题的长度,最多显示42个字符(一个汉字算2个字符,一个字母算1个字符)。[field:arcurl/]: 文章的链接地址。[field:title/]: 文章的标题。
完整示例(在文章内容页 article_article.htm 中使用):

(图片来源网络,侵删)
<div class="related-article">
<h3>相关文章</h3>
<ul>
{dede:likearticle col='1' row='8' titlelen='30'}
<li><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></li>
{/dede:likearticle}
</ul>
</div>
更智能的方法(基于关键词)
这种方法比方法一更智能,它会提取当前文章的,然后在整个网站中查找包含这些关键词的文章,从而实现真正意义上的“相关”。
适用场景:对文章关联性要求较高的网站,如知识库、教程站等。
实现步骤:
- 确保文章有关键词:在后台发布文章时,务必在“关键词”一栏填写相关的关键词,多个关键词用英文逗号隔开。
- 使用
keyword参数:在调用标签中使用keyword参数。
调用代码:

(图片来源网络,侵删)
{dede:likearticle keyword='是' row='10' titlelen='42'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:likearticle}
代码详解:
keyword='是': 这个参数会获取当前文章的,然后在整个文章库中进行模糊匹配,这里的'是'只是一个占位符,织梦会自动替换为当前文章的实际关键词。row和titlelen参数与第一种方法相同。
完整示例:
<div class="related-article">
<h3>您可能感兴趣</h3>
<ul>
{dede:likearticle keyword='是' row='6' titlelen='28'}
<li><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></li>
{/dede:likearticle}
</ul>
</div>
注意:这种方法比 col 方法消耗更多的服务器资源,因为需要进行全文搜索,如果网站文章量非常大,可能会导致页面加载变慢。
排除当前文章的方法
无论使用方法一还是方法二,默认情况下,当前文章本身也会被包含在相关文章列表中,这通常是我们不希望看到的,我们可以使用 idlist 参数来排除它。
实现步骤:
- 获取当前文章的ID,在织梦的文章内容页,可以使用全局变量
$arcid来获取。 - 在
likearticle标签中使用idlist参数,并将当前文章ID作为排除项。
调用代码:
{dede:likearticle col='1' row='10' titlelen='42' idlist='-$arcid'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:likearticle}
代码详解:
idlist='-$arcid': 这是实现排除的核心。$arcid是当前文章的ID。- 在
idlist参数中,在ID前面加上负号 ,表示排除该ID的文章。 idlist='-$arcid'的意思就是“排除当前文章ID,并调用其他符合条件的文章”。
完整示例(结合方法一和方法三):
<div class="related-article">
<h3>相关文章</h3>
<ul>
{dede:likearticle col='1' row='8' titlelen='30' idlist='-$arcid'}
<li><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></li>
{/dede:likearticle}
</ul>
</div>
混合方法(推荐,最强大)
这是最推荐的方法,它结合了栏目优先和关键词辅助的原则,使得相关文章的相关性最高。
逻辑是:
- 优先调用:优先调用与当前文章同栏目且包含关键词的文章。
- 如果数量不足:如果第一步调用的文章数量不够
row指定的数量,再在整个网站中查找仅包含关键词的文章来补足。
调用代码:
{dede:likearticle col='1' keyword='是' row='10' titlelen='42' idlist='-$arcid'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:likearticle}
代码详解:
- 这个标签同时包含了
col='1'和keyword='是'。 - 织梦的底层逻辑会自动处理这种组合,实现上述的“混合匹配”策略,从而获得最佳的相关性。
- 我们依然保留了
idlist='-$arcid'来排除当前文章。
总结与最佳实践
| 方法 | 核心参数 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|---|
| 按栏目 | col='1' |
速度快,资源消耗低,逻辑简单 | 相关性一般,可能不精准 | 简单列表、新闻站 |
| 按关键词 | keyword='是' |
相关性高,智能 | 速度慢,资源消耗大 | 知识库、教程站 |
| 排除当前 | idlist='-$arcid' |
用户体验好,避免重复 | 需配合其他方法使用 | 必须配合使用 |
| 混合法 | col='1' keyword='是' |
相关性最高,效果最好 | 资源消耗介于方法一和方法二之间 | 绝大多数场景下的首选 |
最终推荐代码(可以直接复制使用):
将以下代码放置在您的文章模板文件 article_article.htm 的适当位置(例如文章内容下方)。
<!-- 相关文章开始 -->
<div class="related-posts">
<h3 class="related-title">相关文章</h3>
<ul class="related-list">
{dede:likearticle col='1' keyword='是' row='8' titlelen='30' idlist='-$arcid'}
<li>
<a href="[field:arcurl/]" title="[field:title function='htmlspecialchars(@me)'/]">[field:title/]</a>
</li>
{/dede:likearticle}
<!-- 可选:如果相关文章列表为空,显示提示信息 -->
{dede:if empty=''}
<li>暂无相关文章。</li>
{/dede:if}
</ul>
</div>
<!-- 相关文章结束 -->
额外提示:
- CSS样式:为了让相关文章更美观,您需要为
.related-posts,.related-title,.related-list,li等元素添加CSS样式。 - 无结果处理:上面的代码中加入了
{dede:if empty=''}标签,当没有找到相关文章时,会显示“暂无相关文章”,这是一种良好的用户体验设计。 - 函数修饰:在
title属性中,我使用了function='htmlspecialchars(@me)',这可以确保标题中的特殊字符(如 )被正确转义,符合HTML规范,防止XSS攻击,这是一个好习惯。
