dede tag纯静态调用如何实现?

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

DedeCMS 织梦 Tag 纯静态调用实现

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

dede 织梦 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 为不获取全部

使用自定义函数实现纯静态调用

  1. /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 调用

  1. 创建一个自定义模型字段,类型为"单行文本",用于存储标签
  2. 时,手动输入标签,用英文逗号分隔
  3. 在列表页或内容页模板中调用:
{dede:field.tags runphp='yes'}
    $tags = explode(',', @me);
    foreach($tags as $tag){
        @me .= "<a href='/tags.php?/$tag'>$tag</a> ";
    }
{/dede:field.tags}

使用缓存机制实现伪静态

  1. 修改 /include/arc.taglist.class.php 文件,将动态链接改为伪静态
  2. 找到 GetList() 方法,修改其中的链接生成部分:
// 原代码
$this->Fields['link'] = $GLOBALS['cfg_phpurl']."/tag.php?/".urlencode($this->Fields['tag'])."/";
// 修改为
$this->Fields['link'] = $GLOBALS['cfg_basehost']."/tags/".urlencode($this->Fields['tag'])."/";
  1. 在后台生成 HTML 时,选择"仅动态"或"生成所有HTML"
  2. 配置服务器伪静态规则(以 Apache 为例):
RewriteRule ^tags/(.*)/$ /tags.php?/$1/ [L]

注意事项

  1. 纯静态调用 Tag 标签后,需要重新生成相关页面才能看到效果
  2. 如果使用方法三,需要确保在发布内容时正确输入标签
  3. 对于大型网站,建议使用方法四的伪静态方式,既有利于 SEO,又能减轻服务器压力

方法可以根据您的具体需求选择使用,其中方法四是最推荐的纯静态解决方案。

dede 织梦 tag 纯静态调用 实现
(图片来源网络,侵删)
dede 织梦 tag 纯静态调用 实现
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
为何C程序必须从main函数开始执行?
« 上一篇 11-30
C语言中int、float、double的区别与选择?
下一篇 » 11-30

相关文章

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

目录[+]