dede如何用关键词调用相关文章?

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 DEDE建站 正文

下面我将为你详细讲解如何使用这个标签,并提供不同场景下的完整代码示例和注意事项。

dede根据关键词调用相关文章
(图片来源网络,侵删)

核心标签:{dede:likearticle}

{dede:likearticle} 是专门用于调用相关文章的标签,它会分析当前文章的关键词,然后在文章表中查找包含相同关键词的其他文章。


基本用法(最常用)

这是最基础也是最常用的调用方式,通常用在文章内容页(article_article.htm)的末尾,用于推荐读者可能感兴趣的文章。

页 (article_article.htm) 中使用

将以下代码粘贴到你想要显示相关文章的位置,比如文章内容的末尾。

dede根据关键词调用相关文章
(图片来源网络,侵删)
<h3>相关文章推荐</h3>
<ul class="related-list">
    {dede:likearticle titlelen='42' row='8'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span class="date">([field:pubdate function="MyDate('Y-m-d',@me)"/])</span>
    </li>
    {/dede:likearticle}
</ul>

参数详解

在上面的代码中,{dede:likearticle} 标签使用了几个常用参数,我们来逐一解释:

  • row='8': 设置调用相关文章的数量,'8' 表示调用 8 篇。
  • titlelen='42': 设置文章标题的显示长度,'42' 表示最多显示 42 个字符(一个汉字算2个字符,一个字母算1个字符),如果标题过长,会被自动截断并加上 。
  • typeid='0': (可选)指定栏目 ID。'0' 表示不限制栏目,在全站范围内查找,如果你想只在当前文章的栏目内查找相关文章,可以将此值设置为当前栏目的 ID。
  • innertext='': (可选)自定义单篇相关文章的 HTML 模板,如果你不使用 innertext,标签会使用默认的 <a href="[field:arcurl/]">[field:title/]</a> 格式,上面的例子就是通过直接在标签内写 HTML 来实现的,这和使用 innertext 是等效的。
  • keyword='': (可选)手动指定关键词,如果留空,标签会自动获取当前文章的关键词。
  • orderby='rand': (可选)排序方式。
    • relrank:默认,按相关度排序(关键词匹配度高的在前)。
    • pubdate:按发布时间排序。
    • rand:随机排序,可以让推荐文章看起来更多样化。

字段说明

{dede:likearticle} 标签内,你可以使用以下字段:

dede根据关键词调用相关文章
(图片来源网络,侵删)
  • [field:title/]: 文章标题。
  • [field:arcurl/]: 文章链接。
  • [field:pubdate function="MyDate('Y-m-d',@me)"/]: 文章发布日期,function="MyDate('Y-m-d',@me)" 是一个格式化函数,将时间戳格式化为 年-月-日 的形式,你也可以使用 '[field:pubdate function="strftime('%Y-%m-%d',@me)"/]'
  • [field:description/]:
  • [field:litpic/]: 文章缩略图。

进阶用法与技巧

场景1:调用当前栏目下的相关文章

如果你希望相关文章只显示在当前栏目内,而不是全站,可以加上 typeid 参数,并获取当前栏目的 ID。

<h3>本栏目相关文章</h3>
<ul>
    {dede:likearticle typeid='0' row='5' titlelen='30'}
    <li><a href="[field:arcurl/]">[field:title/]</a></li>
    {/dede:likearticle}
</ul>

如何获取当前栏目 ID? 在 DedeCMS 的模板中,有一个内置变量 typeid 代表当前栏目的 ID,你可以这样使用:

{dede:likearticle typeid='[typeid]' row='5' titlelen='30'}
    ...
{/dede:likearticle}

这样就能确保调用的相关文章和当前文章属于同一个栏目。

场景2:带缩略图的相关文章列表

如果你想展示图文并茂的相关文章,可以使用 [field:litpic/] 字段。

<h3>图文推荐</h3>
<div class="related-img">
    {dede:likearticle row='4' titlelen='20'}
    <div class="item">
        <a href="[field:arcurl/]">
            <img src="[field:litpic/]" alt="[field:title/]" />
            <span class="title">[field:title/]</span>
        </a>
    </div>
    {/dede:likearticle}
</div>

对应的 CSS 样式可能需要你自己编写来布局这些图片。

场景3:排除当前文章

默认情况下,{dede:likearticle} 有时会调用到当前文章本身,如果你希望排除当前文章,可以尝试以下方法(此方法并非 100% 有效,取决于 DedeCMS 版本和配置,但很常用):

{dede:likearticle row='10' titlelen='40'}
    <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
    <br />
{/dede:likearticle}

然后通过 jQuery 在页面加载完成后,移除链接中 href 属性与当前页面 URL 相同的 <a>

$(document).ready(function() {
    var currentUrl = window.location.href;
    $('.related-list a').each(function() {
        if ($(this).attr('href') == currentUrl) {
            $(this).parent().remove(); // 移除包含当前文章链接的整个 <li> 元素
        }
    });
});

重要注意事项与排查

{dede:likearticle} 调用不出结果,通常有以下几个原因:

  1. 文章没有设置关键词:这是最常见的原因!{dede:likearticle} 依赖文章的关键词字段,请确保你发布的每篇文章都在“关键词”输入框中填写了至少一个关键词,多个关键词用英文逗号 隔开。
  2. 关键词为空或无效:检查关键词是否为空,或者是否包含特殊字符。
  3. 关键词重复度过高:如果所有文章都使用了相同的关键词(网站建设”),那么调出来的相关文章可能非常杂乱,甚至包含所有文章,这时可以考虑使用 typeid 参数来限制范围,或者使用 orderby='rand' 来随机展示。
  4. 模板缓存问题:修改模板后,请务必在 DedeCMS 后台 “生成” -> “更新HTML”,或者进入 “系统” -> “系统设置” -> “性能选项” -> “清除所有缓存”,让新模板生效。
  5. 数据库问题:极少数情况下,数据库的关键词字段可能损坏,但这种情况非常罕见。
功能需求 核心代码 说明
基本调用 {dede:likearticle row='8' titlelen='42'}...{/dede:likearticle} 最常用,获取全站相关文章。
限制栏目 {dede:likearticle typeid='[typeid]' row='5'}...{/dede:likearticle} 只在当前栏目内查找相关文章。
图文推荐 {dede:likearticle}...<img src="[field:litpic/]">...{/dede:likearticle} 调用包含缩略图的相关文章。
随机排序 {dede:likearticle orderby='rand' row='10'}...{/dede:likearticle} 随机展示相关文章,增加新鲜感。

希望这份详细的指南能帮助你成功地在 DedeCMS 中实现相关文章的调用!

-- 展开阅读全文 --
头像
织梦CMS如何修改CSS样式?
« 上一篇 2025-12-31
织梦 删除内容 sql命令
下一篇 » 2025-12-31

相关文章

取消
微信二维码
支付宝二维码