dede文章tag标签如何正确调用?

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

核心标签

无论在哪种场景下,调用 tag 标签的核心都是使用 DedeCMS 的内置标签:{dede:tag}

dede 文章tag标签调用
(图片来源网络,侵删)

基本语法

{dede:tag sort='' getall='' row=''}
    <a href='[field:tagurl/]'>[field:tag/]</a>
{/dede:tag}

核心属性说明

  • row:调用的 tag 数量,即显示多少个标签。row='10' 表示调用 10 个标签。
  • sort:调用的排序方式。
    • sort='hot'sort='weekhot':按热度排序(最常用)。
    • sort='new':按最新添加的标签排序。
    • sort='rand':随机排序。
  • getall:是否获取全站所有标签。
    • getall='0':默认值,只获取当前文章或栏目的标签。
    • getall='1':获取全站所有的标签,通常用于网站侧边栏的“热门标签”云。
  • typeid:指定栏目 ID,当 getall='0' 时,可以指定只获取某个栏目下的标签。

页 (article_article.htm) 调用当前文章的标签

这是最常见的用法,通常放在文章内容的末尾,用于展示与本文相关的标签。

适用模板/templets/default/article_article.htm

代码示例

<div class="article-tag">
    <span>标签:</span>
    {dede:tag row='8' sort='hot'}
        <a href="[field:tagurl/]" title="[field:tag/]">[field:tag/]</a>
    {/dede:tag}
</div>

代码解释

dede 文章tag标签调用
(图片来源网络,侵删)
  • row='8':显示当前文章的 8 个标签。
  • sort='hot':按标签的热度进行排序,让热门标签显示在前面。
  • [field:tagurl/]:这是标签的链接地址,会自动生成类似 tags.php?/tag名称/ 的链接。
  • [field:tag/]:这是标签的名称。

效果:在文章页面显示该文章的所有或部分标签,并生成链接。


在列表页 (list_article.htm) 调用当前栏目下所有文章的标签

这种用法通常用于列表页的侧边栏,展示当前栏目的“热门标签”或“所有标签”,方便用户快速浏览同类文章。

适用模板/templets/default/list_article.htm

代码示例

<div class="sidebar-tags">
    <h3>本栏目热门标签</h3>
    {dede:tag row='15' sort='hot' getall='0' typeid=''}
        <a href="[field:tagurl/]" title="[field:tag/]">[field:tag/]</a>
    {/dede:tag}
</div>

代码解释

  • row='15':显示 15 个标签。
  • sort='hot':按热度排序。
  • getall='0':这是关键,表示获取全站标签,而是只获取与当前栏目相关的标签。
  • typeid='':可以留空,因为列表页默认就知道当前是哪个栏目,你也可以手动指定一个栏目 ID。

效果:在列表页侧边栏显示当前栏目的热门标签云。


在首页 (index.htm) 或其他全局页面调用全站热门标签

这种用法通常用于网站的全局侧边栏,展示整个网站的热门标签,增加站内链接。

适用模板/templets/default/index.htm 或其他全局模板

代码示例

<div class="global-tags">
    <h3>全站热门标签</h3>
    {dede:tag row='30' sort='hot' getall='1'}
        <a href="[field:tagurl/]" title="[field:tag/]">[field:tag/]</a>
    {/dede:tag}
</div>

代码解释

  • row='30':显示全站最热门的 30 个标签。
  • sort='hot':按热度排序。
  • getall='1':这是关键,表示获取全站所有的标签,并按指定规则排序。

效果:在首页或其他页面显示全站的热门标签云。


高级用法与技巧

为标签添加样式(标签云效果)

为了让标签看起来更美观,可以根据标签的使用频率(如热度)来设置不同的字体大小或颜色。

示例代码

{dede:tag row='30' sort='hot' getall='1'}
    <a href="[field:tagurl/]" title="[field:tag/]" style="font-size:[field:total/];">[field:tag/]</a>
{/dede:tag}

解释

  • [field:total/]:这个字段代表该标签被使用的总次数(即文章数)。
  • 你需要在 CSS 中定义好不同 font-size 的样式,可以设置一个最大和最小值,然后通过一些计算来动态设置,一个更简单的方法是使用 CSS 的 class

更推荐的方法(使用 class)

在 CSS 文件中定义一些样式类:

.tag-level-1 { font-size: 12px; color: #999; }
.tag-level-2 { font-size: 14px; color: #666; }
.tag-level-3 { font-size: 16px; color: #333; }
.tag-level-4 { font-size: 18px; color: #000; font-weight: bold; }

然后在模板中通过判断 total 的值来赋予不同的 class

{dede:tag row='30' sort='hot' getall='1'}
    <?php
    // 这里用PHP进行简单的判断,将total值映射到不同的class
    $total = intval(@me);
    $class = 'tag-level-1';
    if($total > 20) $class = 'tag-level-4';
    else if($total > 10) $class = 'tag-level-3';
    else if($total > 5) $class = 'tag-level-2';
    ?>
    <a href="[field:tagurl/]" title="[field:tag/]" class="<?php echo $class; ?>">[field:tag/]</a>
{/dede:tag}

注意:在 {dede:tag} 标签内使用 PHP 代码,需要确保你的 DedeCMS 配置支持,并且使用 @me 来获取当前字段的值。

调用当前文章的标签并手动用逗号分隔

有时候你不需要标签的链接,只需要一串用逗号隔开的标签文本,用于 keywords 或其他地方。

代码示例

{dede:tag row='20' sort=''}
    [field:tag/]
    {dede:if ([field:global.autoindex/]/20 != 1)}, {/dede:if}
{/dede:tag}

解释

  • row='20':获取 20 个标签。
  • sort='':不进行排序,按默认顺序。
  • {dede:if ([field:global.autoindex/]/20 != 1)}, {/dede:if}:这是一个判断,除了最后一个标签,其他标签后面都加上一个逗号和空格。[field:global.autoindex/] 是循环的次数。

常见问题排查

  1. 标签调不出来,显示空白?

    • 原因1:文章没有添加标签,请确保在后台发布文章时,填写了“TAG标签”字段。
    • 原因2:标签的存放目录 (/data/tplcache/) 权限不足,请确保这个目录有写入权限。
    • 原因3:模板标签写错,检查 {dede:tag} 是否拼写正确,以及 {/dede:tag} 是否有闭合。
  2. 调出来的标签不是我想要的(比如调出来全站的)?

    • 原因getall 属性设置错误,在列表页或文章页调用相关标签时,请确保 getall='0',在首页调用全站标签时,使用 getall='1'
  3. 标签链接打不开,404错误?

    • 原因:网站没有开启伪静态,或者伪静态规则没有正确配置。
    • 解决方法
      1. 进入 DedeCMS 后台 -> 系统 -> 系统基本参数 -> 核心设置
      2. 找到 “是否使用伪静态” 选项,选择 “是”。
      3. 然后根据你的服务器环境(Apache, Nginx, IIS),上传并配置对应的伪静态规则文件到网站根目录。

希望这份详细的指南能帮助你完美地在 DedeCMS 中调用文章标签!

-- 展开阅读全文 --
头像
如何修改dede文章发布时间?
« 上一篇 02-03
C语言如何引用其他C程序文件?
下一篇 » 02-03
取消
微信二维码
支付宝二维码

目录[+]