织梦dedecms系统arclist标签调用副栏目文章的方法


最近一段时间以来,有不少时间都在折腾DEDECMS,对其进行了不少的优化工作,以便其适应我的应用要求。在这其中,也遇到了不少的问题。譬如:DEDECMS根据副栏目进行文章调用的问题。 

DEDECMS中一个文章可以同时属于两个栏目,即一个主栏目一个副栏目,{dede:arclist} 属性中可以通过typeid进行主栏目有效性筛选,但是有时我们却想根据副栏目进行筛选,查了dedecms的在线用户手册发现没有此功能,最后搜索到一个有效地解决办法。只需修改标签对应的源文件。 

查找 dedecmsROOT/include/taglib/arclist.lib.php 文件,大概在第212行代码处。 

复制代码

if($CrossID=='') $orwheres[] = ' arc.typeid in ('.GetSonIds($typeid).')';
else $orwheres[] = ' arc.typeid in ('.GetSonIds($typeid).','.$CrossID.')';

替换为: 

复制代码

if($CrossID=='')
$orwheres[] = ' typeid in ('.GetSonIds($typeid).') or typeid2 in ('.GetSonIds($typeid).')';
else
$orwheres[] = ' typeid in ('.GetSonIds($typeid).','.$CrossID.') or typeid2 in ('.GetSonIds($typeid).','.$CrossID.')';

示例:{dede:arclist typeid=’2,3,4′}….{/dede:arclist} 

通过以上办法,有效地解决了DEDECMS最新版本V5.6正式版(2010-08-18)(包括在此前的版本),不支持通过arclist标签调用副栏目文章的问题。