dede技巧按tag取得相關文章的功能

 

DEDE文章裏,很多人都是隻填了TAG,而沒有填寫關鍵字,更不要說手動去設置其相關文章了。
所以,就希望有一個功能,可以列出當前文章的按TAG進行相關匹配的文章,作爲其相關文章。
例如:A文章的tag是“證券 金融 次貸”,B文的TAG是“美女 時尚”,C文的TAG是“美女”,D文的tag是“證券 貶值”,那麼A文章用次此修改後得到的相關文章就是C和D,B文的相關文章是C,C文的相關文章是A和B,D文相關文章是A

修改方法爲以下兩步(已在DEDE5.1 GBK版上調試通過,如果你是要修改UTF-8版本,切記不要用記事本打開DEDE自帶的文件):

第一步:在include\common.inc.php文件的最後,插入以下函數代碼

function ShowTagLikeArc_by_id($titleLen,$rowCount,$typeid,$aid){
$dsql = new DedeSql(false);
if ($typeid!="0") $sql = TypeGetSunID($typeid,$dsql);
else $sql =" 1=1 ";  

//找到所有的tag id
$query="Select tid from dede_taglist   where aid=$aid";
$dsql->SetQuery($query);
$dsql->Execute();
while($row=$dsql->GetObject()){
$kwsqlarr[] = " (tl.tid='".$row->tid."') ";
}
$where = implode(' OR ',$kwsqlarr);  
if (trim($where)=="") $where=" 1 ";

$sql="Select DISTINCT tp.namerule,tp.typedir,dede_archives.* From dede_taglist   tl left join dede_archives on tl.aid=dede_archives.ID   left join dede_arctype tp on dede_archives.typeid=tp.ID where {$sql} and ( $where) and   dede_archives.ID<>$aid order by dede_archives.litpic desc,dede_archives.click desc"; //排序按有縮略圖、點擊率高的排名靠前
$dsql->SetQuery($sql);
$dsql->Execute();
$ss="";
$i=0;
while($row=$dsql->GetObject()){
$url=GetFileUrl($row->ID,$row->typeid,$row->senddate,$row->title,$row->ismake,$row->arcrank,$row->namerule,$row->typedir,$row->money);                              
$ss=$ss."<li><a href='".$url."' title='".$row->title."'>";
if ($titleLen!=0) $ss=$ss.cn_substr($row->title,$titleLen);
else $ss=$ss.$row->title;
$ss=$ss."</A></LI>";        
$i++;
if (($rowCount!=0)&&($i>=$rowCount)) return $ss;
}  
if ($ss=="") $ss="暫無相關文章";
return $ss;
}


第二步:在文章內容頁模板(通常是article_article.htm)裏,加入調用此函數的標籤:
例如:{dede:field name='id' function='ShowTagLikeArc_by_id(20,10,0,@me)' /}  
這個標籤的意思就是:從所有欄目裏,查找本篇文章的tag相關文章,一共找10條,標題顯示最長爲20個字
又如:{dede:field name='id' function='ShowTagLikeArc_by_id(0,0,2,@me)' /}  
這個標籤的意思就是:從ID爲2欄目及其所有子欄目裏,查找本篇文章的tag相關文章,不限制文章數量,標題顯示不限字數

附註
1   生成出來的相關文章HTML形如:
<li><a href="/html/xxxx/CCC.html" title="C文標題">C文標題</a></li>
<li><a href="/html/xxxx/dddd.html" title="D文標題">D文標題</a></li>
如果你的模板有樣式方面的要求,可自行調整代碼裏的<li>部分
2   目前得到的相關文章,是按有縮略圖且點擊率高的拍列靠前,如需有自己的排序要求,請修改代碼裏的order by dede_archives.litpic desc,dede_archives.click desc部分,不懂的請查閱跟帖或跟貼提問,其他網友代爲回答,我將給予一定熱心助人獎勵

—————————————————————————————————————————————————
溫馨提示
*   模板文件通常在template/default目錄裏,文章頁的模板叫article_article.htm,且本拓展修改的標籤,只能放在文章內容頁。
*   本修改,需要具備一定的模板和HTML的基礎知識,如果完全沒有這些基礎知識,在修改模板使用標籤時會遇到一定困難,請不要使用QQ問我,因爲我也很難幫助你,也沒有足夠的時間幫助你,這就好比小學生遇到初中題目一樣,需要你自己把基礎知識進行學習和摸索
*   具體的模板和HTML的知識,屬於編輯模板的基礎知識,最好還是自學一下,多看DEDE自帶的模板、DEDE模板及標籤的幫助文件、HTML基本概念、CSS的知識、善用論壇搜索和百度google,多掌握一點,對你自己的站長生涯也有好處。
*   有問題,請先翻看前面的跟貼是否已解決,或跟帖詳細描述,入門級問題我一般就不作回答了,如果你自己摸索了2個星期,又實在很想用這個代碼,可以來找我,但千萬別一遇到問題就問,因爲我實在沒有足夠的精力回答所有問題,見諒!

來源:http://technical.xinqq163.com/dedecms/2012-05-12/38514.html

http://cms.zz5u.net/dedecms/2010/0803/11353.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章