核心标签:{dede:likearticle}
这个标签是调用相关文章的核心,它可以根据当前文章的标题、关键词、栏目等信息,查找并返回内容相似的文章列表。

(图片来源网络,侵删)
基础语法
{dede:likearticle}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:likearticle}
主要参数说明
你可以通过为 {dede:likearticle} 添加参数来精确控制调用结果。
| 参数 | 说明 | 示例 |
|---|---|---|
row |
调用文章的数量,默认为 10。 |
row='5' (调用5篇) |
col |
每行显示的列数,默认为 1。 |
col='2' (每行2篇,会自动换行) |
infolen |
摘要显示的字数长度,默认为 160。 |
infolen='50' (摘要最多显示50个字符) |
orderby |
排序方式,可选值:rand (随机)、click (按点击量)、pubdate (按发布日期),默认为 rand。 |
orderby='click' (按点击量从高到低) |
idlist |
(重要) 指定文章ID列表来调用,用逗号隔开,当此参数存在时,其他所有相关条件(如关键词、栏目)都将失效。 | idlist='1,3,5,8' |
channelid |
指定频道ID来调用,默认为当前文章所在的频道。 | channelid='1' (调用文章频道) |
typeid |
(重要) 指定栏目ID来调用,如果指定了此参数,则只调用该栏目下的相关文章。 | typeid='5' |
keyword |
(重要) 指定关键词来调用,如果指定了此参数,则只包含该关键词的文章。 | keyword='织梦,DedeCMS' |
addfields |
(重要) 调用附加表里的字段,如果你想调用文章的“文章来源”(source)字段,就需要加上这个参数。 | addfields='source,writer' |
subday |
调用指定天数内发布的相关文章。 | subday='30' (调用30天内发布的文章) |
noflag |
排除带有特定标志的文章,排除“头条”文章。 | noflag='h' |
limit |
(高级用法) 用于分页,格式为 "起始位置,记录数"。limit='0,5' 表示从第0篇开始,取5篇。 |
limit='0,5' |
常用场景代码示例
场景1:最基础的相关文章调用(按标题和关键词)
这是最常见的情况,在文章内容页底部显示几篇相关文章。
<h3>相关文章</h3>
<ul class="related-article-list">
{dede:likearticle row='5' titlelen='20'}
<li><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></li>
{/dede:likearticle}
</ul>
效果: 调用5篇相关文章,标题最多显示20个字符。
场景2:带摘要和发布日期的相关文章
为了让用户更了解文章内容,可以显示摘要和日期。

(图片来源网络,侵删)
<h3>猜你喜欢</h3>
<div class="like-container">
{dede:likearticle row='4' titlelen='30' infolen='100' orderby='click'}
<div class="like-item">
<a href="[field:arcurl/]" class="like-title">[field:title/]</a>
<p class="like-summary">[field:info/]...</p>
<span class="like-date">[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</div>
{/dede:likearticle}
</div>
说明:
infolen='100':设置摘要长度为100字符。orderby='click':按点击量排序,优先显示热门文章。[field:pubdate function="MyDate('Y-m-d', @me)"/]:使用函数格式化日期,@me代表当前字段的原始值。
场景3:调用指定栏目下的相关文章
我们只想在当前栏目内查找相关文章,而不是全站,这时就用 typeid 参数。
<h3>本栏目相关文章</h3>
<ul>
{dede:likearticle row='6' typeid=''}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:likearticle}
</ul>
重要提示:
typeid=''中的 是一个空值,它代表当前文章所在的栏目ID,DedeCMS会自动识别并替换。- 如果你指定了具体的ID,如
typeid='5',那么它就只会调用ID为5的栏目下的文章。
场景4:调用带有附加字段的相关文章
如果你的文章模型增加了“文章来源”、“作者”、“产品型号”等附加字段,需要使用 addfields 参数来调用。

(图片来源网络,侵删)
假设你的附加表里有 source (来源) 和 writer (作者) 字段。
<h3>相关推荐</h3>
<ul>
{dede:likearticle row='3' addfields='source,writer'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>来源:[field:source/]</span>
<span>作者:[field:writer/]</span>
</li>
{/dede:likearticle}
</ul>
说明:
addfields='source,writer'告诉系统需要从附加表中取出这两个字段的值。[field:source/]和[field:writer/]就像调用普通字段一样使用。
场景5:排除当前文章,避免重复显示
默认情况下,相关文章列表中可能会包含当前文章本身,我们可以通过 idlist 参数巧妙地排除它。
页模板(通常是 article_article.htm)中,可以通过 {dede:field.id/} 获取当前文章的ID。
<h3>相关文章</h3>
<ul>
{dede:likearticle row='5' idlist=''}
<li><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></li>
{/dede:likearticle}
</ul>
说明:
idlist=''同样是一个特殊用法,在文章内容页模板中,它会自动获取除当前文章ID之外的相关文章。- 如果你想手动排除某几篇文章,可以写成
idlist='10,20',系统会调用除了ID为10和20之外的相关文章。
注意事项与排错
- 标签位置:
{dede:likearticle}标签必须放在文章内容页模板(如article_article.htm)中,因为它依赖于{dede:field.id/}等当前文章的环境变量。 - 数据更新:相关文章的索引是在文章发布或更新时生成的,如果你修改了文章的关键词或标题,相关文章列表可能不会立即更新,可以尝试在后台“更新系统缓存”或“一键更新网站”来刷新索引。
- 没有相关文章:如果调用结果为空,可能是因为:
- 当前文章没有设置关键词。
- 系统内没有其他文章与当前文章的关键词或标题匹配。
typeid或idlist参数设置得太严格,导致没有符合条件的文章。
- 样式问题:标签只负责输出数据,列表的最终样式(如CSS布局)需要你自己编写。
希望这份详细的指南能帮助你完美地在 DedeCMS 5.7 中调用相关文章!
