dede 内容页 tag标签调用

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

最常用、最推荐的方法(使用系统内置标签)

这是最标准、最简单的方法,直接使用 DedeCMS 提供的内置标签 {dede:tag} 即可。

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

在模板文件中添加代码

页模板文件,通常位于 /templets/default/article_article.htm,您希望标签显示的位置(比如文章标题下方、正文内容下方等)添加以下代码:

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

代码解释

  • {dede:tag} ... {/dede:tag}:这是循环标签,会为当前文章的每一个标签都执行一次内部的代码。
  • [field:link/]:这是标签的链接地址,指向标签列表页。
  • [field:tag /]:这是标签的名称本身。

效果展示

假设一篇文章有 "织梦CMS"、"网页开发"、"PHP" 三个标签,那么使用上面的代码,最终生成的 HTML 会是:

<a href='/tags.php?/zhimengcms/'>织梦CMS</a>
<a href='/tags.php?/wangyankaifa/'>网页开发</a>
<a href='/tags.php?/php/'>PHP</a>

样式美化(推荐)

为了让标签看起来更美观,通常我们会给它们添加一些样式,比如背景色、内边距、外边距等。

方法 A:直接在标签里加 class

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

然后在您的 CSS 文件(如 /templets/default/style/dedecms.css)中定义 .tag-item 的样式:

.tag-item {
    display: inline-block; /* 让 a 标签可以设置宽高和内边距 */
    padding: 2px 8px;
    margin: 0 5px 5px 0;
    background-color: #f0f0f0;
    color: #333;
    border-radius: 3px;
    text-decoration: none;
    transition: background-color 0.3s;
}
.tag-item:hover {
    background-color: #007bff;
    color: #fff;
}

方法 B:使用分隔符

如果您希望标签之间用逗号或竖线隔开,而不是每个都独立成 a 标签,可以使用 separator 属性。

{dede:tag sort='hot' getall='0'}
    [field:tag/]
    {dede:tag}
        <a href='[field:link/]'>[field:tag/]</a>
    {/dede:tag}
{/dede:tag}

注意:上面的嵌套写法是错误的,{dede:tag} 本身不支持嵌套,正确的做法是使用 sortgetall 等属性来控制输出,然后用 或 作为分隔符。

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

正确的分隔符用法:

{dede:tag sort='rand' getall='1'}
    <a href='[field:link/]'>[field:tag/]</a> {dede:tag}
{/dede:tag}

这会在每个标签链接后面自动加上一个空格 {dede:tag},如果您需要其他分隔符,可以通过修改 include/helpers/archive.helper.php 文件来实现,但通常直接用 CSS 来控制间距更简单。


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

当内置标签无法满足特殊需求时,可以直接使用 DedeCMS 的 GetTags() 函数配合自定义SQL来获取标签。

在模板文件中添加代码

article_article.htm 中,在 {dede:field.body/} 之后,</article> 标签之前添加如下代码:

{dede:sql sql='Select * from dede_archives where id=~id~'}
    {dede:tag row='50' sort='hot' getall='1'}
        <a href='[field:link/]'>[field:tag/]</a>
    {/dede:tag}
{/dede:sql}

注意~id~ 是 DedeCMS 模板中的特殊变量,代表当前文章的 ID,这个方法虽然能用,但不如方法一直接和高效,不推荐常规使用。


使用PHP代码调用(功能最强大)

如果您需要对标签进行非常复杂的处理(为不同的标签应用不同的样式或链接到不同的页面),可以直接在模板中嵌入 PHP 代码。

修改模板文件

打开 article_article.htm,在 {dede:field.body/} 之后添加以下代码:

<?php
    $tags = GetTags(@me);
    $tags = str_replace(',', ' ', $tags); // 将逗号替换为空格,作为分隔符
    if($tags){
        echo "<div class='article-tags'>标签:".$tags."</div>";
    }
?>

代码解释

  • <?php ... ?>:PHP 代码的起始和结束标记。
  • GetTags(@me):这是 DedeCMS 的核心函数,用于获取当前文章的标签。@me 是传递给函数的当前文章内容(在这里其实传的是ID,函数内部会处理)。
  • str_replace(',', ' ', $tags):将获取到的标签字符串(格式如 "tag1,tag2,tag3")中的逗号替换成空格。
  • echo ...:输出处理后的标签。

效果与问题

这种方法获取到的是纯文本标签,不是链接,如果您需要将它们变成链接,需要自己编写更复杂的逻辑来分割标签并拼接URL,比较麻烦,此方法仅适用于某些特殊场景,一般不推荐用来生成标签链接。


总结与对比

方法 优点 缺点 推荐度
内置标签 代码最简单、最标准、最安全,官方推荐,不易出错。 灵活性相对较低。 ★★★★★ (强烈推荐)
SQL查询 相对灵活。 代码稍复杂,性能略差于内置标签,可读性不高。 ★★☆☆☆ (不推荐)
PHP代码 功能最强大,可以实现任何自定义逻辑。 代码复杂,容易出错,破坏模板的简洁性,对PHP有一定要求。 ★☆☆☆☆ (仅用于特殊需求)

最终建议

直接使用方法一,它完美地平衡了简单性、稳定性和功能性,对于绝大多数网站来说,{dede:tag} 标签已经足够强大。

额外提示:如果您的标签没有显示出来,请检查以下几点:

  1. 发布文章时,是否在“标签”文本框中输入了标签,并用英文逗号隔开(织梦CMS,网页开发)。
  2. 您使用的模板文件是否正确修改了。
  3. 修改模板后,是否清除了网站缓存(在 DedeCMS 后台 > 系统 > 站点清理缓存)。
-- 展开阅读全文 --
头像
c语言 struct union
« 上一篇 2025-12-23
dedeampz安装织梦软件
下一篇 » 2025-12-23

相关文章

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

目录[+]