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

编程之家收集整理的这篇文章主要介绍了修改DedeCMS调用Tag标签中文名称改为数字Tag标签ID编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

织梦 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所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

相关文章

猜你在找的Dedecms相关文章

DedeCMS列表页/内容页如何调用顶级栏目ID的方法总结,使用dede顶级栏目id可以实现很多功能比如:在每个列表页调用不同的栏目图片(同一顶级栏目调用相同的图
我们用织梦做网站,有时候需要用php截取特定字符前面和后面的内容,可以用以下方法来实现。1、php截取特定字符后面的内容可以使用函数strripos,获取一
DedeCMS中是可以使用PHP的,常见的方法就是ifelse了,例如模板制作中,DedeCMS织梦判断当前字段是否有值有则显示无则不显示,实现的方法如下。示例一1
织梦DedeCMS列表页获取访客热搜排行榜文章的方法,方法比较简单只需要打开织梦/include/extend.func.php最后加上以下代码:170465897460ee63c2bbfe1_0000
很多人说,DeDecms是一款非常好用,非常棒的内容管理程序。但是如果DeDecms技术工程师针对用户体验和程序安全方面在用心点的话,相信使用的用户将更多。今
织梦在建站的时候也希望自己的文章能被评论,这样也可以给自己提出很多的意见,在首页也可以调用出评论,把织梦首页中的评论链接地址换成静态化的文件还要
用过wordpress的朋友都知道,wordpress有个功能就是调用标签的时候可以在每个标签的后面显示出当前标签所对应的文章数量。看上去很美观,而且每一个tag标签
经过测试貌似{dede:php}标签中不能直接使用其他普通标签例如:{dede:field.title/},{dede:global.cfg_webname/}但是我们可以通过其他方式来实现相应的功能