核心思路
调用相关产品的核心逻辑是:根据当前内容的某个“特征”去数据库中查找其他具有相同特征的内容,这个“特征”通常是:

(图片来源网络,侵删)
- 栏目ID(Channel ID):最常用、最简单的方法,调用与当前内容属于同一栏目的其他产品。
- 关键词(Keywords):更智能的方法,提取当前内容的关键词,然后去全站或指定栏目下查找包含这些关键词的产品。
- 自定义字段:更灵活的方法,如果产品有自定义的分类(如“品牌”、“颜色”、“适用车型”等),可以根据这些自定义字段的值来调用。
调用同一栏目的产品(最常用)
这是最直接、最简单的方法,适用于绝大多数场景,语法清晰,性能也最好。
适用场景:
- 在一个产品详情页,推荐同品牌下的其他产品。
- 在一个文章页,推荐同一分类下的其他文章。
标签代码:
{dede:arclist typeid='当前栏目ID' titlelen='30' row='6'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">
<img src="[field:picname/]" alt="[field:title/]">
<p>[field:title/]</p>
</a>
</li>
{/dede:arclist}
代码解析:
typeid='当前栏目ID':这是核心参数。你需要手动将'当前栏目ID'替换成实际的目标栏目ID,如果当前文章在ID为5的栏目下,你想调用ID为5的栏目下的产品,就写typeid='5'。- 动态获取当前栏目ID:如果你不想手动填写,可以使用DedeCMS的内置变量
typeid来动态获取当前页面的栏目ID,但请注意,在列表页直接使用typeid会调用当前栏目,而在文章页则需要结合{dede:field}标签,在实际应用中,为了简单和可控,强烈建议直接填写目标栏目的ID,len='30'`:标题长度,截取30个字符。
- 动态获取当前栏目ID:如果你不想手动填写,可以使用DedeCMS的内置变量
row='6':调用条数,显示6条产品。[field:arcurl/]:文章/产品的链接地址。[field:picname/]:文章/产品的图片地址(需要有图片才行)。[field:title/]:文章/产品的标题。
基于关键词的相关产品(更智能)
这种方法通过提取当前内容的关键词,然后去匹配其他内容,相关性通常更高。
适用场景:跨度较大,但主题相关的网站,一篇关于“环保材料”的文章,可以推荐其他包含“环保”、“材料”等关键词的文章,即使它们不在同一个栏目。
标签代码:
{dede:likearticle row='6' titlelen='30'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">
<img src="[field:picname/]" alt="[field:title/]">
<p>[field:title/]</p>
</a>
</li>
{/dede:likearticle}
代码解析:
{dede:likearticle}:这是DedeCMS专门用于调用相关内容的标签。row='6'和titlelen='30':与方法一中的参数含义相同,控制调用数量和标题长度。- 工作原理:这个标签会自动获取当前文章的关键词(在后台编辑文章时填写),然后在数据库中进行模糊匹配,查找包含这些关键词的其他文章。
注意事项:
- 关键词是前提:必须为每一篇需要调用相关内容的文章在后台编辑时填写关键词,否则此标签将无法工作或调用结果不准确。
- 可能包含自身:此标签可能会调用出当前文章本身,如果不想显示当前文章,可以结合
notid参数(需要开启相关函数支持)或通过CSS/JS来隐藏,一个简单的办法是在后台关键词设置时,将当前文章标题也作为一个关键词加入,这样调用时可能会因为权重问题而降低自身出现的概率,但这不是最可靠的方案。
基于自定义字段的相关产品(最灵活)
如果你的产品有额外的分类维度,品牌”、“系列”、“适用机型”等,使用自定义字段可以实现非常精准的相关推荐。
适用场景:
- 电商网站:根据“品牌”推荐其他同品牌产品。
- 下载站:根据“软件类型”推荐其他同类软件。
- 汽车网站:根据“品牌”或“车型”推荐相关车型。
操作步骤(以“品牌”为例):
第一步:创建自定义字段

(图片来源网络,侵删)
- 进入DedeCMS后台 -> 核心 -> 内容模型管理。
- 选择你的产品内容模型(产品”),点击“更改”。
- 在“字段管理”中,添加一个自定义字段,
- 字段名:
brand(英文,不能重复) - :
品牌(中文,后台显示用) - 字段类型:
单行文本或下拉列表(如果品牌是固定的,下拉列表更好管理)
- 字段名:
- 保存后,去发布一篇产品,就会发现新增了“品牌”这一项,需要填写内容(苹果”、“华为”)。
第二步:调用相关产品
这里需要使用 sql 标签来执行自定义查询。
{dede:sql sql='SELECT * FROM `dede_archives` a LEFT JOIN `dede_addonproduct` p ON a.id = aid WHERE a.typeid = ~typeid~ AND p.brand = "~brand~" AND a.id != ~id~ LIMIT 0,6'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">
<!-- 注意:图片字段可能在不同表,需要根据你的模型调整 -->
<img src="[field:picname/]" alt="[field:title/]">
<p>[field:title/]</p>
</a>
</li>
{/dede:sql}
代码解析:
dede:sql:执行自定义SQL语句的标签。sql='...':SQL查询语句。~typeid~:DedeCMS的变量替换,会自动替换为当前栏目的ID。~id~:DedeCMS的变量替换,会自动替换为当前文章的ID。p.brand = "~brand~":这是关键,它会获取当前文章在brand自定义字段中填写的值,并作为查询条件。- 注意:如果你的自定义字段在
dede_archives主表,那么就不需要LEFT JOIN,这里假设你创建了模型,自定义字段在附加表dede_addonproduct中,所以需要关联查询。请根据你的实际情况修改表名和字段名。
- 注意:如果你的自定义字段在
AND a.id != ~id~:排除当前文章本身,避免重复。LIMIT 0,6:从第0条开始,取6条数据。[field:arcurl/]、[field:title/]:在sql标签中,这些字段名对应的是SQL查询结果中的列名(即数据库表中的字段名)。
总结与建议
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 同一栏目 | 简单、快速、性能好 | 相关性单一,仅限同一栏目 | 绝大多数情况下的首选,如列表页推荐、详情页同分类推荐。 |
| 相关性高,跨栏目 | 依赖关键词填写,可能包含自身 | 内容主题关联性强,但栏目分类不细致的网站。 | |
| 自定义字段 | 极其灵活、精准 | 设置复杂,需要懂SQL和模型 | 有特殊分类维度的网站,如电商、下载站、行业垂直网站。 |
给你的建议:
- 从方法一开始:对于初学者和大多数需求,直接使用方法一,手动填写
typeid是最稳妥、最直接的方式。 - 完善关键词:无论使用哪种方法,都养成在后台编辑内容时认真填写关键词的习惯,这对你网站的SEO和内部链接都有好处。
- 组合使用:在实际项目中,可以组合使用这些方法,先用方法一调用同栏目的产品,如果数量不够,再用方法二补充调用一些关键词相关的产品。
希望这些详细的解释能帮助你顺利在DedeCMS中调用相关产品!

(图片来源网络,侵删)
