織夢dedecms TAG標籤調用匯總(史上最全)
前言
TAG標籤是一種由您自己定義的,比分類更準確、更具體,可以概括文章主要內容的關鍵詞,合理的運用TAG標籤,可以使你發表的文章更容易被搜尋到。
很多網站的首頁、列表頁和文章頁呼叫的TAG關鍵詞是帶超連結,這樣利於蜘蛛搜尋抓取,又有利於使用者點選,那在織夢dedecms系統的網站上該如何實現這一功能呢?對此,島主整理了以下幾種方法供大家使用:
TAG標籤調用匯總
1、tag標籤的語法解釋
基本語法:
{dede:tag row='30' sort='new' getall='0'}
<a href='[field:link/]'>[field:tag /]</a>
{/dede:tag}
引數說明:
row='30' 呼叫條數為30條
sort='new' 排序方式month,rand,week
getall='0' 獲取型別0為當前內容頁TAG標記,1為獲取全部TAG標記。
底層模板欄位:link,tag
2、最新tag標籤呼叫
{dede:tag row='30' sort='new'}
<a href='[field:link/]'>[field:highlight/]([field:result/])</a>
{/dede:tag}
3、當月熱門tag標籤呼叫
{dede:tag row='30' sort='month'}
<a href='[field:link/]'>[field:tagname/]([field:result/])</a>
{/dede:tag}
4、隨機tag標籤呼叫
{dede:tag row='60' sort='rand'}
<a href='[field:link/]'>[field:highlight/]([field:result/])</a>
{/dede:tag}
5、採集熱門Tags,重新整理一次變換一次
模板程式碼:
{dede:tag row='10' sort='month' }
<a class="tag" href='[field:link/]'>[field:tagname/] </a>
{/dede:tag}
<script language="javascript">
<!--
var tag_a=document.getElementsByTagName("a");
for( i in tag_a){
var offset=6;
var num=4;
if(tag_a.className=="tag"){
var rnd=Math.ceil((num+offset)*Math.random());
if(rnd>offset){
tag_a.className="tag"+(rnd-offset);
}
}
}
//-->
</script>
CSS程式碼:
.tag1 { color:#339900;font-weight:bold;}
.tag2 { color:#e65730;}
.tag3 { color:#00b9da;}
.tag4 { color:#FE3981;font-weight:bold;font-size:14px;}
6、文章頁tag標籤呼叫
{dede:tag table='dede_search_keywords' sort='keyword' row='2' if=''}
<a class=blue href='[field:link/]' target=_blank>[field:tag /]</a>
{/dede:tag}
或
{dede:field name='keywords' runphp='yes' }
if(!empty(@me)){
$kws = explode(' ',@me);
@me = "";
foreach($kws as $k){
@me .= "<a href='/tag.php?/$k/'>$k</a> ";
}
@me= str_replace('+', ' ',trim(@me));
}
{/dede:field}
7、列表頁呼叫TAG標籤的兩種方法
dedecms預設在列表是無法呼叫tag標籤的,經過島主再次對織夢程式碼的研讀及收集,現給大家再提供以下不同版本的tag標籤呼叫方法:
(1)、dedecms5.7版本的呼叫方法
首先,找到include\helpers\archive.helper.php檔案(注:有朋友會疑問,主頁和頻道、列表應該加的是不同的呼叫,不過本人開始用列表頁測試,成功;加入主頁後測試也是成功顯示的,所以我就沒再繼續深究下去了,另外,這個檔案的內容更改,在後臺文件是更改不了的,提示是注入sql,所以要在ftp中找到這個檔案進行更改才行0。)
在底部增加:
function GetTags_list($aid)
{
global $dsql;
$tags = '';
$query = "SELECT tag FROM `ma_taglist` WHERE aid='$aid' ";
$dsql->Execute('tag',$query);
while($row = $dsql->GetArray('tag'))
{
$tags .= ($tags=='' ? "<a href='/tags.php?/".urlencode($row['tag'])."'>".$row['tag']."</a>" : ','."<a href='/tags.php?/".urlencode($row['tag'])."'>".$row['tag']."</a>");
}
return $tags;
}
然後,在列表需要呼叫tag標籤的位置新增:
[field:id function=GetTags_list(@me)/]
即可完成。
(2)、dedecms5.6版本的呼叫方法
方法一:
直接在模板需要的位置加入以下程式碼即可:
[field:id runphp=yes]
$tsql = new DedeSql(false);
$tags = ”;
$tsql->SetQuery(“Select i.tag From dede_taglist t left join dede_tagindex i on i.id=t.tid where t.aid=’@me’”);
$tsql->Execute(‘t’);
while($row = $tsql->GetArray(‘t’,MYSQL_ASSOC)){
$tags .= “<a href=’/tag.php?/”.urlencode($row['tag']).”‘>”.$row['tag'].”</a>”;
}
@me=$tags;
[/field:id]
注:這一步dede5.7版本里面實現不了。
方法二:
開啟dedecms根目錄include/common.func.php,在最底部的“?>”之前加入以下程式碼:
//島主:列表頁呼叫tag的方法
function listtag($aid)
{
$tsql = new DedeSql(false);
$tags = ”;
$tsql->SetQuery(“Select i.tag From dede_taglist t left join dede_tagindex i on i.id=t.tid where t.aid=’$aid’”);
$tsql->Execute(‘t’);
while($row = $tsql->GetArray(‘t’,MYSQL_ASSOC)){
$tags .= “<a href=’/tags.php?/”.urlencode($row['tag']).”/’>”.$row['tag'].”</a> “;
}
return $tags;
}
{dede:field.id runphp=yes}
$tsql = new DedeSql(false);
$tags = ”;
$tsql->SetQuery(“Select i.tag From dede_taglist t left join dede_tagindex i on i.id=t.tid where t.aid=’@me’”);
$tsql->Execute(‘t’);
while($row = $tsql->GetArray(‘t’,MYSQL_ASSOC)){
$tags .= “<a href=’/tag.php?/”.urlencode($row['tag']).”‘>”.$row['tag'].”</a>”;
}
@me=$tags;
{/dede:field.id}
新增程式碼後,在列表頁可以使用:
{dede:field.id function=”listtag(@me)”/}
來呼叫tag標籤。
方法三:
在include/inc_functions.php檔案里加入:
function listtag($aid){
$tsql = new DedeSql(false);
$tags = '';
$tsql->SetQuery("Select i.tagname From xkzzz_tag_list t left join xkzzz_tag_index i on i.id=t.tid where t.aid='$aid'");
$tsql->Execute('t');
while($row = $tsql->GetArray('t',MYSQL_ASSOC)){
$tags .= "<a href='/tag.php?/".urlencode($row['tagname'])."'>".$row['tagname']."</a>";
}
return $tags;
}
然後在列表頁相應位置加入:
[field:ID function="listtag(@me)"/]
就可以調用出來了,只不過這個方法也需要改動程式檔案,看不懂程式碼的朋友,慎用!
8、首頁呼叫文章TAG標籤的方法
如果你網站用的是dedecms v5.7版本可直接使用標籤:
[field:id function=GetTags(@me)/]
就可以調用出來了,只不過不帶連線的,要想給tag標籤加上鍊接,還需要進行以下操作:
首先,註釋掉include/helpers/archive.helper.php檔案的130行,
$tags .= ($tags=='' ? $row['tag'] : ','.$row['tag']);
用下面語句替換,當然你也可以加入自己的樣式:
$tags .= "<a href='/tags.php?/".urlencode($row['tag'])."/'>".$row['tag']."</a> ";
再再下面空白處加入以下程式碼:
if ( ! function_exists('GetTagk')){
function GetTagk($aid)
{
global $dsql;
$tagk = '';
$query = "SELECT tag,aid FROM `ma_taglist` WHERE aid='$aid' ";
$dsql->Execute('tag',$query);
while($row = $dsql->GetArray('tag'))
{
$tagk .= ($tagk=='' ? $row['tag'] : ','.$row['tag']);
}
return $tagk;
}
}
然後,開啟dede/article_edit.php找到:
$tags = GetTags($aid);
在下面加上:
$tagk = GetTagk($aid);
再開啟dede/templets/article_edit.htm再呼叫tag標籤那裡把:
<?php echo $tags; ?>
改成:
<?php echo $tagk; ?>
這樣呼叫的時候可以呼叫tag,後臺顯示也能正常顯示。
島主點評:
通過給文章定製tag標籤,文章作者可以讓更多人更方便準確的找到自己的文章,讀者也可以通過文章標籤更快找到自己感興趣的文章,您可以為每篇文章新增一個或多個標籤,發表成功後,您可以開啟文章內的標籤,看到網站內所有和您使用了相同標籤的文章。
不僅如此,如果您文章內使用的某個標籤恰巧在首頁上推薦,使用者開啟這個標籤時,就會在結果頁面上看到您的文章。