发布时间:2022-03-30 文章分类:Dedecms 教程 投稿人:樱花 字号: 默认 | | 超大 打印
现在好多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 public
005	* @param int $list_len 列表宽度
006	* @param string $listitem 列表样式
007	* @return string
008	*/
009	function 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;
015	if($list_len == "" || preg_match("/[^0-9]/", $list_len))
016	{
017	$list_len = 3;
018	}
019	$totalpage = $this->TotalPage;
020	if($totalpage <= 1 && $this->TotalResult > 0)
021	{
022	return "<span class=\"pageinfo\">共1页/".$this->TotalResult."条</span>";
023	}
024	if($this->TotalResult == 0)
025	{
026	return "<span class=\"pageinfo\">共0页/".$this->TotalResult."条</span>";
027	}
028	$maininfo = "<span class=\"pageinfo\">共{$totalpage}页/".$this->TotalResult."条</span>\r\n";
029	$purl = $this->GetCurUrl();
030	$basename = basename($purl);
031	$tmpname = explode('.', $basename);
032	
033	$purl = str_replace($basename, '', $purl).urlencode($this->Tag);
034	//var_dump($purl);exit;
035	//$purl .= "?/".urlencode($this->Tag);
036	
037	//获得上一页和下一页的链接
038	//if($this->PageNo != 1) 这是修正上一页为负数的问题
039	        if($this->PageNo != 1 && $this->PageNo != "")
040	{
041	$prepage.="<li><a href='".$purl."-$prepagenum'.html>上一页</a></li>\r\n";
042	$indexpage="<li><a href='".$purl."-1.html'>首页</a></li>\r\n";
043	}
044	else
045	{
046	$indexpage="<li><a>首页</a></li>\r\n";
047	}
048	if($this->PageNo!=$totalpage && $totalpage>1)
049	{
050	$nextpage.="<li><a href='".$purl."-$nextpagenum.html'>下一页</a></li>\r\n";
051	$endpage="<li><a href='".$purl."-$totalpage.html'>末页</a></li>\r\n";
052	}
053	else
054	{
055	$endpage="<li><a>末页</a></li>\r\n";
056	}
057	
058	//获得数字链接
059	$listdd="";
060	$total_list = $list_len * 2 + 1;
061	if($this->PageNo >= $total_list)
062	{
063	$j = $this->PageNo-$list_len;
064	$total_list = $this->PageNo + $list_len;
065	if($total_list > $totalpage)
066	{
067	$total_list = $totalpage;
068	}
069	}
070	else
071	{
072	$j=1;
073	if($total_list > $totalpage)
074	{
075	$total_list = $totalpage;
076	}
077	}
078	for($j; $j<=$total_list; $j++)
079	{
080	if($j == $this->PageNo)
081	{
082	$listdd.= "<li class=\"thisclass\"><a>$j</a></li>\r\n";
083	}
084	else
085	{
086	$listdd.="<li><a href='".$purl."-$j.html'>".$j."</a></li>\r\n";
087	}
088	}
089	$plist = '';
090	if(preg_match('/info/i', $listitem))
091	{
092	$plist .= $maininfo.' ';
093	}
094	if(preg_match('/index/i', $listitem))
095	{
096	$plist .= $indexpage.' ';
097	}
098	if(preg_match('/pre/i', $listitem))
099	{
100	$plist .= $prepage.' ';
101	}
102	if(preg_match('/pageno/i', $listitem))
103	{
104	$plist .= $listdd.' ';
105	}
106	if(preg_match('/next/i', $listitem))
107	{
108	$plist .= $nextpage.' ';
109	}
110	if(preg_match('/end/i', $listitem))
111	{
112	$plist .= $endpage.' ';
113	}
114	return $plist;
115	}
116	3.设置伪静态规则
117	
118	我们这里以iis7为例子,设置以下规则:
119	
120	Copy 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>
好了,至此就搞定了。

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。