使用内置的 {dede:likearticle} 标签(最简单)
这是织梦官方提供的最直接、最简单的方法,无需修改任何代码,直接在模板中使用即可。

标签基本用法
{dede:likearticle}
<a href='[field:arcurl/]'>[field:title/]</a>
{/dede:likearticle}
标签常用属性
你可以通过添加属性来控制相关文章的显示方式。
| 属性名 | 说明 | 示例 |
|---|---|---|
row |
调用文章的数量 | row='10' (默认10条) |
col |
每行显示的列数 | col='2' (默认1列) |
infolen |
简介/摘要长度 | infolen='100' (截取100个字符) |
orderby |
排序方式 | orderby='pubdate' (按发布时间排序,默认)orderby='hot' (按点击量排序)orderby='rand' (随机排序) |
idlist |
指定文章ID列表,用于获取指定ID文章的相关文章 | idlist='10,22,35' |
keyword |
指定关键词,获取与当前文章关键词相同的相关文章 | keyword='' (留空则自动获取当前文章的关键词) |
typeid |
指定栏目ID,只获取该栏目下的相关文章 | typeid='5' |
channelid |
指定模型ID,只获取该模型下的相关文章 | channelid='1' (文章模型) |
综合示例
假设我们要在文章内容页(article_article.htm)调用10条相关文章,按点击量排序,标题显示30个字符,并加上列表样式。
<h3>相关文章</h3>
<ul class="related-list">
{dede:likearticle row='10' orderby='hot' titlelen='30'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<span class="view-count">([field:click/])</span>
</li>
{/dede:likearticle}
</ul>
CSS样式参考:
.related-list {
list-style: none;
padding: 0;
}
.related-list li {
margin-bottom: 8px;
line-height: 1.5;
}
.related-list a {
color: #333;
text-decoration: none;
}
.related-list a:hover {
color: #0066cc;
text-decoration: underline;
}
.view-count {
color: #999;
font-size: 12px;
margin-left: 5px;
}
通过关键词匹配(更精准)
{dede:likearticle} 默认是按关键词匹配的,但如果你想更明确地控制,可以手动指定关键词。

场景
当前文章的关键词是“织梦,DedeCMS,教程”,你想获取包含这些关键词的文章。
实现方式
获取当前文章关键词:
在调用标签前,先用 {dede:field} 标签获取当前文章的关键词。
传递给 likearticle
将获取到的关键词通过 keyword 属性传递进去。
<h3>你可能还喜欢</h3>
<div class="related-box">
{dede:field name='keywords' runphp='yes'}
// 如果关键词不为空
if(@me != '') {
// 去掉关键词两端的空格,并替换中文逗号为英文逗号
@me = str_replace(',', ',', trim(@me));
}
{/dede:field}
{dede:likearticle keyword='[field:keywords/]' row='8' titlelen='40'}
<div class="related-item">
<a href="[field:arcurl/]">
<img src="[field:litpic/]" alt="[field:title/]">
<p>[field:title/]</p>
</a>
</div>
{/dede:likearticle}
</div>
注意:

- 这种方法依赖于文章是否正确填写了关键词。
- 如果关键词为空,则不会调用出任何文章。
使用自定义SQL查询(最灵活)
当内置标签无法满足复杂需求时(需要同时匹配关键词和指定栏目,或者需要关联多个表),你可以使用自定义SQL。
场景
调用与当前文章同栏目且关键词相同的相关文章,但排除当前文章本身。
实现方式
在需要调用的位置,使用 代码解释: 给新手的建议: 希望这些详细的说明能帮助你在织梦5.7中完美地调用出相关文章!{dede:sql}
<h3>同栏目相关文章</h3>
<ul>
{dede:sql sql="
SELECT id, title, arcurl
FROM `dede_archives`
WHERE
typeid = '[field:id/]' -- 当前文章的栏目ID
AND id != '[field:id/]' -- 排除当前文章
AND keywords LIKE '%[field:keywords/]%' -- 匹配关键词
AND arcrank > -1 -- 只显示已审核的文章
ORDER BY click DESC
LIMIT 0, 10 -- 调用10条
"}
<li>
<a href='[field:arcurl/]' title='[field:title/]'>[field:title/]</a>
</li>
{/dede:sql}
</ul>
SELECT id, title, arcurl FROM dede_archives: 从文章主表查询所需字段。typeid = '[field:id/]': 获取当前文章的栏目ID(通过 [field:id/])。id != '[field:id/]': 非常重要,防止调用出当前文章本身。keywords LIKE '%[field:keywords/%': 使用 LIKE 和 进行模糊匹配关键词。arcrank > -1: 这是一个织梦常用的条件,arcrank 为 -1 表示未审核,大于等于 0 表示已审核,这样可以确保只显示已发布的文章。ORDER BY click DESC: 按点击量降序排列。LIMIT 0, 10: 限制返回结果从第0条开始,共10条。
总结与建议
方法
优点
缺点
适用场景
{dede:likearticle}简单、快速、官方支持
灵活性较低,匹配规则可能不够精准
大多数常规需求,快速实现相关文章功能
关键词传递
精准度比默认高,可控性强
依赖关键词的正确填写
对相关文章精准度有一定要求的场景
自定义SQL
极度灵活,功能强大
需要一定的SQL基础,代码稍复杂
需要复杂条件筛选、跨表查询等高级需求
{dede:likearticle}),它能满足80%以上的需求,且最简单。
