织梦列表调用tag标签

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 织梦建站 正文

使用织梦自带的标签(最推荐、最简单)

这是织梦官方提供的原生方法,性能最好,也最稳定,它通过一个辅助函数来获取当前文章的ID,然后调用标签。

织梦列表调用tag标签
(图片来源网络,侵删)

适用场景:在文章列表页(如 list_article.htm)中,为每篇列表文章显示其对应的tag标签。

操作步骤

  1. 打开你的列表模板文件: 找到并打开你需要添加tag标签的列表模板,通常是 /templets/default/list_article.htm 或你自定义的模板文件。

  2. 在循环内部添加标签代码: 在 {dede:list} 标签对内部,你希望显示tag标签的位置,添加以下代码:

    织梦列表调用tag标签
    (图片来源网络,侵删)
    {dede:tag type='current'}
        <a href='[field:tagurl/]'>[field:tagname/]</a>
    {/dede:tag}
  3. 代码解释

    • {dede:tag type='current'}:这是核心。type='current' 告诉织梦,我只获取当前正在循环的这篇列表文章的tag标签。
    • [field:tagurl/]:生成该tag标签的链接地址。
    • [field:tagname/]:显示该tag标签的名称。
  4. 完整示例

    假设你的列表项模板是这样的:

    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
        <!-- 在这里添加tag标签 -->
        <div class="tags">
            {dede:tag type='current'}
                <a href="[field:tagurl/]">[field:tagname/]</a>
            {/dede:tag}
        </div>
    </li>
    {/dede:list}

    效果:列表中的每一篇文章下方,都会显示它自己的tag标签,并且是可点击的链接。


使用SQL标签(更灵活,适用于复杂情况)

如果你的模板比较特殊,或者需要更复杂的逻辑,可以直接使用 dede:sql 标签进行数据库查询。

适用场景:与方法一类似,但当你需要自定义查询字段或进行更复杂处理时。

操作步骤

  1. 打开列表模板文件:同上。

  2. 在循环内部添加SQL标签代码

    {dede:sql sql='SELECT tag FROM dede_taglist WHERE aid = ~id~'}
        [field:tag/]
    {/dede:sql}

    注意:这个方法有一个缺点,它只能获取到tag的文本,而不能直接生成链接,你需要手动拼接URL。

  3. 改进版(能生成链接的SQL方法)

    {dede:sql sql='SELECT t.id, t.tagname FROM dede_tag t JOIN dede_taglist tl ON t.id = tl.tid WHERE tl.aid = ~id~'}
        <a href='/tags.php?/[field:tagname/]/'>[field:tagname/]</a>
    {/dede:sql}

    代码解释

    • sql='...':这里我们进行了JOIN查询,同时从 dede_tag 表和 dede_taglist 表中获取数据。
    • tl.aid = ~id~~id~ 是一个占位符,织梦会自动将其替换为当前文章的ID。
    • /tags.php?/[field:tagname/]/:这是织梦tag列表页的标准URL格式,请确保你的网站URL结构与此一致。
  4. 完整示例

    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
        <div class="tags">
            {dede:sql sql='SELECT t.tagname FROM dede_tag t JOIN dede_taglist tl ON t.id = tl.tid WHERE tl.aid = ~id~'}
                <a href='/tags.php?/[field:tagname/]/'>[field:tagname/]</a>
            {/dede:sql}
        </div>
    </li>
    {/dede:list}

使用自定义函数(高级用法,一劳永逸)

如果你的网站很多地方都需要调用文章的tag,或者希望有更统一的显示样式,可以创建一个自定义函数。

适用场景:全站统一调用文章tag,或者需要对tag进行复杂处理(如数量限制、样式美化等)。

操作步骤

  1. 创建自定义函数文件

    • 打开 /include/helpers/extend.helper.php 文件。
    • 在文件末尾的 ?> 之前,添加以下函数:
    /**
     * 获取指定文章的标签列表
     * @param int $aid 文章ID
     * @param string $style 链接样式,默认为 <a href='链接'>标签名</a>
     * @return string 标签HTML字符串
     */
    if (!function_exists('GetArticleTags'))
    {
        function GetArticleTags($aid, $style = '<a href=\'/tags.php?/[field:tagname/]/\'>[field:tagname/]</a>')
        {
            $tags = '';
            $dsql = new DedeSql(false);
            $dsql->SetQuery("Select tag From dede_taglist where aid='$aid'");
            $dsql->Execute('t');
            while($row = $dsql->GetArray('t'))
            {
                $tags .= str_replace('[field:tagname/]', $row['tag'], $style);
            }
            $dsql->Close();
            return $tags;
        }
    }
  2. 在模板中调用函数

    • 打开你的列表模板文件。
    • {dede:list} 循环内部,使用以下代码调用:
    {dede:list}
        <li>
            <a href="[field:arcurl/]">[field:title/]</a>
            <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
            <div class="tags">
                [field:id function=GetArticleTags(@me)/]
            </div>
        </li>
    {/dede:list}

    代码解释

    • [field:id function=GetArticleTags(@me)/]@me 会把当前字段的值(即文章ID aid)传递给 GetArticleTags 函数,函数执行后,返回拼接好的HTML标签字符串。

总结与建议

方法 优点 缺点 推荐度
自带标签 最简单、性能最好、官方支持 灵活性相对较低 ★★★★★
SQL标签 灵活,可自定义查询 代码稍复杂,容易出错,需要手动处理URL ★★★☆☆
自定义函数 最灵活、可复用、便于统一管理 需要修改PHP文件,对新手有一定门槛 ★★★★☆

对于绝大多数用户,强烈推荐使用【方法一】,它简单、高效且稳定,完全能满足日常需求,只有在方法一无法满足你的特殊要求时,再考虑方法二或方法三。

重要提示

  • 无论使用哪种方法,请确保你的文章已经成功添加了tag标签,如果没有tag,任何方法都调用不出来。
  • 修改模板文件后,请务必到织梦后台的【生成】->【更新HTML】中,重新生成你的列表页面,才能看到效果。
-- 展开阅读全文 --
头像
dede数据库读取配置文件在何处?
« 上一篇 今天
织梦CMS如何调用同级栏目?
下一篇 » 今天

相关文章

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

目录[+]