很多網友說在使用dedecms5.6時發現如果在內容頁面調用相關文章,簡單的使用dedecms arclist不能夠實現。于是就分析了一下,arclist有一個字段keyword,如果把當前文章的keyword調用出來,就能夠得到當前相關文章的列表.我的做法是對keyword附一個固定的值
代碼如下:
{dede:arclist keyword='relation' row='5'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
如果是在終端頁面調用相關文章,就將keyword的值固定,其他的參數也都是可以用的,默認的keyword值是當前頁面得關鍵字
可以對比下面相關文章的關鍵字和當前頁面得關鍵字
具體的實現方式是:
1.修改include/arc.archives.class.php找到
MakeOneTag($this->dtp, $this, 'N',$reltag);
將其替換為
代碼如下:
$reltag = explode(',',$this->Fields['keywords']);
$reltag = $reltag[0];
MakeOneTag($this->dtp, $this, 'N',$reltag);
2.修改include/下的channelunit.func.php找到函數MakeOneTag函數
MakeOneTag(&$dtp, &$refObj, $parfield='Y')
在函數的最后加上一個參數
MakeOneTag(&$dtp, &$refObj, $parfield='Y',$reltag)
仔細看下有什么區別吧
在函數中找到
代碼如下:
if(in_array($tagname,$alltags))
{
$filename = DEDEINC.'/taglib/'.$tagname.'.lib.php';
include_once($filename);
$funcname = 'lib_'.$tagname;
$dtp->Assign($tagid,$funcname($ctag,$refObj));
}
將其修改為
代碼如下:
if(in_array($tagname,$alltags))
{
$filename = DEDEINC.'/taglib/'.$tagname.'.lib.php';
include_once($filename);
$funcname = 'lib_'.$tagname;
if($tagname == 'arclist'){
foreach($ctag->CAttribute->Items as $key => $val){
if($key == 'keyword'){
if($val=='Relation'){
$ctag->CAttribute->Items[$key]=$reltag;
}
}
}
}
$dtp->Assign($tagid,$funcname($ctag,$refObj));
}
呵呵,去生成靜態吧,不要忘記了 keyword=’relation’ relation 不要變哦,變了可就調不出來了
此文由 網站目錄_網站網址收錄與提交入口 編輯,未經允許不得轉載!: