DedeCMS织梦TAG的URL替换成ID

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行找到

1
$row[‘link’] = c f g c m s u r l ‘ . ‘ " / t a g s . p h p ? / " . u r l e n c o d e ( cfg_cmsurl`.` "/tags.php?/".urlencode( cfgcmsurl."/tags.php?/".urlencode(row[‘keyword’])."/";
将其改成

1
$row[‘link’] = c f g c m s u r l . " / t a g s / " . u r l e n c o d e ( cfg_cmsurl."/tags/".urlencode( cfgcmsurl."/tags/".urlencode(row[‘id’])."/";
这样就把每个动态的tag标签生成了如:

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

打开/include/arc.taglist.clss.php,找到(下面出现的分隔符请去掉)
1
$this->TagInfos = KaTeX parse error: Expected 'EOF', got '#' at position 36: …Select * From `#̲分隔符@__tagindex`…this->Tag}’ ");
修改为

$this->TagInfos = KaTeX parse error: Expected 'EOF', got '#' at position 36: …Select * From `#̲分隔符@__tagindex`…this->Tag}’ ");
由于TAG替换成了ID,原有的调用方法有些变化,访问的tag列表如果用{dede:field.title/}调用的是ID,这不友好,下面是修改及调用方法

打开/include/arc.taglist.class.php,找到
1
//设置一些全局参数的值
2
foreach($GLOBALS[‘PubFields’] as k = > k=> k=>v) t h i s − > F i e l d s [ this->Fields[ this>Fields[k] = $v;
下面增加

1
//by dede58.com
2
$s = KaTeX parse error: Expected 'EOF', got '#' at position 38: …lect tag From `#̲分隔符@__tagindex`…this->Tag}’ ");
3
$this->Fields[‘tag’] = $s[‘tag’];
4
$this->Fields[‘title’] = $s[‘tag’];
5
//end
往下继续找到

1
$this->TagInfos = KaTeX parse error: Expected 'EOF', got '#' at position 36: …Select * From `#̲分隔符@__tagindex`…this->Tag}’ ");
修改为

1
$this->TagInfos = KaTeX parse error: Expected 'EOF', got '#' at position 36: …Select * From `#̲分隔符@__tagindex`…this->Tag}’ ");
一般在站内都是用GetTags()函数调用,但这个函数并没有对应的ID。查看了一下taglist表,发现用的是tid。

[field:id function=GetTags(@me)/],调出来的会是/tags//
打开/include/helpers/archive.helper.php,找到
1
KaTeX parse error: Expected 'EOF', got '#' at position 27: …LECT tag FROM `#̲分隔符@__taglist` …aid’ ";
2
d s q l − > E x e c u t e ( ′ t a g ′ , dsql->Execute('tag', dsql>Execute(tag,query);
3
while($row = $dsql->GetArray(‘tag’))
4
{
5
t a g s . = ( tags .= ( tags.=(tags==’’ ? r o w [ ′ t a g ′ ] : ′ , ′ . row['tag'] : ','. row[tag]:,.row[‘tag’]);
6
}
这里增加了绝对路径的修改。

1
KaTeX parse error: Expected 'EOF', got '#' at position 31: … tid,tag FROM `#̲分隔符@__taglist` …aid’ “;
2
d s q l − > E x e c u t e ( ′ t i d ′ , dsql->Execute('tid', dsql>Execute(tid,query);
3
while($row = $dsql->GetArray(‘tid’))
4
{
5
t a g s . = " < a h r e f = ′ " . tags .= "<a href='". tags.="<ahref=".GLOBALS[‘cfg_basehost’].”/tags/".urlencode( r o w [ ′ t i d ′ ] ) . " / ′ > " . row['tid'])."/'>". row[tid])."/>".row[‘tag’]."";
6
}
调用全站TAG标签带链接
1
{dede:tag row=‘100’ sort=‘new’ getall=‘1’}
2
[field:tag /]
3
{/dede:tag}
有几个参数需要了解

1
row:调用条数
2
sort:排序方式 month,rand,week
3
getall:获取类型 0 为当前内容页TAG标记,1为获取全部TAG标记
调用当前内容页TAG标签带链接
1
{dede:tag row=‘10’ sort=‘new’ getall=‘0’}
2
[field:tag /]
3
{/dede:tag}
首页、列表页调用文章TAG标签带链接
1
{dede:arclist row=‘10’ titlelen=‘80’}
2
[field:id function=GetTags(@me)/]
3
{/dede:arclist}
TAG列表页也是用的上述方法。

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值