当前位置:首页 > 行业动态 > 正文

如何让arclist标签实现对副栏目的调用功能?

要让arclist标签支持副栏目调用,可以在arclist标签中使用typeid属性指定副栏目的ID。,,“ ,{dede:arclist typeid="2"}, [字段名],{/dede:arclist},“,,typeid=”2″表示调用ID为2的 副栏目

arclist标签支持副栏目调用的详细步骤

如何让arclist标签实现对副栏目的调用功能?  第1张

在织梦CMS(DedeCMS)中,文章可以被同时分配到主栏目和多个副栏目,默认情况下,使用arclist标签无法直接调用副栏目的文章,为了解决这个问题,可以通过修改arclist标签的相关代码来实现对副栏目的支持,以下是详细的步骤和说明:

准备工作

1、备份文件:在进行任何代码修改之前,务必备份/include/taglib/arclist.lib.php文件,以防出现意外情况可以恢复。

2、编辑工具:建议使用专业的代码编辑器(如Notepad++或Sublime Text)进行编辑,以确保代码的正确性和可读性。

具体步骤

1、定位文件:打开织梦CMS根目录下的/include/taglib/arclist.lib.php文件。

2、查找并替换代码

第一次替换

找到约261行位置的以下代码:

“`php

$orwheres[] = " arc.typeid in ($typeid)";

“`

将其替换为:

“`php

$vicewheres = "";

$liketypeid2 = "’.".implode(‘,’,$typeid).",’";

$vicewheres .= " or CONCAT(‘,’,arc.typeid2,’,’) like ‘%$liketypeid2%’";

if($vicewheres!="") $orwheres[] = " (arc.typeid in ($typeid)" . $vicewheres . ")";

else $orwheres[] = " arc.typeid in ($typeid)";

“`

第二次替换

找到约303行位置的以下代码:

“`php

if($CrossID==”) $orwheres[] = ‘ arc.typeid IN (‘.GetSonIds($typeid).’)’;

else $orwheres[] = ‘ arc.typeid IN (‘.GetSonIds($typeid).’,’.$CrossID.’)’;

“`

将其替换为:

“`php

$vicewheres = "";

$typeids = explode(",",GetSonIds($typeid));

$typeidss = array_merge($typeids,explode(",",$CrossID));

foreach ($typeidss as $tid){

$liketypeid2 = "’,".$tid.",’";

$vicewheres .= " or CONCAT(‘,’,arc.typeid2,’,’) like ‘%$liketypeid2%’";

}

if($CrossID==”) {

if($vicewheres!="") $orwheres[] = ‘ (arc.typeid in (‘.GetSonIds($typeid).’)’ . $vicewheres . ‘) ‘;

else $orwheres[] = ‘ arc.typeid in (‘.GetSonIds($typeid).’) ‘;

} else {

if($vicewheres!="") $orwheres[] = ‘ (arc.typeid in (‘.GetSonIds($typeid).’,’.$CrossID.’)’ . $vicewheres . ‘) ‘;

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

}

“`

验证与测试

1、保存文件:完成上述修改后,保存/include/taglib/arclist.lib.php文件。

2、生成静态页面:如果网站是静态生成模式,请重新生成相关的静态页面以确保修改生效。

3、测试调用:在首页或其他页面中使用arclist标签调用副栏目文章,检查是否能够正确显示。

相关FAQs

问题1:为什么修改后的代码有时无法显示所有副栏目的文章?

答:可能的原因包括代码修改不完整或存在其他冲突,确保严格按照上述步骤进行替换,并检查是否有其他插件或设置影响标签调用。

问题2:修改后是否需要重启服务器?

答:不需要重启服务器,只需保存修改后的文件并重新生成静态页面即可。

问题3:这种方法适用于所有版本的织梦CMS吗?

答:主要适用于5.7 SP1版本及以后的版本,但基本原理在其他版本中也类似,只需根据具体版本调整代码位置和逻辑。

0