现在好多CMS系统都有TAGS标签这项功能,知名的DEDECMS也有,但是它的标签功能很差,不利于seo优化,同时也有很多问题,比如:当前页不存在上一页时,链接为“-1”的问题,还有出现“系统无此标签,可能已经移除”的问题。今天小编就教大家把标签伪静态(部分资料来源于网络),同时也修复了一些上述提到的BUG。
1.修改前台显示链接我们这里达到的效果就是使原来/tags.php?keywors更改为/tags/keywords.html。这里主要修改下调用的标签,在/include/taglib/tag.lib.php中,在87行找到1$row['link'] = $cfg_cmsurl."/tags?".urlencode($row['keyword']); 将其改为:1$row['link'] = $cfg_cmsurl."/tags/".urlencode($row['keyword']).".html";
2.修改分页代码部分我们需要修改include/arc.taglist.class.php,找到分页函数,将其替换为:001/**002* 获取动态的分页列表003*004* @access public005* @param int $list_len 列表宽度006* @param string $listitem 列表样式007* @return string008*/009function GetPageListDM($list_len,$listitem="info,index,end,pre,next,pageno")010{011$prepage="";012$nextpage="";013$prepagenum = $this->PageNo - 1;014$nextpagenum = $this->PageNo + 1;015if($list_len == "" || preg_match("/[^0-9]/", $list_len))016{017$list_len = 3;018}019$totalpage = $this->TotalPage;020if($totalpage <= 1 && $this->TotalResult > 0)021{022return "<span class="pageinfo">共1页/".$this->TotalResult."条</span>";023}024if($this->TotalResult == 0)025{026return "<span class="pageinfo">共0页/".$this->TotalResult."条</span>";027}028$maininfo = "<span class="pageinfo">共{$totalpage}页/".$this->TotalResult."条</span> ";029$purl = $this->GetCurUrl();030$basename = basename($purl);031$tmpname = explode('.', $basename);032033$purl = str_replace($basename, '', $purl).urlencode($this->Tag);034//var_dump($purl);exit;035//$purl .= "?/".urlencode($this->Tag);036037//获得上一页和下一页的链接038//if($this->PageNo != 1)
这是修正上一页为负数的问题039 if($this->PageNo != 1 && $this->PageNo != "")040{041$prepage.="<li><a href='".$purl."-$prepagenum'.html>上一页</a></li> ";042$indexpage="<li><a href='".$purl."-1.html'>首页</a></li> ";043}044else045{046$indexpage="<li><a>首页</a></li> ";047}048if($this->PageNo!=$totalpage && $totalpage>1)049{050$nextpage.="<li><a href='".$purl."-$nextpagenum.html'>下一页</a></li> ";051$endpage="<li><a href='".$purl."-$totalpage.html'>末页</a></li> ";052}053else054{055$endpage="<li><a>末页</a></li> ";056}057058//获得数字链接059$listdd="";060$total_list = $list_len * 2 + 1;061if($this->PageNo >= $total_list)062{063$j = $this->PageNo - $list_len;064$total_list = $this->PageNo + $list_len;065if($total_list > $totalpage)066{067$total_list = $totalpage;068}069}070else071{072$j=1;073if($total_list > $totalpage)074{075$total_list = $totalpage;076}077}078for($j; $j<=$total_list; $j++)079{080if($j == $this->PageNo)081{082$listdd.= "<li class="thisclass"><a>$j</a></li> ";083}084else085{086$listdd.="<li><a href='".$purl."-$j.html'>".$j."</a></li> ";087}088}089$plist = '';090if(preg_match('/info/i', $listitem))091{092$plist .= $maininfo.' ';093}094if(preg_match('/index/i', $listitem))095{096$plist .= $indexpage.' ';097}098if(preg_match('/pre/i', $listitem))099{100$plist .= $prepage.' ';101}102if(preg_match('/pageno/i', $listitem))103{104$plist .= $listdd.' ';105}106if(preg_match('/next/i', $listitem))107{108$plist .= $nextpage.' ';109}110if(preg_match('/end/i', $listitem))111{112$plist .= $endpage.' ';113}114return $plist;115}1163.
设置伪静态规则117118我们这里以iis7为例子,设置以下规则:119120Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com]121<?xml version="1.0" encoding="UTF-8"?>122<configuration>123<system.webServer>124<rewrite>125<rules>126<rule name="weather1" stopProcessing="true">127<match url="tags/([^-]+).html$" ignoreCase="true" />128<conditions logicalGrouping="MatchAll">129<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />130<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />131</conditions>132<action type="Rewrite" url="/tags.php?/{R:1}" appendQueryString="false" />133</rule>134<rule name="weather2" stopProcessing="true">135<match url="tags/([^-]+)-([0-9]+).html$" ignoreCase="true" />136<conditions logicalGrouping="MatchAll">137<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />138<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />139</conditions>140<action type="Rewrite" url="/tags.php?/{R:1}/{R:2}" appendQueryString="false" />141</rule>142</rules>143</rewrite>144</system.webServer>145</configuration>好了,至此就搞定了。