页如何调用tag标签?

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

使用官方自带的标签(最推荐、最稳定)

这是官方提供的标准方法,兼容性最好,也最不容易出错。

dede 内容页调用tag
(图片来源网络,侵删)

标签代码:

{dede:tag type='current'}
    <a href='[field:link/]'>[field:tagname/]</a>
{/dede:tag}

代码解析:

  • {dede:tag type='current'}:这是调用标签的起始命令。
    • type='current':这是关键参数,表示只调用当前这篇文档的标签,如果不写这个参数,它会调用全站的随机标签,这通常不是我们想要的。
  • [field:link/]:这是标签的链接地址,会自动跳转到标签列表页。
  • [field:tagname/]:这是标签的名称。
  • {/dede:tag}:标签的结束命令。

完整示例(带样式):

在实际使用中,我们通常会给标签添加一些样式,比如用逗号分隔,或者给标签加上背景色。

示例1:用逗号分隔

<p>本文标签:
    {dede:tag type='current'}
        <a href='[field:link/]'>[field:tagname/]</a>
        {dede:tag}
    {else /
        暂无标签
    {/dede:tag}
</p>

注意:这里的 {else /}{/dede:tag} 的闭合方式是旧版本DedeCMS的写法,如果你的版本较新(如DedeCMS 5.7+),推荐使用下面的写法。

示例2:更现代的写法(推荐用于DedeCMS 5.7+)

dede 内容页调用tag
(图片来源网络,侵删)
<div class="article-tags">
    <span>标签:</span>
    {dede:tag type='current'}
        <a href="[field:link/]" class="tag">[field:tagname/]</a>
    {/dede:tag}
</div>

然后你可以在CSS文件中为 .tag 类添加样式:

.article-tags {
    margin-top: 20px;
    font-size: 14px;
}
.article-tags .tag {
    display: inline-block;
    background-color: #f0f0f0;
    color: #333;
    padding: 2px 8px;
    margin: 0 5px 5px 0;
    border-radius: 3px;
    text-decoration: none;
}
.article-tags .tag:hover {
    background-color: #007bff;
    color: #fff;
}

通过SQL查询调用(灵活性强)

如果官方标签无法满足你的需求(例如需要更复杂的排序或过滤),你可以直接在模板中使用SQL标签进行查询。

标签代码:

{dede:sql sql='SELECT tag FROM `dede_taglist` WHERE aid = ~id~'}
    <a href='/tags/[field:tag function="urlencode(@me)"/].html'>[field:tag/]</a>
{/dede:sql}

代码解析:

  • {dede:sql ...}:DedeCMS的SQL查询标签。
  • sql='...':SQL查询语句。
    • SELECT tag FROM ...:从 dede_taglist 这个表中查询 tag(标签名)字段。
    • WHERE aid = ~id~:这是关键。aid 是文章ID,~id~ 是DedeCMS的一个特殊变量,会自动被替换为当前文章的ID,这样就实现了只查询当前文章标签的目的。
  • [field:tag/]:获取查询结果中的 tag 字段值,也就是标签名。
  • function="urlencode(@me)":这是一个函数,对标签名进行URL编码,这是非常重要的一步,可以确保中文标签在URL中是合法的,避免乱码或404错误,标签“网站建设”会被编码为“%E7%BD%91%E7%AB%99%E5%BB%BA%E8%AE%BE”。
  • /tags/[field:tag function="urlencode(@me)"].html:这是标签页的默认链接规则,如果你的网站设置了其他规则,请相应修改。

修改PHP文件实现(终极方案,不推荐新手)

如果你发现以上方法在特定版本下仍然无效,或者你想实现更底层、更定制化的功能,可以考虑直接修改PHP文件。这种方法有风险,可能导致网站升级困难,请谨慎操作,并提前备份文件。

  1. 找到并打开文件: 打开 include/common.func.php 文件。

  2. 在文件末尾添加函数: 在 ?> 之前,添加如下PHP函数:

    /**
     * 获取当前文章的所有标签
     * @param int $aid 文章ID
     * @return string 标签链接HTML
     */
    function GetTags($aid)
    {
        global $dsql;
        $tags = '';
        $query = "SELECT tag FROM `dede_taglist` WHERE aid='$aid' ";
        $dsql->Execute('me',$query);
        while($row = $dsql->GetArray('me'))
        {
            $tags .= "<a href='/tags/".urlencode($row['tag']).".html'>".$row['tag']."</a> ";
        }
        return $tags;
    }
  3. 在模板中调用: 在你的内容页模板(通常是 article_article.htm)中,使用如下代码调用:

    <div class="article-tags">
        <span>标签:</span>
        {dede:field.name='GetTags' function='GetTags(@me)'/}
    </div>
    • {dede:field.name='GetTags'}:调用我们刚刚定义的 GetTags 函数。
    • function='GetTags(@me)':将当前文章的ID(@me 会自动传递当前文章ID)作为参数传入 GetTags 函数。

总结与对比

方法 优点 缺点 推荐度
官方标签 最简单、最稳定、官方支持 灵活性相对较低 ⭐⭐⭐⭐⭐ (首选)
SQL标签 灵活性高,可自定义查询 需要了解基本SQL,URL编码必须手动处理 ⭐⭐⭐⭐ (官方标签失效时的备选)
修改PHP 功能最强大,完全自定义 有风险,破坏系统文件,升级困难 ⭐ (仅高级开发者,在特殊需求下使用)

给你的建议:

  • 请首先尝试【方法一】,它能解决99%的需求。
  • 方法一】无效或样式不好控制,再尝试【方法二】。
  • 除非你是DedeCMS的开发者,否则不要轻易使用【方法三】。

希望这些信息能帮到你!

-- 展开阅读全文 --
头像
dede 文章时间批量修改
« 上一篇 02-15
没有dede-admin表
下一篇 » 02-15
取消
微信二维码
支付宝二维码

目录[+]