dede热门标签如何正确调用?

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

使用系统自带的标签(最简单、最常用)

这是最直接的方法,通过织梦的内置标签 arclistsg 来实现,它会根据文章的标签使用频率来生成热门标签列表。

dede热门标签调用
(图片来源网络,侵删)

标签名:

{dede:arclistsg sort='hot' titlelen='24' row='20'}

参数说明:

  • sort='hot'核心参数,表示按热门(即标签被引用的次数)排序。
  • row='20':表示调用多少个热门标签,len='24'`:表示标签名称的显示长度,中文为2个字符,24即显示12个汉字,超出部分会被截断。
  • subday='30'可选参数,表示只统计最近30天内的标签热度,如果不加,则统计全站所有时间的热度。
  • getall='1'可选参数,设置为1时,会调用所有标签,否则只调用有文章的标签,通常默认即可。

完整代码示例:

<div class="hot-tags">
    <h3>热门标签</h3>
    <ul>
        {dede:arclistsg sort='hot' titlelen='24' row='20' subday='30'}
        <li>
            <a href="[field:typelink/]" title="[field:typename/]">[field:typename/]</a>
            <span>([field:result/])</span> <!-- 显示该标签被引用的次数 -->
        </li>
        {/dede:arclistsg}
    </ul>
</div>

代码解释:

  • [field:typelink/]:获取标签的链接地址。
  • [field:typename/]:获取标签的名称。
  • [field:result/]:获取该标签被引用的次数(即热度值)。

使用SQL直接查询(更灵活、更强大)

当系统自带的标签无法满足你的需求时(你需要自定义排序方式、显示样式或进行更复杂的筛选),可以直接在模板中嵌入SQL查询。

核心SQL思路:

  1. dede_taglist 表中查询每个标签(tagname)的出现次数(count)。
  2. count(次数)降序排序。
  3. 使用 LIMIT 限制返回的结果数量。

完整代码示例:

<div class="hot-tags">
    <h3>热门标签 (SQL版)</h3>
    <ul>
        {dede:sql sql="SELECT tagname, count FROM dede_taglist GROUP BY tagname ORDER BY count DESC LIMIT 0, 20"}
        <li>
            <a href='/tags.php?/[field:tagname/]/' title="[field:tagname/]">[field:tagname/]</a>
            <span>([field:count/])</span>
        </li>
        {/dede:sql}
    </ul>
</div>

代码解释:

dede热门标签调用
(图片来源网络,侵删)
  • dede:sql:织梦的SQL查询标签。
  • SELECT tagname, count FROM dede_taglist:从 dede_taglist 表中查询标签名和引用次数。
  • GROUP BY tagname:按标签名分组,这是计算每个标签出现次数的关键。
  • ORDER BY count DESC:按引用次数降序排列,得到最热门的标签。
  • LIMIT 0, 20:从第0条开始,取20条记录,你可以修改 20 来调整显示数量。
  • /tags.php?/[field:tagname/]/:标签页的默认链接格式,请根据你的网站实际路径调整。

调用指定栏目下的热门标签

有时候你可能只想在某个栏目页调用该栏目下的热门标签,而不是全站的,这时结合SQL和 typeid 参数可以实现。

核心SQL思路:

  1. dede_taglist 表查询。
  2. 通过 LIKE 筛选出包含当前栏目ID的标签(因为织梦在生成标签时,会将栏目ID附加到标签名后,#栏目ID#标签名”)。
  3. 同样按次数排序并限制数量。

完整代码示例(需要放在栏目页模板中):

<div class="hot-tags">
    <h3>本栏目热门标签</h3>
    <ul>
        {dede:sql sql="SELECT SUBSTRING_INDEX(tagname, '#', -1) as tagname, count FROM dede_taglist WHERE tagname LIKE '%#[field:typeid]#%' GROUP BY tagname ORDER BY count DESC LIMIT 0, 15"}
        <li>
            <a href='/tags.php?/[field:tagname/]/' title="[field:tagname/]">[field:tagname/]</a>
            <span>([field:count/])</span>
        </li>
        {/dede:sql}
    </ul>
</div>

代码解释:

  • SUBSTRING_INDEX(tagname, '#', -1):这是一个MySQL函数,用于从字符串 tagname 中获取最后一个 后面的内容,也就是我们真正想要的标签名。
  • WHERE tagname LIKE '%#[field:typeid]#%':这是筛选的关键。[field:typeid] 会自动获取当前栏目的ID,这个条件确保只查询包含当前栏目ID的标签。
  • LIMIT 0, 15:这里我们只显示15个本栏目的热门标签。

总结与建议

方法 优点 缺点 适用场景
arclistsg 最简单,无需写SQL,官方支持,性能较好。 灵活性较低,自定义能力差。 日常使用,绝大多数情况下推荐此方法。
直接SQL 非常灵活,可以自定义任何排序和筛选逻辑。 需要懂一点SQL,如果标签表结构变化可能导致代码失效。 需要特殊功能,如按时间、权重等自定义排序时。
指定栏目SQL 精准定位,调用特定栏目的热门标签。 逻辑相对复杂,需要理解织梦标签的存储方式。 栏目页调用该栏目的热门标签。

推荐首选: 对于绝大多数网站,使用 方法一 就足够了,它简单、高效且稳定,只有在方法一无法满足你的特定需求时,再考虑使用方法二或方法三。

希望这些方法能帮到你!

dede热门标签调用
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
dede点击量排名如何实时更新?
« 上一篇 04-13
C语言return语句如何正确使用?
下一篇 » 04-13
取消
微信二维码
支付宝二维码

目录[+]