dede5.7 相关文章调用

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

使用内置的 {dede:likearticle} 标签(最推荐、最简单)

这是 DedeCMS 官方提供的专门用于调用相关文章的标签,使用起来非常方便,功能也足够强大。

dede5.7 相关文章调用
(图片来源网络,侵删)

标签基本语法

{dede:likearticle col='num' titlelen='30'}
    <a href='[field:arcurl/]'>[field:title/]</a>
{/dede:likearticle}

参数详解

  • col='num':每行显示的文章数量。col='3' 表示一行显示3个标题。
  • row='num':总共显示多少行。row='2' 表示共显示 2 行,col='3',那么总共会显示 6 篇文章,通常只使用 col 参数即可,len='30'的长度,单位是汉字(一个汉字算2个字符),如果标题超过这个长度,将被截断并加上...`。
  • infolen='100':文章简介的长度。
  • orderby='rand':文章排序方式。
    • orderby='hot'orderby='click':按点击量(热度)排序。
    • orderby='pubdate':按发布时间排序。
    • orderby='rand':随机排序。
  • aid='当前文章ID':指定当前文章的ID,系统会根据这个ID查找相关文章,通常情况下,这个参数可以省略,标签会自动获取当前文章的ID。
  • typeid='0':指定相关文章的栏目ID。0 表示不限栏目,可以在所有栏目中查找,如果你只想在特定栏目中查找,可以设置 typeid='栏目ID'
  • channelid='1':指定模型ID。1 代表文章模型,2 代表图集模型等,默认为 1

完整示例

假设你想在文章内容页(article_article.htm 模板)的底部调用5篇相关文章,按点击量排序,标题长度限制在25个汉字。

<div class="related-article">
    <h3>相关文章</h3>
    <ul>
        {dede:likearticle row='5' titlelen='25' orderby='click'}
            <li>
                <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
                <span class="view-count">([field:click/])</span>
            </li>
        {/dede:likearticle}
    </ul>
</div>

优点:

  • 官方支持:稳定可靠,与系统结合紧密。
  • 使用简单:无需额外代码,一个标签搞定。
  • 功能齐全:支持多种排序、数量控制等。

缺点:

  • 默认的“相关”算法是基于关键词匹配的,如果关键词设置不当,效果可能不理想。

通过SQL查询自定义调用(最灵活、性能最佳)

当内置的 {dede:likearticle} 标签无法满足你的特殊需求时(你想根据自定义字段、标签等来关联文章),或者为了追求极致的性能(因为内置标签每次都会执行一次数据库查询),你可以使用 {dede:sql} 标签直接进行SQL查询。

dede5.7 相关文章调用
(图片来源网络,侵删)

实现原理

  1. 获取当前文章的关键词。
  2. 根据关键词去 dede_archives 表(文章主表)中查询包含相同关键词的其他文章。
  3. 排除掉当前文章本身。

完整示例

页模板中,将以下代码放在你需要的位置:

<div class="related-article">
    <h3>基于关键词的相关文章</h3>
    <ul>
        {dede:sql sql="
            SELECT a.id, a.title, a.typeid, a.click, a.pubdate
            FROM dede_archives a
            JOIN (
                SELECT keywords FROM dede_archives WHERE id = ~id~
            ) AS b ON a.keywords LIKE CONCAT('%', b.keywords, '%')
            WHERE a.id != ~id~ AND a.arcrank > -1
            ORDER BY a.click DESC
            LIMIT 5
        "}
            <li>
                <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
                <span class="view-count">([field:click/])</span>
            </li>
        {/dede:sql}
    </ul>
</div>

代码解析

  • SELECT ... FROM dede_archives a:从文章主表 dede_archives 查询。
  • JOIN (SELECT keywords FROM dede_archives WHERE id = ~id~) AS b ON ...:这是一个子查询,它会先获取当前文章的关键词。~id~ 是 DedeCMS 的一个特殊变量,代表当前文章的ID。
  • a.keywords LIKE CONCAT('%', b.keywords, '%'):这是核心关联逻辑,查找 keywords 字段中包含当前文章关键词的所有文章。
  • WHERE a.id != ~id~非常重要,排除掉当前文章本身,防止相关文章列表中显示自己。
  • AND a.arcrank > -1:只显示已审核通过的文章。arcrank = -1 通常表示未审核或回收站的文章。
  • ORDER BY a.click DESC:按点击量降序排序,你也可以改成 pubdate DESC 按时间排序。
  • LIMIT 5:限制只返回5条结果。
  • [field:arcurl/]:在 {dede:sql} 标签中,DedeCMS 会自动根据查询出的 idtypeid 来生成文章链接,所以这个标签依然有效。

优点:

  • 极致灵活:可以完全自定义关联逻辑,比如结合自定义字段、多关键词等。
  • 性能可控:你可以通过优化SQL查询语句来获得比内置标签更好的性能。
  • 功能强大:可以实现任何基于数据库的复杂关联。

缺点:

  • 需要SQL知识:对不熟悉SQL的用户有一定门槛。
  • 维护成本:如果未来DedeCMS的数据库表结构发生变化,这段代码可能需要修改。

调用同栏目的其他文章(最常用的一种“相关”)

在很多场景下,“相关文章”其实指的是“同栏目的其他文章”,这种调用非常简单,而且逻辑清晰。

使用 {dede:arclist}

{dede:arclist} 是 DedeCMS 最强大的列表标签,也可以用来调用当前栏目的其他文章。

<div class="related-article">
    <h3>同栏目文章推荐</h3>
    <ul>
        {dede:arclist typeid='~typeid~' row='5' titlelen='25' orderby='pubdate'}
            <li>
                <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
                <span class="pubdate">([field:pubdate function="MyDate('m-d', @me)"/])</span>
            </li>
        {dede:arclist}
    </ul>
</div>

代码解析

  • typeid='~typeid~'~typeid~ 是另一个特殊变量,代表当前文章所在的栏目ID,通过这个参数,我们确保只调用当前栏目下的文章。
  • row='5':调用5篇文章。
  • orderby='pubdate':按发布时间排序,你也可以用 click 按点击量排序。

优点:

  • 逻辑清晰:用户通常对同栏目的文章更感兴趣。
  • 调用简单:使用最常用的 arclist
  • 性能良好arclist 标签有良好的缓存机制。

缺点:

  • 关联性弱:如果一个大栏目下文章主题差异很大,推荐效果可能不佳。

总结与建议

方法 标签/代码 优点 缺点 适用场景
方法一 {dede:likearticle} 最简单、官方支持、功能齐全 关联算法基于关键词,可能不精确 绝大多数情况下的首选,快速实现功能。
方法二 {dede:sql} 最灵活、性能最佳、可定制 需要SQL知识,维护成本稍高 对关联逻辑有特殊要求,或对性能有极致追求的网站。
方法三 {dede:arclist} 逻辑清晰、调用简单、性能好 关联性相对较弱 推荐“同栏目文章”的场景,这是用户最常见的需求。

给你的建议:

  1. 新手或快速实现:直接使用 方法一 {dede:likearticle},它已经能满足大部分需求。
  2. 追求用户体验:在文章页同时使用 方法三 {dede:arclist}(同栏目推荐)和 方法一 {dede:likearticle}(关键词相关),给用户更多选择。
  3. 高级开发者或特定需求:如果默认的关键词匹配效果不好,或者你想实现更复杂的“标签云”式关联,方法二 {dede:sql} 是你的不二之选。

希望这些详细的解释和示例能帮助你完美地实现 DedeCMS 5.7 的相关文章调用功能!

-- 展开阅读全文 --
头像
ultraedit c 语言
« 上一篇 昨天
c语言indirection
下一篇 » 昨天
取消
微信二维码
支付宝二维码