dede如何调用热门标签?

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

使用DedeCMS自带的标签 {dede:hotwords}

这是最直接、最简单的方法,但它的功能相对有限,主要缺点是无法直接限制调用数量,并且默认调用的是“搜索热词”,而不是文章标签。

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

标签代码:

{dede:hotwords num='10' subday='30' maxlength='20'}
    <a href='[field:link/]'>[field:word/]</a>
{/dede:hotwords}

参数说明:

  • num='10':显示的热词数量。(注意:在某些老版本中,此参数可能无效,它会显示后台设置的全部数量)。
  • subday='30':统计最近多少天内的热词。30表示统计最近30天的搜索热词。
  • maxlength='20':热词显示的最大长度,超过这个长度的会被截断。

如何设置后台热词?

  1. 登录DedeCMS后台。
  2. 进入【核心】 -> 【热门关键词管理】。
  3. 在这里你可以添加、编辑和管理热门关键词,系统会根据用户在站内的搜索行为自动更新。

适用场景:

dede调用热门标签
(图片来源网络,侵删)
  • 当你想显示的是用户搜索的热门关键词时。
  • 当你只需要一个非常简单的调用,不关心数量限制时。

调用文章标签(按使用次数排序)【推荐】

这才是大多数用户想要的“热门标签”,即被文章使用次数最多的标签,这需要通过自定义SQL查询来实现。

操作步骤:

  1. 在你需要显示热门标签的模板文件(如 index.htm)中,将以下代码粘贴到合适的位置。

  2. 代码示例(调用20个最热门的标签):

    dede调用热门标签
    (图片来源网络,侵删)
    {dede:sql sql="SELECT tagname, count(*) as count FROM dede_taglist GROUP BY tagname ORDER BY count DESC LIMIT 0,20"}
        <a href="/tags.php?/[field:tagname/]/" title="共有[field:count/]篇与[field:tagname/]相关的文章">[field:tagname/]</a>
    {/dede:sql}
  3. 代码详解:

    • dede:sql:这是DedeCMS的自定义SQL标签,用于执行数据库查询。
    • sql="...":这里是核心的SQL语句。
      • SELECT tagname, count(*) as count:从dede_taglist表中查询tagname(标签名),并使用count(*)计算每个标签出现的次数,并将其命名为count
      • FROM dede_taglist:查询的数据表是dede_taglist,这个表记录了所有文章和标签的关联关系。
      • GROUP BY tagname:按标签名进行分组,这是count(*)能够正确统计每个标签使用次数的前提。
      • ORDER BY count DESC:按统计出的count(使用次数)进行降序排序,这样最热门的标签就会排在最前面。
      • LIMIT 0,20:限制查询结果只返回前20条记录。0是起始位置(从0开始),20是返回的数量,如果你想修改数量,只需修改这里的20即可。
    • [field:tagname/]:循环中输出的标签名。
    • [field:count/]:循环中输出的该标签被使用的次数。
    • /tags.php?/[field:tagname/]/:这是标签页的默认链接格式,如果你的链接格式不同,请相应修改。

调用热门标签并显示使用次数(带样式)

这是方法二的进阶版,它不仅调用标签,还添加了样式和使用次数,使其在页面上更美观、信息更丰富。

代码示例:

<div class="hot-tags">
    <h3>热门标签</h3>
    <ul>
        {dede:sql sql="SELECT tagname, count(*) as count FROM dede_taglist GROUP BY tagname ORDER BY count DESC LIMIT 0,20"}
            <li>
                <a href="/tags.php?/[field:tagname/]/" title="共有[field:count/]篇与[field:tagname/]相关的文章">
                    [field:tagname/]
                    <span class="tag-count">([field:count/])</span>
                </a>
            </li>
        {/dede:sql}
    </ul>
</div>

对应的CSS样式(添加到你的CSS文件中):

.hot-tags {
    margin: 20px 0;
    padding: 15px;
    border: 1px solid #e0e0e0;
    border-radius: 5px;
    background-color: #f9f9f9;
}
.hot-tags h3 {
    border-bottom: 2px solid #3498db;
    padding-bottom: 10px;
    margin-bottom: 15px;
    color: #333;
}
.hot-tags ul {
    list-style: none;
    padding: 0;
    margin: 0;
}
.hot-tags li {
    display: inline-block;
    margin: 5px 8px;
}
.hot-tags a {
    color: #555;
    text-decoration: none;
    font-size: 14px;
    transition: color 0.3s;
}
.hot-tags a:hover {
    color: #3498db;
    text-decoration: underline;
}
/* 使用次数的样式 */
.tag-count {
    color: #999;
    font-size: 12px;
    margin-left: 5px;
    font-weight: normal;
}

这个组合会生成一个带有标题、列表、链接和次数的漂亮热门标签模块。


使用自定义函数(更灵活)

如果你的模板中需要在多个地方调用热门标签,或者需要更复杂的逻辑,可以创建一个自定义函数。

操作步骤:

  1. 创建函数文件:

    • include/extend.func.php 文件中(如果不存在则创建这个文件)添加以下PHP函数:
      /**
       * 获取热门标签
       * @param int $num 获取数量
       * @return string 标签HTML字符串
       */
      function getHotTags($num = 20) {
          global $dsql;
          $tags = '';
          $sql = "SELECT tagname, count(*) as count FROM dede_taglist GROUP BY tagname ORDER BY count DESC LIMIT 0,{$num}";
          $dsql->Execute('hot', $sql);
          while ($row = $dsql->GetArray('hot')) {
              $tags .= "<a href='/tags.php?/" . $row['tagname'] . "/' title='共有" . $row['count'] . "篇与" . $row['tagname'] . "相关的文章'>" . $row['tagname'] . "</a> ";
          }
          return $tags;
      }
  2. 在模板中调用:

    • 在你的模板文件中,直接调用这个函数即可:
      <div class="hot-tags">
          {dede:getHotTags num='20'/}
      </div>

优点:

  • 代码复用性强,一次定义,多处使用。
  • 模板文件更简洁,逻辑与表现分离。
  • 可以轻松修改函数内部逻辑,而不用动模板文件。

总结与建议

方法 优点 缺点 适用场景
{dede:hotwords} 内置标签,无需SQL,简单直接 调用的是“搜索热词”,非“文章标签”;数量控制可能不灵活 调用后台管理的搜索热词
{dede:sql} 最常用;直接调用文章标签,可精确控制数量和排序 需要写SQL,对新手略有门槛 绝大多数情况下的首选,快速调用热门文章标签
{dede:sql}+CSS 功能强大,美观,信息丰富 需要额外编写CSS样式 对页面美观和用户体验要求较高的场景
自定义函数 代码复用,模板简洁,灵活度高 需要修改PHP文件,对新手有门槛 需要在多个页面或多次调用,追求代码规范的项目

对于绝大多数DedeCMS用户来说,强烈推荐使用【方法二】或【方法三】,因为它们能准确地调用出“被文章使用次数最多”的热门标签,这正是网站访客最关心的内容。

-- 展开阅读全文 --
头像
如何高效批量替换织梦文章关键字?
« 上一篇 04-21
织梦自定义枚举值如何设置与使用?
下一篇 » 04-21
取消
微信二维码
支付宝二维码

目录[+]