A5下载文章资讯

分类分类

dede文章相关调用方法总结

2015-05-28 15:48作者:sa

很多网友说在使用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 不要变哦,变了可就调不出来了

 

展开全部

相关

说两句网友评论
    我要跟贴
    取消