使用过Dedecms的朋友都知道,这款CMS模板在后台操作上存在一定的局限性。例如,Dedecms后台没有提供在栏目间复制文档的功能,仅支持移动文档(类似于剪切)。这意味着如果需要让多个栏目列表页调用同一篇文档,手动重复添加将是一项繁琐的任务。幸运的是,Dedecms的副栏目功能解决了这一问题,它允许一篇文档被主栏目和一个或多个副栏目同时调用。
副栏目的设置方法如下所示:

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).") or CONCAT( ',', arc.typeid2, ',' ) LIKE '%,".$typeid.",%')";
else
$orwheres[] = " (arc.typeid in (".GetSonIds($typeid).",".$CrossID.") or arc.typeid2 in (".GetSonIds($typeid).",".$CrossID.") or CONCAT( ',', arc.typeid2, ',' ) LIKE '%,".$typeid.",%')";
    

这段代码经过优化后,能够支持多个副栏目的文档调用功能。作者已亲自测试并确认其可用性,非常适合需要跨多个栏目调用同一篇文档的场景。
完成代码修改后,请记得更新缓存,并重新生成网站内容,以确保更改生效。这样,您就可以轻松实现多副栏目的文档调用了。
通过这种方式,不仅可以提升工作效率,还能减少因重复操作带来的错误风险。如果您正在寻找一种高效的方式来管理Dedecms中的文档调用问题,不妨试试这种方法。