DedeCMS 织梦 Tag 纯静态调用实现
在 DedeCMS 织梦系统中,要实现 Tag 标签的纯静态调用,可以通过以下几种方法实现:

(图片来源网络,侵删)
使用 {dede:tag} 标签调用
这是最直接的方法,但默认情况下织梦的 tag 调用是动态的,要实现纯静态调用,需要做一些调整:
{dede:tag sort='hot' getall='0'}
<a href='[field:link/]'>[field:tagname/]</a>
{/dede:tag}
参数说明:
sort='hot'- 按热度排序,可选值有:month(月)、week(周)、hot(热)、rand(随机)getall='0'- 是否获取全部标签,0 为不获取全部
使用自定义函数实现纯静态调用
- 在
/include/common.func.php文件中添加以下函数:
function GetTags($aid)
{
global $dsql;
$tags = '';
$query = "SELECT tag FROM `dede_taglist` WHERE aid='$aid'";
$dsql->Execute('tag',$query);
while($row = $dsql->GetArray('tag'))
{
$tags .= ($tags=='' ? "<a href='/tags.php?/{$row['tag']}'>".$row['tag']."</a>" : ','."<a href='/tags.php?/{$row['tag']}'>".$row['tag']."</a>");
}
return $tags;
}
在模板中调用:
{dede:field.id function="GetTags(@me)/"}
使用自定义模型实现纯静态 Tag 调用
- 创建一个自定义模型字段,类型为"单行文本",用于存储标签
- 时,手动输入标签,用英文逗号分隔
- 在列表页或内容页模板中调用:
{dede:field.tags runphp='yes'}
$tags = explode(',', @me);
foreach($tags as $tag){
@me .= "<a href='/tags.php?/$tag'>$tag</a> ";
}
{/dede:field.tags}
使用缓存机制实现伪静态
- 修改
/include/arc.taglist.class.php文件,将动态链接改为伪静态 - 找到
GetList()方法,修改其中的链接生成部分:
// 原代码 $this->Fields['link'] = $GLOBALS['cfg_phpurl']."/tag.php?/".urlencode($this->Fields['tag'])."/"; // 修改为 $this->Fields['link'] = $GLOBALS['cfg_basehost']."/tags/".urlencode($this->Fields['tag'])."/";
- 在后台生成 HTML 时,选择"仅动态"或"生成所有HTML"
- 配置服务器伪静态规则(以 Apache 为例):
RewriteRule ^tags/(.*)/$ /tags.php?/$1/ [L]
注意事项
- 纯静态调用 Tag 标签后,需要重新生成相关页面才能看到效果
- 如果使用方法三,需要确保在发布内容时正确输入标签
- 对于大型网站,建议使用方法四的伪静态方式,既有利于 SEO,又能减轻服务器压力
方法可以根据您的具体需求选择使用,其中方法四是最推荐的纯静态解决方案。

(图片来源网络,侵删)

(图片来源网络,侵删)
