美文网首页
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