在使用 Dedecms CMS 模版时,您可能会遇到一个问题:当文章选择副栏目后,在对应的副栏目列表页可以正常显示该文章,但在全局的 arclist 标签中却无法显示。经过一番查找与研究,发现这一问题的根本原因在于 arclist 标签在使用 flag 属性时会失效。为了解决这个问题,我们需要对系统文件进行适当的修改。以下是详细的解决步骤:
首先,打开 /include/taglib/arclist.lib.php 文件。
接下来,找到大约第 295-296 行,定位以下两行代码:
if($CrossID=='') $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).')';
else $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).','.$CrossID.')';
将上述代码替换为以下内容:
if($CrossID=='') $orwheres[] = ' (arc.typeid IN ('.GetSonIds($typeid).') OR arc.typeid2 IN ('.GetSonIds($typeid).')) ';
else $orwheres[] = ' (arc.typeid IN ('.GetSonIds($typeid).','.$CrossID.') OR arc.typeid2 IN ('.GetSonIds($typeid).','.$CrossID.')) ';
完成上述修改后,请确保保存文件。如果您使用的是静态生成模式,请重新生成静态页面;如果是动态模式,则需要更新系统缓存。
通过以上步骤,您可以成功修复 Dedecms 中 arclist 标签无法正确显示副栏目文章的问题。这一改动的核心在于,新代码同时检查了主栏目(typeid)和副栏目(typeid2),从而确保所有符合条件的文章都能被正确调用。
希望这篇文章能帮助到正在面临类似问题的开发者们。如果您还有其他疑问或需要进一步的帮助,请随时联系我。
关键词:dedecms, arclist标签, 副栏目, 文章调用, 系统缓存