dedecms5.6内容页面调用当前文章的相关文章解决办法
2010-12-13 07:18:33 来源:WEB开发网核心提示:在使用dedecms5.6时发现如果在内容页面调用相关文章,简单的使用dedecms arclist不能够实现,但是arclist有一个字段keyword,如果把当前文章的keyword调用出来,就能够得到当前相关文章的列表.我的做法是对keyword附一个固定的值 {dede:arclist keyword=
在使用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 不要变哦,变了可就调不出来了,有问题就问吧
[]
- ››DeDeCMS的archives表出错问题解决
- ››dedecms5.6内容页面调用当前文章的相关文章解决办...
- ››dedecms删除文章的同时自动删除生成的html文件
- ››DEDECMS时间自定义显示方法
- ››DedeCms模板安装以及制作概述
- ››DedeCMS 5.6 整合 Discuz7.2(通过UCenter 1.5.1)
- ››dedecms解决js广告更新速度慢的方法
- ››dedecms5.6 广告代码添加大全
- ››DEDECMS5.6文章页加边框的方法
- ››dedeCMS图片自动等比例缩小且垂直居中方法
- ››DEDECMS列表调用好评差评中立
- ››调用android系统自带功能
更多精彩
赞助商链接