dede相关新闻标签如何调用与自定义?

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

页(article_article.htm)或列表页的详情中,自动获取与当前文章相关的其他文章,并将其以列表形式展示出来,这对于网站的内链建设、提升用户体验和 SEO 非常重要。

dede 相关新闻标签
(图片来源网络,侵删)

基础标签语法

最常用、最简单的相关新闻标签是 {dede:likearticle}

基本格式:

{dede:likearticle}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
    </li>
{/dede:likearticle}

代码解释:

  • {dede:likearticle}:标签开始,表示开始调用相关新闻。
  • {/dede:likearticle}:标签结束。
  • [field:arcurl/]:调用文章的完整链接地址。
  • [field:title/]:调用文章的标题。

默认情况下,这个标签会根据 当前文章的关键词 来查找相关文章,它会自动将文章内容中的关键词提取出来,然后去数据库中查找包含这些关键词的其他文章。


常用参数详解

通过给 {dede:likearticle} 添加参数,我们可以精确控制相关新闻的显示方式。

数量控制 (row)

用于设置显示多少条相关新闻。

  • 语法: row='数字'
  • 示例: 显示 8 条相关新闻
{dede:likearticle row='8'}
    <li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:likearticle}

标题长度控制 (titlelen)

用于设置显示的文章标题最多多少个字符(一个汉字算一个字符)。

  • 语法: titlelen='数字'
  • 示例: 标题最多显示 30 个字符,超出部分用省略号代替(需要在CSS中配合 text-overflow: ellipsis; 使用)
{dede:likearticle row='5' titlelen='30'}
    <li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:likearticle}

排序方式 (orderby)

用于设置相关新闻的排序规则,这是非常实用的一个参数。

  • 语法: orderby='排序字段'
  • 常用值:
    • hotclick:按点击量(人气)从高到低排序。
    • pubdate:按发布时间从新到旧排序。
    • rand:随机排序,每次刷新页面相关新闻的顺序都会变。
  • 示例: 按点击量排序,显示 6 条
{dede:likearticle row='6' orderby='click'}
    <li><a href="[field:arcurl/]">[field:title/]</a> ([field:click/])</li>
{/dede:likearticle}

注意[field:click/] 用于调用文章的点击次数。

排除当前文章 (idlist)

用于排除当前文章,避免显示自己,这个参数很重要,否则在极端情况下(比如一篇全新的文章,没有任何相关文章),可能会显示自己。

  • 语法: idlist='要排除的文章ID'
  • 如何获取当前文章ID? 使用 {dede:field.id/} 可以获取当前文章的ID。
  • 示例: 排除当前文章,并按随机顺序显示 5 条
{dede:likearticle row='5' orderby='rand' idlist='{dede:field.id/}'}
    <li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:likearticle}

指定栏目 (typeid)

有时候我们希望相关新闻只限定在某个或某些栏目内。

  • 语法: typeid='栏目ID'
  • 示例: 只在当前文章的栏目({dede:field.typeid/})内查找相关文章
{dede:likearticle row='5' typeid='{dede:field.typeid/}'}
    <li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:likearticle}

注意:如果同时使用了 typeid,相关文章的查找范围就会缩小到指定栏目内,可能找不到足够的结果。

底部分页 (subday)

这个参数比较特殊,它用于指定查找多少天内的文章。subday='30' 表示只查找最近 30 天内发布的文章。

  • 语法: subday='天数'
  • 示例: 只查找最近 7 天内发布的、按点击量排序的相关文章
{dede:likearticle row='5' orderby='click' subday='7'}
    <li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:likearticle}

完整示例

下面是一个在实际模板中非常常见的完整写法,结合了多种参数,并加入了更丰富的信息。

场景: 在文章内容页右侧,显示一个“相关阅读”模块,包含标题、文章列表、发布时间和点击量。

HTML 代码 (article_article.htm 中):

<div class="related-news">
    <h3>相关阅读</h3>
    <ul>
        {dede:likearticle row='6' titlelen='40' orderby='click' idlist='{dede:field.id/}'}
            <li>
                <span class="title"><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></span>
                <span class="info">([field:pubdate function="MyDate('m-d', @me)"/])</span>
            </li>
        {/dede:likearticle}
    </ul>
</div>

代码解析:

  1. row='6':显示 6 条,len='40'`:标题最多 40 个字符。
  2. orderby='click':按点击量排序。
  3. idlist='{dede:field.id/}':排除当前文章。
  4. [field:pubdate function="MyDate('m-d', @me)"/]:调用发布时间,并使用 function 将其格式化为 月-日 的形式,12-25。"[field:title/]"给链接的title` 属性赋值,鼠标悬停时会显示完整标题,对SEO和用户体验有益。

高级用法:自定义 SQL 查询

如果默认的关键词匹配方式无法满足你的需求(你希望按文章标签、作者等关联),你可以使用 sql 参数来执行自定义的 SQL 查询。

语法: sql='你的SQL查询语句'

示例: 假设你有一个自定义的 tag 字段,你想查找与当前文章 tag 字段相同的其他文章。

{dede:likearticle sql='SELECT * FROM `dede_archives` WHERE `tag` = (SELECT `tag` FROM `dede_archives` WHERE id = ~id~) AND id != ~id~ ORDER BY click DESC LIMIT 0, 5'}
    <li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:likearticle}

重要说明:

  • ~id~ 是 DedeCMS 的一个特殊占位符,在标签解析时会被自动替换为当前文章的 ID。
  • 使用 sql 参数时,[field:arcurl/][field:title/] 等常规字段依然有效。
  • 这种方式非常灵活,但对 SQL 语句的编写能力有一定要求,且需要确保你的数据库表结构符合查询逻辑。

常见问题与解决

问题1:为什么我的相关新闻是空的?

  • 原因1: 新文章,数据库里没有其他包含相同关键词的文章。
  • 原因2: 文章的关键词是特殊字符、数字或英文,匹配不到。
  • 原因3: 排除当前文章后,符合条件的文章不足 row 设定的数量。
  • 解决: 可以尝试放宽条件,比如减少 row 的值,或者不使用 idlist 参数看看是否会出现自己。

问题2:相关新闻和我想象的不一样。

  • 原因: 默认的关键词匹配算法可能不够智能。
  • 解决:
    1. 手动设置关键词: 在文章编辑页面的“关键词”输入框中,手动输入用英文逗号隔开的关键词,DedeCMS 会优先使用这里的关键词进行匹配。
    2. 使用 orderby 参数: 强制按点击量或时间排序,而不是依赖关键词。
    3. 使用 typeid 参数: 将范围限制在更小的栏目内。

希望这份详细的指南能帮助你完全掌握 DedeCMS 的相关新闻标签!

-- 展开阅读全文 --
头像
织梦模板修改教程从哪开始学?
« 上一篇 03-25
C语言课后答案哪里找?正确吗?怎么用?
下一篇 » 03-25

相关文章

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

目录[+]