“关键词相关推荐”通常指的是在文章内容页,根据当前文章的关键词,自动推荐网站内其他包含相同或相似关键词的文章。

(图片来源网络,侵删)
实现这个功能主要有两种方法:
- 使用DedeCMS内置的
likearticle:这是最简单、最官方的方法,但灵活性相对较低。 - 使用第三方插件/模块:功能更强大,推荐更精准,但需要额外安装。
- 自定义修改代码(高级):可以实现完全个性化的推荐逻辑。
下面我们逐一讲解。
使用内置的 likearticle
这是最直接的方法,适用于大多数场景。likearticle 标签会根据当前文章的“关键词”字段来查找相关文章。
确保文章设置了关键词
这个方法的前提是你的文章必须填写了 字段,你可以在后台的文章模型中检查是否有关键词这个字段,并且在发布文章时务必填写。
(图片来源网络,侵删)
页模板中调用
你需要找到并修改文章内容页的模板文件,这个文件通常位于 /templets/default/article_article.htm (根据你的模板名称可能有所不同)。
- 打开模板文件:用FTP或服务器文件管理器打开
article_article.htm。
- 找到合适的位置:我们会把相关推荐放在文章内容的末尾、评论区的上方或下方。
- 插入
likearticle:在选定的位置,插入以下代码:
<h3>相关文章推荐</h3>
<ul class="related-list">
{dede:likearticle titlelen='42' row='8'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:likearticle}
</ul>
标签参数说明
likearticle 标签支持一些参数,你可以根据需要调整:
row='8':显示的相关文章数量,默认是10条,这里我们设置为8条。
titlelen='42'的显示长度,中文为42个字节(约21个汉字),避免标题过长影响排版。
typeid='0':限制推荐文章的栏目ID。0 表示不限制,推荐全站文章,如果你想只推荐同栏目下的文章,可以填写对应的栏目ID,typeid='1'。
innertext='':单条记录的HTML模板,上面的例子是默认的<li><a href="[field:arcurl/]">[field:title/]</a></li>,如果你想自定义样式,可以修改这个参数,{dede:likearticle row='8' typeid='0'
innertext='<li><span class="date">[field:pubdate function="MyDate('m-d', @me)"]</span><a href="[field:arcurl/]">[field:title/]</a></li>'}
{/dede:likearticle}
添加CSS样式(可选)
为了让推荐列表更美观,你可以在模板的CSS文件(如 /templets/default/style/dedecms.css)中添加一些样式。
/* 相关文章推荐样式 */
.related-list {
list-style: none;
padding: 0;
margin: 20px 0;
border-top: 1px solid #eee;
border-bottom: 1px solid #eee;
padding: 10px 0;
}
.related-list li {
padding: 8px 0;
border-bottom: 1px dashed #f0f0f0;
}
.related-list li:last-child {
border-bottom: none;
}
.related-list li a {
color: #333;
text-decoration: none;
transition: color 0.3s;
}
.related-list li a:hover {
color: #0066cc;
}
使用第三方插件/模块
内置的 likearticle 有一个明显的缺点:它只严格匹配关键词,如果一篇文章的关键词是“织梦,DedeCMS”,而另一篇是“DedeCMS教程”,它们就无法互相推荐,这会导致推荐结果不够丰富。
第三方插件通过更智能的算法(如分词、模糊匹配)来解决这个问题,推荐效果更好。
常见插件类型:
- 智能相关文章推荐插件:这类插件通常在后台有独立的设置界面,可以调整推荐规则、显示样式等,你可以在DedeCMS的官方论坛、插件市场或第三方资源网站(如织梦吧)搜索“相关文章推荐”来找到合适的插件。
- 标签云/关键词聚合插件:有些插件不仅可以在文章页推荐,还可以生成一个全站的关键词聚合页面,流量更大。
使用步骤(通用流程):
- 下载插件:从可信来源下载插件包,通常是ZIP格式。
- 上传安装:
- 将插件包解压。
- 将其中的
uploads 文件夹内的内容上传到你网站的 uploads 文件夹。
- 将
plus 文件夹内的文件上传到你网站的 plus 文件夹。
- 根据插件的
readme.txt 说明,可能需要执行SQL文件(在后台“系统” -> “SQL命令行工具”中运行)。
- 后台启用:登录DedeCMS后台,在“模块” -> “模块管理”或“插件管理”中找到新安装的插件,进行安装和启用。
- 调用标签:插件官方会提供专门的调用标签,你只需要像方法一一样,在模板文件中插入这个标签即可,标签的使用方法通常比内置的更灵活。
自定义修改代码(高级)
如果你对PHP和DedeCMS的底层逻辑比较熟悉,可以自己编写代码来实现更个性化的推荐,你可以结合 和 “栏目ID” 进行推荐,或者优先推荐点击量高的文章。
核心思路:
- 页模板中,通过PHP获取当前文章的关键词和ID。
- 使用DedeCMS的
GetOneArchive 或 dsql 查询,编写一个自定义的SQL语句,去 dede_archives 表中查找与当前文章关键词相关且ID不等于当前文章ID的文章。
- 循环输出查询结果。
示例代码(概念性,需根据实际情况调整):
<?php
// 1. 获取当前文章的关键词和ID
$keywords = $this->Fields('keywords');
$aid = $this->Fields('id');
// 2. 处理关键词,转换成SQL查询条件
// 关键词是 "织梦,DedeCMS",我们需要查询 "织梦" 或 "DedeCMS"
$keyword_array = explode(',', $keywords);
$like_query = '';
foreach ($keyword_array as $k) {
$k = trim($k);
if ($k) {
$like_query .= " OR keywords LIKE '%$k%'";
}
}
// 去掉开头的 " OR "
$like_query = ltrim($like_query, ' OR ');
// 3. 查询相关文章
if ($like_query) {
$query = "SELECT * FROM dede_archives WHERE ($like_query) AND id <> $aid ORDER BY click DESC LIMIT 0, 8";
$dsql->SetQuery($query);
$dsql->Execute();
// 4. 循环输出
echo '<h3>自定义相关文章推荐</h3>';
echo '<ul>';
while ($row = $dsql->GetArray()) {
$title = $row['title'];
$arcurl = GetOneArchive($row['id']);
echo "<li><a href='{$arcurl['arcurl']}'>{$title}</a></li>";
}
echo '</ul>';
}
?>
注意:自定义代码需要谨慎,错误的SQL查询可能导致网站出错,建议在本地测试无误后再部署到线上。
总结与建议
方法
优点
缺点
适用场景
内置 likearticle
无需插件,官方支持,稳定简单
算法简单,只严格匹配关键词,推荐结果可能较少
个人博客、内容量不大的网站,追求快速部署
第三方插件
推荐精准,算法智能,功能强大,样式可定制
需要额外安装,可能存在兼容性问题,安全风险需注意
商业网站、内容量大、对用户体验要求高的网站
自定义代码
灵活性极高,可定制任何推荐逻辑
需要技术能力,维护成本高,可能影响性能
有特殊需求,且具备开发能力的团队或个人
给新手的建议:
- 首选方法一:先使用内置的
likearticle 标签,这是最快、最安全的方式,只要坚持填写关键词,效果就不错。
- 关注关键词填写:无论使用哪种方法,高质量、相关的关键词都是推荐效果好坏的根本。
- 如果效果不佳:当你的网站内容丰富起来后,如果发现推荐结果不理想,再考虑寻找并安装一个可靠的第三方插件。
这是最直接的方法,适用于大多数场景。likearticle 标签会根据当前文章的“关键词”字段来查找相关文章。
确保文章设置了关键词
这个方法的前提是你的文章必须填写了 字段,你可以在后台的文章模型中检查是否有关键词这个字段,并且在发布文章时务必填写。

(图片来源网络,侵删)
页模板中调用
你需要找到并修改文章内容页的模板文件,这个文件通常位于 /templets/default/article_article.htm (根据你的模板名称可能有所不同)。
- 打开模板文件:用FTP或服务器文件管理器打开
article_article.htm。 - 找到合适的位置:我们会把相关推荐放在文章内容的末尾、评论区的上方或下方。
- 插入
likearticle:在选定的位置,插入以下代码:
<h3>相关文章推荐</h3>
<ul class="related-list">
{dede:likearticle titlelen='42' row='8'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:likearticle}
</ul>
标签参数说明
likearticle 标签支持一些参数,你可以根据需要调整:
row='8':显示的相关文章数量,默认是10条,这里我们设置为8条。titlelen='42'的显示长度,中文为42个字节(约21个汉字),避免标题过长影响排版。typeid='0':限制推荐文章的栏目ID。0表示不限制,推荐全站文章,如果你想只推荐同栏目下的文章,可以填写对应的栏目ID,typeid='1'。innertext='':单条记录的HTML模板,上面的例子是默认的<li><a href="[field:arcurl/]">[field:title/]</a></li>,如果你想自定义样式,可以修改这个参数,{dede:likearticle row='8' typeid='0' innertext='<li><span class="date">[field:pubdate function="MyDate('m-d', @me)"]</span><a href="[field:arcurl/]">[field:title/]</a></li>'} {/dede:likearticle}
添加CSS样式(可选)
为了让推荐列表更美观,你可以在模板的CSS文件(如 /templets/default/style/dedecms.css)中添加一些样式。
/* 相关文章推荐样式 */
.related-list {
list-style: none;
padding: 0;
margin: 20px 0;
border-top: 1px solid #eee;
border-bottom: 1px solid #eee;
padding: 10px 0;
}
.related-list li {
padding: 8px 0;
border-bottom: 1px dashed #f0f0f0;
}
.related-list li:last-child {
border-bottom: none;
}
.related-list li a {
color: #333;
text-decoration: none;
transition: color 0.3s;
}
.related-list li a:hover {
color: #0066cc;
}
使用第三方插件/模块
内置的 likearticle 有一个明显的缺点:它只严格匹配关键词,如果一篇文章的关键词是“织梦,DedeCMS”,而另一篇是“DedeCMS教程”,它们就无法互相推荐,这会导致推荐结果不够丰富。
第三方插件通过更智能的算法(如分词、模糊匹配)来解决这个问题,推荐效果更好。
常见插件类型:
- 智能相关文章推荐插件:这类插件通常在后台有独立的设置界面,可以调整推荐规则、显示样式等,你可以在DedeCMS的官方论坛、插件市场或第三方资源网站(如织梦吧)搜索“相关文章推荐”来找到合适的插件。
- 标签云/关键词聚合插件:有些插件不仅可以在文章页推荐,还可以生成一个全站的关键词聚合页面,流量更大。
使用步骤(通用流程):
- 下载插件:从可信来源下载插件包,通常是ZIP格式。
- 上传安装:
- 将插件包解压。
- 将其中的
uploads文件夹内的内容上传到你网站的uploads文件夹。 - 将
plus文件夹内的文件上传到你网站的plus文件夹。 - 根据插件的
readme.txt说明,可能需要执行SQL文件(在后台“系统” -> “SQL命令行工具”中运行)。
- 后台启用:登录DedeCMS后台,在“模块” -> “模块管理”或“插件管理”中找到新安装的插件,进行安装和启用。
- 调用标签:插件官方会提供专门的调用标签,你只需要像方法一一样,在模板文件中插入这个标签即可,标签的使用方法通常比内置的更灵活。
自定义修改代码(高级)
如果你对PHP和DedeCMS的底层逻辑比较熟悉,可以自己编写代码来实现更个性化的推荐,你可以结合 和 “栏目ID” 进行推荐,或者优先推荐点击量高的文章。
核心思路:
- 页模板中,通过PHP获取当前文章的关键词和ID。
- 使用DedeCMS的
GetOneArchive或dsql查询,编写一个自定义的SQL语句,去dede_archives表中查找与当前文章关键词相关且ID不等于当前文章ID的文章。 - 循环输出查询结果。
示例代码(概念性,需根据实际情况调整):
<?php
// 1. 获取当前文章的关键词和ID
$keywords = $this->Fields('keywords');
$aid = $this->Fields('id');
// 2. 处理关键词,转换成SQL查询条件
// 关键词是 "织梦,DedeCMS",我们需要查询 "织梦" 或 "DedeCMS"
$keyword_array = explode(',', $keywords);
$like_query = '';
foreach ($keyword_array as $k) {
$k = trim($k);
if ($k) {
$like_query .= " OR keywords LIKE '%$k%'";
}
}
// 去掉开头的 " OR "
$like_query = ltrim($like_query, ' OR ');
// 3. 查询相关文章
if ($like_query) {
$query = "SELECT * FROM dede_archives WHERE ($like_query) AND id <> $aid ORDER BY click DESC LIMIT 0, 8";
$dsql->SetQuery($query);
$dsql->Execute();
// 4. 循环输出
echo '<h3>自定义相关文章推荐</h3>';
echo '<ul>';
while ($row = $dsql->GetArray()) {
$title = $row['title'];
$arcurl = GetOneArchive($row['id']);
echo "<li><a href='{$arcurl['arcurl']}'>{$title}</a></li>";
}
echo '</ul>';
}
?>
注意:自定义代码需要谨慎,错误的SQL查询可能导致网站出错,建议在本地测试无误后再部署到线上。
总结与建议
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
内置 likearticle |
无需插件,官方支持,稳定简单 | 算法简单,只严格匹配关键词,推荐结果可能较少 | 个人博客、内容量不大的网站,追求快速部署 |
| 第三方插件 | 推荐精准,算法智能,功能强大,样式可定制 | 需要额外安装,可能存在兼容性问题,安全风险需注意 | 商业网站、内容量大、对用户体验要求高的网站 |
| 自定义代码 | 灵活性极高,可定制任何推荐逻辑 | 需要技术能力,维护成本高,可能影响性能 | 有特殊需求,且具备开发能力的团队或个人 |
给新手的建议:
- 首选方法一:先使用内置的
likearticle标签,这是最快、最安全的方式,只要坚持填写关键词,效果就不错。 - 关注关键词填写:无论使用哪种方法,高质量、相关的关键词都是推荐效果好坏的根本。
- 如果效果不佳:当你的网站内容丰富起来后,如果发现推荐结果不理想,再考虑寻找并安装一个可靠的第三方插件。
