美文网首页
dedecms tag标签带链接及url优化

dedecms tag标签带链接及url优化

作者: yS1RxQ | 来源:发表于2019-07-05 16:06 被阅读0次

先说dedecms默认tag的问题:

1、dedecms 默认添加的tag标签是不带链接;

2、dedecms tag添加链接之后,默认URL是tags.php?/关键词/。这样有个问题是链接地址带有中文,转码之后会有一串乱码格式,会显得很长。我们需要对url进行优化处理。

第一,先来解决tag不带链接的问题。

先在文章模板调用tag之后,语法格式:{dede:field.tags/},这样前台会出来标签:

tag标签

这样出来后,tag标签是不能点击的。需要改一个代码:在include/helpers/archive.helper.php 文件中修改以下代码:

$tags .= ($tags=='' ? $row['tag'] : ','.$row['tag']); 

改成如下:

$tags .= ($tags=='' ? '<a href=/tags.php?'.$row['tag'].' target=_blank>'.$row['tag'].'</a>': ','.'<a href=/tags.php?'.$row['tag'].' target=_blank>'.$row['tag'].'</a>');

以上修改,其实就是手动添加一个a链接而已。$row['tag']是tag的关键词名称。

这样出来的链接地址是:http://so.baidu.com/tags.php?百度推广

因为带有中文,这样的URL结构不是我们想要的。这个后面再说。为了保持统一,还有一个处需要修改:

include/taglib/tag.lib.php文件中的链接形式修改:如下

tag修改

以上要改成如下格式:

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

这样修改后,最终看到的url基本上就是:

so.baidu.com/tags.php?搜索推广。

第二,解决url的问题。

上面的有2个问题,一是含有中文,二是含有动态参数。

有2个解决方法,一是启用伪静态(Apache 或者 iis需要分开设置)规则,对url进行重写;另一种是继续用动态,把中文改成id。

即最终有2种格式选择:

1)so.baidu.com/tags.html、so.baidu.com/tags/关键词.html  (这里还涉及到关键词改id)

2)so.baidu.com/tags.php、so.baidu.com/tags.php?id

经测试,开启伪静态后,服务器压力很大,于是放弃方法1。这里说说方法2的问题。

在上面url处理之后,只需要把关键词替换中id即可。

有2处需要修改:把如下代码的 tag改成 id

大量

taglib.php改成:

把原来的keyword改成id。

还有一处把helper里的archive.helper.php改成如下:

id修改

这样最终的效果展示连接是:http://so.baidu.com/tags.php?12

但会发现这样子,标题出来的是 id数字,而不是tag名称,还需要做最后一步,在include/arc.taglist.class.php 中做全局设置之后添加以下代码:

$s = $this->dsql->GetOne("Select tag From `#@__tagindex` where id = '{$this->Tag}' ");

$this->Fields['tag'] = $s['tag'];

$this->Fields['title'] = $s['tag'];

这样设置之后,最终的展示效果为:

标签首页:http://so.baidu.com/tags.php

标签列表页:http://so.baidu.com/tags.php?10

以上。

相关文章

网友评论

      本文标题:dedecms tag标签带链接及url优化

      本文链接:https://www.haomeiwen.com/subject/qxashctx.html