织梦dedecms系统tags伪静态完美解决办法

用dedecms 系统做网站的朋友特别多,dedecms功能强大,除了安全是一个问题外,tags标签静态化问题困扰很多朋友,湖哥为了解决一个网站的tags标签静态化问题找了很多文章,也试了很多次,终于在今天解决了这个问题: 
 1.dedecms版本  5.7 sp1 GBK 
 2.服务器:windows 2008 iis7 
 话不多说,开始! 
 目标:我们要使原来tags.php?/3qshop/  变动为/tags/3qshop.html 并且为伪静态,为什么要为伪静态?因为我们的关键词(tags)太多,比真正静态节省空间。 
 那么我们要做如下工作,记得一步一步来哦! 
 第1步: 
 首先找到/include/taglib/tag.lib.php中,在87行找到 
$row['link'] = $cfg_cmsurl."/tags?".urlencode($row['keyword']); 
 将其修改为: 
$row['link'] = $cfg_cmsurl."/tags/".urlencode($row['keyword']).".html"; 
 第2步: 
 修改分页代码部分 
 修改include/arc.taglist.class.php,找到分页函数,将其更换为: 
 注意:从429行  ---->541行  用以下内容替换! 
 (提示:网上有文章中讲的以下代码中的"pageinfo"是错误的,应该为\"pageinfo\",不然会有错误提示哦!已经代码测试OK!) 
/** * 获取动态的分页列表 

* @access public 
* @param int $list_len 列表宽度 
* @param string $listitem 列表样式 
* @return string 
*/ 
function GetPageListDM($list_len,$listitem="info,index,end,pre,next,pageno") 

$prepage=""; 
$nextpage=""; 
$prepagenum = $this->PageNo - 1; 
$nextpagenum = $this->PageNo + 1; 
if($list_len == "" || preg_match("/[^0-9]/",$list_len)) 

$list_len = 3; 

$totalpage = $this->TotalPage; 
if($totalpage <= 1 && $this->TotalResult > 0) 

return "
if($this->TotalResult == 0) 

return "
$maininfo = " $purl = $this->GetCurUrl(); 
$basename = basename($purl); 
$tmpname = explode('.',$basename); 

$purl = str_replace($basename,'',$purl).urlencode($this->Tag); 
//var_dump($purl);exit; 
//$purl .= "?/".urlencode($this->Tag); 

//获得上一页和下一页的链接 
if($this->PageNo != 1) 

$prepage.=" $indexpage="
else 

$indexpage="
if($this->PageNo!=$totalpage && $totalpage>1) 

$nextpage.=" $endpage="
else 

$endpage="

//获得数字链接 
$listdd=""; 
$total_list = $list_len * 2 + 1; 
if($this->PageNo >= $total_list) 

$j = $this->PageNo - $list_len; 
$total_list = $this->PageNo + $list_len; 
if($total_list > $totalpage) 

$total_list = $totalpage; 


else 

$j=1; 
if($total_list > $totalpage) 

$total_list = $totalpage; 


for($j; $j<=$total_list; $j++) 

if($j == $this->PageNo) 

$listdd.= "

  • else 

    $listdd.="

    $plist = ''; 
    if(preg_match('/info/i',$listitem)) 

    $plist .= $maininfo.' '; 

    if(preg_match('/index/i',$listitem)) 

    $plist .= $indexpage.' '; 

    if(preg_match('/pre/i',$listitem)) 

    $plist .= $prepage.' '; 

    if(preg_match('/pageno/i',$listitem)) 

    $plist .= $listdd.' '; 

    if(preg_match('/next/i',$listitem)) 

    $plist .= $nextpage.' '; 

    if(preg_match('/end/i',$listitem)) 

    $plist .= $endpage.' '; 

    return $plist; 




    第3步: 
      
     设置伪静态规则: 
     把以上内容保存为:web.config  放到网站根目录! 
     第4步: 
     生成文章,浏览!大功告成?错,有可能你会出现以下错误! 
     系统无此标签,可能已经移除! 
     你还可以尝试通过搜索程序去搜索这个关键字:前往搜索>> 
     如果你的浏览器没反应,请点击这里... 
     解决办法如下: 
     在网站根目录下找到tags.php 此文件,将以下代码替换掉: 
    $tag = trim($_SERVER['QUERY_STRING']); 
     换成 
    $tag = strtolower(trim($_SERVER['QUERY_STRING'])); 
     出现这个问题的原因是IIS伪静态中文转码为UTF8,解决方法就是在tags.php中加入判断UTF8编码的语句,如果是则转换为GBK,这样就可以解决了 
     方法: 
     1.把以下代码加入到根目录下tags.php中的18行下面,也就是if(isset($tags[2])) $PageNo = intval($tags[2]);下面哦: 
    function is_utf8($tag) 

    if (preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$tag) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$tag) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$tag) == true) 

    return true; 

    else 

    return false; 


     2.在第25行上面加入以下语句,也就是在$tag = FilterSearch(urldecode($tag));上面加入,记得这里是上面哦! 
    if(is_utf8($tag)==1) { $tag = iconv("utf-8","gbk",$tag); } 
     这个作用就是调用上面的函数判断编码 如果是 utf8则转为gbk; 
     到此,tags伪静态问题全面完美解决!
  •  
     
     

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

    相关推荐


    文章浏览阅读483次。dedecms织梦频道模板中调用栏目分类并排序:{dede:channelartlist}栏目排序:{dede:global runphp='yes' name=itemindex}@me;{/dede:global}<a href=”{dede:field name='typeurl' /}”>点击进入{dede:field name='typename' /}列表>></a>{/dede:channelartlist}织梦channel标签.._织梦 调取排序
    文章浏览阅读284次。我们在用织梦建站的过程中,难免会遇到各种问题,有时候由于主机或者服务器无法支持某些函数或者不够稳定等,需要更换空间或服务器。这个时候我们如何完整地把织梦网站数据转移到新的空间或者服务器上,这是织梦站长必须掌握的技能之一。当然,网站搬家来说,方法是很多的,但是万变不离其宗,说到底就是程序文件和数据文件的备份转移。织梦DedeCMS网站转移主机或者服务器时最常见的转移方式,来说明一下网站搬家的过程。首先是织梦DedeCMS网站程序的数据库备份,方法是进入织梦Dedecms的后台,系统–> 数据库备_dede后台转主机需要修改哪些哪些东西
    文章浏览阅读152次。seo专题是seo优化必不可少的一环,对于网站优化的意义重大,因为一些用内容页做不上去的关键词都可以尝试用专题形式来做。相对于一般性的网页来说,专题页面具有内容丰富性、多样性、用户体验好的特征,百度官方也在最近说了专题优化的好处。但是,专题对seo是好的,但是对于做专题的人来说却并不好做,因为他非常的繁琐和耗费功夫。从原理来说,一般性的网页(栏目、内容页)都是通过统一的模板进行映射的网页,这些网页的构成都非常的简单,虽然有些可以利用内容模型和自定义列表进行参数提取,这样让内容非常的丰富,但是这个丰富_织梦专题
    文章浏览阅读142次。在Dedecms中,在列表页调用文章摘要的方法主要有:1:[field:info /]2:[field:description /]3:[field:info function="cn_substr(@me,字符数)"/]4:[field:description function="cn_substr(@me,字符数)"/]第1、2种方法是直接调用文章摘要,在调用的字数问题上,当使用[field:info /]时,可以在{dede:arclist infolen=' ' }{/dede:arcli_dede 内容摘要 字数
    文章浏览阅读234次。织梦DedeCMS文章内容发布时可以选择“头条”、“推荐”、“特荐”等文档属性,我们可以利用这些条件加一个判断的标签,然后给文章列表加一个推荐的印戳图标,这样大大提高了页面的友好程度。文字推荐方法:[field:flag runphp='yes'] if(stristr(@me,"c")) @me = "[推荐]";else @me = '';[/field:flag][field:flag runphp='yes'] if(stristr(@me,"a")) @me = "[特荐]";else _dede 列表页 调用推荐文章
    文章浏览阅读701次。虽然织梦DedeCMS因为安全问题被人所诟病,但瑕不掩瑜,无论从用户群数量还是时间等各方面,织梦DedeCMS都是国内排名前几的CMS建站程序。如果你想学习CMS的二次开发,织梦DedeCMS是必须需要研究的。对织梦DedeCMS的二次开发来说,了解织梦的目录构成、文件、函数则是必备的功课。今天整理一篇关于Dedecms目录介绍的文章,对织梦DedeCMS的目录结构、核心文件、模板文件等做一个简单的介绍。为使版面美观,就借用下php程序的注释,//符合后面为该文件的作用。由于版本的原因,有一_织梦默认模板目录
    文章浏览阅读375次。dede是目前cms中使用最广泛的,也是中小网站中seo优化最好的(默认模板而言),所以很多的企业都会选择采用dede作为做站的首选,因此学seo了解些织梦seo优化的技巧和方面是有必要的。焦大曾经做过多年的织梦seo优化,以个人经验所知,觉得以下几个方面的seo最为重要:第一,url设置与栏目分开。我们看到目前90%以上的dede建站者的文章url都是类似域名/栏目名/文章ID,或者域名/a/日期/栏目/文章ID,其中第一种在企业站最常见,第二种在新闻资讯网站中常见。个人觉得这么设置会出._dede seo
    文章浏览阅读189次。dedecms的arclist循环中,判断如果是第一个li,则添加固定的css,否则不加写法如下: 1 2 3 4 {dede:arclist row=4 flag='p'} <li [field:global name=autoindex runphp="yes"](@me==1)? @me="class=on":@me="";[/field:global]>[field:global.autoindex/]<.._dedecms arclist
    文章浏览阅读227次。字段要想在任何位置任何模版中调用,需要特殊设置。自定义字段自定义的织梦如何添加自定义字段的频道模型,这里以图片集频道举例注意:创建字段可以在列表的底层模板中获得”这个必须勾选在字段中添加(价格属性)在基本设置里》列表附加调用)二,调用自定义调用{dede:list pagesize='5' addfields='jiage' channelid='2'}<P>标题:[field:title/]</P><P>价格:[field:jiage/]&_织梦列表调用自定义字段
    本教程操作系统:Windows10系统、DedeCMS 5.7.109版本、Dell G3电脑。 织梦CMS是一个使用PHP语言开发的网站建设管理系统,因此在安装过程中需要安装数据库以存储网站内容和数据。
    在Dedecms织梦列表页中是肯定要使用pagelist标签的,但是有的时候也会因为一些css格式的问题会出现排列顺序的问题,所以也要知道怎么样修改pagelist标签?
    今天分享织梦网站怎么搬家,个人感觉织梦的搬家比其他的程序的都简单。1、网站备份登录织梦后台,【系统】-【数据库备份/还原】-【提交】,织梦程序开始自动备份数据库,等待即可。
    织梦(dede)程序不安全是公认的,同样是建站,使用织梦程序被黑的风险更大,所以,一些安全设置是非常有必要的。织梦网站安全设置的4个主要操作
    使用xemu、爱站工具包、尖叫青蛙等制作网站地图,每次生成sitemap还需要再上传到服务器,还是比较麻烦的,不过有些网站程序可以通过插件完成网站地图的自动更新,比如wordpress。但是织梦一直都不行,今天就用插件+代
    分享织梦自动生成网站sitemap,但是需要安装插件,今天分享,织梦如何不使用插件,制作网站xml地图。
    织梦自定义表单没有全选/取消全选功能,有时候想要全选全,需要一个一个选择比较麻烦,如果网站有大量的恶意留言,想要删除更麻烦。虽然可以使用sql命令删除恶意留言,但不是很灵活,今天就给织梦自定义表单添加全选
    前几天百度公开课说了,api推送的优先级比较高,所以在没有快速收录的情况下,api提交必须要有,那么织梦要如何实现api主动推送呢?
    dede定时主动推送,虽然也很方便,但只能固定时间推送,实时性不高,今天小编分享如何发布文章后实时api推送至百度?
    dede当前位置标签代码方法一:{dede:fieldname='position'/}dede当前位置标签代码方法二:{dede:fieldname='position'runphp='yes'}$a=mb_strlen(@me);//计算字符串的长度@me=cn_substr(@me,$a-2,-1);//截取字符{/dede:field}(这是去掉“去掉>”得得方法)dede当前位置
    织梦DEDECMS文章、栏目页获取当前页面顶级栏目名称的方法在用织梦做一些项目时,时常会碰到需要在当前页面调用顶级栏目名称的时候,织梦默认{dede:fieldname='typename'/}可以获取当前栏目页上一级栏目的名称,而不是当前栏目顶级栏目名称。下面拓展出一个方法来实现这个效果: 方