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

(图片来源网络,侵删)
适用场景:在文章列表页(如 list_article.htm)中,为每篇列表文章显示其对应的tag标签。
操作步骤:
-
打开你的列表模板文件: 找到并打开你需要添加tag标签的列表模板,通常是
/templets/default/list_article.htm或你自定义的模板文件。 -
在循环内部添加标签代码: 在
{dede:list}标签对内部,你希望显示tag标签的位置,添加以下代码:
(图片来源网络,侵删){dede:tag type='current'} <a href='[field:tagurl/]'>[field:tagname/]</a> {/dede:tag} -
代码解释:
{dede:tag type='current'}:这是核心。type='current'告诉织梦,我只获取当前正在循环的这篇列表文章的tag标签。[field:tagurl/]:生成该tag标签的链接地址。[field:tagname/]:显示该tag标签的名称。
-
完整示例:
假设你的列表项模板是这样的:
<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 标签进行数据库查询。
适用场景:与方法一类似,但当你需要自定义查询字段或进行更复杂处理时。
操作步骤:
-
打开列表模板文件:同上。
-
在循环内部添加SQL标签代码:
{dede:sql sql='SELECT tag FROM dede_taglist WHERE aid = ~id~'} [field:tag/] {/dede:sql}注意:这个方法有一个缺点,它只能获取到tag的文本,而不能直接生成链接,你需要手动拼接URL。
-
改进版(能生成链接的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结构与此一致。
-
完整示例:
<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进行复杂处理(如数量限制、样式美化等)。
操作步骤:
-
创建自定义函数文件:
- 打开
/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; } } - 打开
-
在模板中调用函数:
- 打开你的列表模板文件。
- 在
{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会把当前字段的值(即文章IDaid)传递给GetArticleTags函数,函数执行后,返回拼接好的HTML标签字符串。
总结与建议
| 方法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| 自带标签 | 最简单、性能最好、官方支持 | 灵活性相对较低 | ★★★★★ |
| SQL标签 | 灵活,可自定义查询 | 代码稍复杂,容易出错,需要手动处理URL | ★★★☆☆ |
| 自定义函数 | 最灵活、可复用、便于统一管理 | 需要修改PHP文件,对新手有一定门槛 | ★★★★☆ |
对于绝大多数用户,强烈推荐使用【方法一】,它简单、高效且稳定,完全能满足日常需求,只有在方法一无法满足你的特殊要求时,再考虑方法二或方法三。
重要提示:
- 无论使用哪种方法,请确保你的文章已经成功添加了tag标签,如果没有tag,任何方法都调用不出来。
- 修改模板文件后,请务必到织梦后台的【生成】->【更新HTML】中,重新生成你的列表页面,才能看到效果。
