在使用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值是当前页面得关键字,有兴趣的可以去我网站看看 游戏联盟114 可以对比下面相关文章的关键字和当前页面得关键字
具体的实现方式是:
1.修改include/arc.archives.class.PHP找到MakeOneTag($this->dtp,$this,'N',$reltag);将其替换为
$reltag = explode(',',$this->FIElds['keywords']);
$reltag = $reltag[0];
MakeOneTag($this->dtp,$reltag);
2.修改include/下的channelunit.func.PHP找到函数MakeOneTag函数 MakeOneTag(&$dtp,&$refObj,$parfIEld='Y')在函数的最后加上一个参数
MakeOneTag(&$dtp,$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,$refObj));
}
去生成静态吧,不要忘记了 keyword='relation' relation 不要变哦,变了可就调不出来了
总结以上是内存溢出为你收集整理的DedeCMS5.6内容页调用当前文章的相关文章全部内容,希望文章能够帮你解决DedeCMS5.6内容页调用当前文章的相关文章所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)