DedeCMS V5.7中的TAG標(biāo)簽的URL一般是
http://域名/tags.php?/%B0%D9%B6%C8%BF%EC%D5%D5/
做成TAG偽靜態(tài)修改參考文章《DedeCMS實(shí)現(xiàn)TAG偽靜態(tài)(萬(wàn)網(wǎng)虛擬主機(jī))》,中文字符的URL一樣能被百度和谷歌識(shí)別,但介于中文URL路徑過(guò)長(zhǎng)可以替換為該TAG的ID。
打開(kāi)/include/taglib/tag.lib.php
在差不多87行找到
$row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['keyword'])."/";
將其改成
$row['link'] = $cfg_cmsurl."/tags/".urlencode($row['id'])."/";
這樣就把每個(gè)動(dòng)態(tài)的tag標(biāo)簽生成了如:
http://域名/tags/12/
很多人設(shè)計(jì)TAG標(biāo)簽URL后面有“.html的”后綴,其實(shí)直接用斜杠“/”更好,代表這是一個(gè)目錄。
打開(kāi)/include/arc.taglist.clss.php,找到(下面出現(xiàn)的分隔符請(qǐng)去掉)
$this->TagInfos = $this->dsql->GetOne("Select * From `#分隔符@__tagindex` where tag like '{$this->Tag}' ");
修改為
$this->TagInfos = $this->dsql->GetOne("Select * From `#分隔符@__tagindex` where id like '{$this->Tag}' ");
由于TAG替換成了ID,原有的調(diào)用方法有些變化,訪問(wèn)的tag列表如果用{dede:field.title/}調(diào)用的是ID,這不友好,下面是修改及調(diào)用方法
打開(kāi)/include/arc.taglist.class.php,找到
//設(shè)置一些全局參數(shù)的值 foreach($GLOBALS['PubFields'] as $k=>$v) $this->Fields[$k] = $v;
下面增加
//by vi586.com
$s = $this->dsql->GetOne("Select tag From `#分隔符@__tagindex` where id = '{$this->Tag}' ");
$this->Fields['tag'] = $s['tag'];
$this->Fields['title'] = $s['tag'];
//end
往下繼續(xù)找到
$this->TagInfos = $this->dsql->GetOne("Select * From `#分隔符@__tagindex` where tag like '{$this->Tag}' ");
修改為
$this->TagInfos = $this->dsql->GetOne("Select * From `#分隔符@__tagindex` where id like '{$this->Tag}' ");
一般在站內(nèi)都是用GetTags()函數(shù)調(diào)用,但這個(gè)函數(shù)并沒(méi)有對(duì)應(yīng)的ID。查看了一下taglist表,發(fā)現(xiàn)用的是tid。
[field:id function=GetTags(@me)/],調(diào)出來(lái)的會(huì)是/tags//
打開(kāi)/include/helpers/archive.helper.php,找到
$query = "SELECT tag FROM `#分隔符@__taglist` WHERE aid='$aid' ";
$dsql->Execute('tag',$query);
while($row = $dsql->GetArray('tag'))
{
$tags .= ($tags=='' ? $row['tag'] : ','.$row['tag']);
}
這里增加了絕對(duì)路徑的修改。
$query = "SELECT tid,tag FROM `#分隔符@__taglist` WHERE aid='$aid' ";
$dsql->Execute('tid',$query);
while($row = $dsql->GetArray('tid'))
{
$tags .= "<a href='".$GLOBALS['cfg_basehost']."/tags/".urlencode($row['tid'])."/'>".$row['tag']."</a>";
}
調(diào)用全站TAG標(biāo)簽帶鏈接
{dede:tag row='100' sort='new' getall='1'} <a target="_blank" href='[field:link/]'>[field:tag /]</a> {/dede:tag}
有幾個(gè)參數(shù)需要了解
row:調(diào)用條數(shù) sort:排序方式 month,rand,week getall:獲取類(lèi)型 0 為當(dāng)前內(nèi)容頁(yè)TAG標(biāo)記,1為獲取全部TAG標(biāo)記
調(diào)用當(dāng)前內(nèi)容頁(yè)TAG標(biāo)簽帶鏈接
{dede:tag row='10' sort='new' getall='0'} <a target="_blank" href='[field:link/]'>[field:tag /]</a> {/dede:tag}
首頁(yè)、列表頁(yè)調(diào)用文章TAG標(biāo)簽帶鏈接
{dede:arclist row='10' titlelen='80'} <a target="_blank" href="[field:link/]">[field:id function=GetTags(@me)/]</a> {/dede:arclist}
TAG列表頁(yè)也是用的上述方法。
TAG詳情頁(yè)調(diào)用TAG標(biāo)簽
不能直接用{dede:field.title/}調(diào)用TAG標(biāo)簽了,這時(shí)調(diào)出來(lái)的是該TAG的ID,需要用SQL的方法調(diào)用,下面的橙色表前綴請(qǐng)自行更換。
{dede:sql sql="select tag from #分隔符@__tagindex where id=~title~"}[field:tag/]{/dede:sql}
擴(kuò)展閱讀:
1:dedecms織夢(mèng)tag標(biāo)簽實(shí)現(xiàn)偽靜態(tài)的方法
2:DedeCms織夢(mèng)tag標(biāo)簽靜態(tài)生成+url拼音+分頁(yè)優(yōu)化(支持手機(jī)版tag自動(dòng)生成)