• 全国400电话网上服务平台
    强大号码库资源任选,方便,快捷,快速开通。
    咨询热线:400-1100-266  

    DedeCMS织梦TAG的URL替换成ID
    POST TIME:2021-05-23 01:46

    DedeCMS V5.7中的TAG标签的URL一般是

    http://域名/tags.php?/%B0%D9%B6%C8%BF%EC%D5%D5/

           做成TAG伪静态修改参考文章《DedeCMS实现TAG伪静态(万网虚拟主机)》,中文字符的URL一样能被百度和谷歌识别,但介于中文URL路径过长可以替换为该TAG的ID。

    打开/include/taglib/tag.lib.php

            在差不多87行找到

    $row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['keyword'])."/";

           将其改成

    $row['link'] = $cfg_cmsurl."/tags/".urlencode($row['id'])."/";

           这样就把每个动态的tag标签生成了如:

    http://域名/tags/12/

           很多人设计TAG标签URL后面有“.html的”后缀,其实直接用斜杠“/”更好,代表这是一个目录。

    打开/include/arc.taglist.clss.php,找到(下面出现的分隔符请去掉)

    $this->TagInfos = $this->dsql->GetOne("Select * From `#分隔符@__tagindex` where tag like '{$this->Tag}' ");

           修改为

    $this->TagInfos = $this->dsql->GetOne("Select * From `#分隔符@__tagindex` where id like '{$this->Tag}' ");

           由于TAG替换成了ID,原有的调用方法有些变化,访问的tag列表如果用{dede:field.title/}调用的是ID,这不友好,下面是修改及调用方法

    打开/include/arc.taglist.class.php,找到

    //设置一些全局参数的值
    foreach($GLOBALS['PubFields'] as $k=>$v) $this->Fields[$k] = $v;

           下面增加

    //by dede58.com
    $s = $this->dsql->GetOne("Select tag From `#分隔符@__tagindex` where id = '{$this->Tag}' ");
    $this->Fields['tag'] = $s['tag'];
    $this->Fields['title'] = $s['tag'];
    //end

           往下继续找到

    $this->TagInfos = $this->dsql->GetOne("Select * From `#分隔符@__tagindex` where tag like '{$this->Tag}' ");

           修改为

    $this->TagInfos = $this->dsql->GetOne("Select * From `#分隔符@__tagindex` where id like '{$this->Tag}' ");

           一般在站内都是用GetTags()函数调用,但这个函数并没有对应的ID。查看了一下taglist表,发现用的是tid。

    [field:id function=GetTags(@me)/],调出来的会是/tags//

    打开/include/helpers/archive.helper.php,找到

    $query = "SELECT tag FROM `#分隔符@__taglist` WHERE aid='$aid' ";
    $dsql->Execute('tag',$query);
    while($row = $dsql->GetArray('tag'))
    {
       $tags .= ($tags=='' ? $row['tag'] : ','.$row['tag']);
    }

           这里增加了绝对路径的修改。

    $query = "SELECT tid,tag FROM `#分隔符@__taglist` WHERE aid='$aid' ";
    $dsql->Execute('tid',$query);
    while($row = $dsql->GetArray('tid'))
    {
       $tags .= "<a href='".$GLOBALS['cfg_basehost']."/tags/".urlencode($row['tid'])."/'>".$row['tag']."</a>";
    }

    调用全站TAG标签带链接

    {dede:tag row='100' sort='new' getall='1'}
     <a target="_blank" href='[field:link/]'>[field:tag /]</a>
    {/dede:tag}

           有几个参数需要了解

    row:调用条数
    sort:排序方式 month,rand,week
    getall:获取类型 0 为当前内容页TAG标记,1为获取全部TAG标记

    调用当前内容页TAG标签带链接

    {dede:tag row='10' sort='new' getall='0'}
    <a target="_blank" href='[field:link/]'>[field:tag /]</a>
    {/dede:tag}

    首页、列表页调用文章TAG标签带链接

    {dede:arclist row='10' titlelen='80'}
     <a target="_blank" href="[field:link/]">[field:id function=GetTags(@me)/]</a>
    {/dede:arclist}

           TAG列表页也是用的上述方法。

    TAG详情页调用TAG标签

           不能直接用{dede:field.title/}调用TAG标签了,这时调出来的是该TAG的ID,需要用SQL的方法调用,下面的橙色表前缀请自行更换。

    {dede:sql sql="select tag from #分隔符@__tagindex where id=~title~"}[field:tag/]{/dede:sql}

    
    关于我们 | 付款方式 | 建站知识 | 增值服务 | 网站模板
    Copyright © 2003-2016
    时间:9:00-21:00 (节假日不休)
    版权所有:巨人网络(扬州)科技有限公司
    总部地址:江苏省信息产业基地11号楼四层
    《增值电信业务经营许可证》 苏B2-20120278
    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信

    微信号已复制,请打开微信添加咨询详情!