修改DedeCMS调用Tag标签中文名称改为数字Tag标签ID

修改DedeCMS调用Tag标签中文名称改为数字Tag标签ID,第1张

概述织梦DedeCMS系统默认tag页面的链接地址是http://您的域名/tags.php?/tag名/这样的形式,而中文站的大多数tag名自然也是中文,这就会让地址栏的现实变得非常

织梦 Dedecms 系统默认 tag 页面的链接地址是 http://您的域名/Tags.PHP?/tag 名/这样的形式,而中文站的大多数 tag 名自然也是中文,这就会让地址栏的现实变得非常麻烦,因为中文在地址栏显示是会被 url 编码的,编码后会变得又臭又长...

把 tag 页面的链接改为数字 ID 调取的方式会变得非常方便。Dedecms 调用 tag 由中文 tag 名改为数字 tag ID 的方法,打开/include/taglib/tag.lib.PHP 文件搜索下面代码行:

$row['link'] = $cfg_CMSurl."/Tags.PHP?/".urlencode($row['keyword'])."/";

把它修改为下面代码:

$row['link'] = $cfg_CMSurl."/Tags/".urlencode($row['ID'])."/";

这样之后,tag 的页面链接就被简化成了/Tags.PHP?/1/的形式了,其中数字 1 代表当前 tag 的 ID。

这种目录式的连接形式对于 SEO 优化是有好处的,因为多数搜索引擎优化者认为目录本身的权重要高于 HTML 页面。不过,有的朋友担心物极必反,目录过多会被认为是过度优化,所以想改成以.HTML 借位的方式。那么请继续往下看。

Tag 标签静态化

Dedecms 调用 tag 由中文 tag 名改为数字 tag ID 并且以.HTML 结尾的方法:上面 *** 作以后,打开/include/arc.tagList.clss.PHP 查找下面语句:

$this->TagInfos = $this->dsql->Getone("Select * From `dede_tagindex` where tag like '{$this->Tag}' ");

将其修改为

$this->TagInfos = $this->dsql->Getone("Select * From `dede_tagindex` where ID like '{$this->Tag}' ");

打开/include/arc.tagList.class.PHP 查找下面语句

foreach($GLOBALS['PubFIElds'] as $k=>$v) $this->FIElds[$k] = $v;

在他下面添加以下代码

$s = $this->dsql->Getone("Select tag From `dede_tagindex` where ID = '{$this->Tag}' ");$this->FIElds['tag'] = $s['tag'];$this->FIElds['Title'] = $s['tag'];

然后查找下面语句

$this->TagInfos = $this->dsql->Getone("Select * From `dede_tagindex` where tag like '{$this->Tag}' ");

把它改成以下代码

$this->TagInfos = $this->dsql->Getone("Select * From `dede_tagindex` where ID like '{$this->Tag}' ");

到此这个文件改完了,保存一下。然后打开/include/helpers/archive.helper.PHP 找到下面代码

$query = "SELECT tag FROM `dede_tagList` WHERE aID='$aID' ";$dsql->Execute('tag',$query);while($row = $dsql->GetArray('tag')){$Tags .= ($Tags=='' ? $row['tag'] : ','.$row['tag']);}

把它改成

$query = "SELECT tID,tag FROM `dede_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='30' sort='new' getall='1'}<a target="_blank" href='link/]' rel="noopener noreferrer">[fIEld:tag /]</a>{/dede:tag}

参数说明

row:调用多少条

sort:排序方式 month,rand,week 分别为按月、随机。按周

getall:获取类型 0 为当前内容页TAG,1为获取全部TAG

内容页调用当前文章 tag

{dede:tag row='5' sort='new' getall='0'}<a target="_blank" href='link/]' rel="noopener noreferrer">[fIEld:tag /]</a>{/dede:tag}

首页和各种文章列表页调用文章对应的 tag 标签

{dede:arcList row='3' Titlelen='60'}<a target="_blank" href="link/]" rel="noopener noreferrer">[fIEld:ID function=GetTags(@me)/]</a>{/dede:arcList}

经过修改以后就不能用{dede:fIEld.Title/}来调用标签名了,因为这样调取出来的会是 tag 的 ID,正确的调用方式是

{dede:sql sql="select tag from dede_tagindex where ID=~Title~"}[fIEld:tag/]{/dede:sql}
总结

以上是内存溢出为你收集整理的修改DedeCMS调用Tag标签中文名称改为数字Tag标签ID全部内容,希望文章能够帮你解决修改DedeCMS调用Tag标签中文名称改为数字Tag标签ID所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/998114.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存