正常来说,我们既然要隐藏一个栏目,自然是不希望这个栏目会在前台显示,但是也有很多情况下,我们是希望这个栏目不要在导航栏/网站地图中出现,栏目内容可能还是需要的!dedebiz社区版目前设置的是,如果隐藏了栏目,那么该栏目下的内容就无法调用!这个问题该如何解决呢?接下来一起看看吧!
目前这个问题仅限于dedebiz社区版(截止于2024年10月5日),如果开发人员有幸看到,希望将此功能更新到正式版中!当然使用dedecms的朋友也可以参考此思路来修改!
一、问题复现
站长在制作一个网站时,在“关于我们”栏目中,有一些类似于“团队成员、资质荣誉、选择我们的优势”等,可以添加到后台,方便客户上传的内容,但是这些栏目又不能让它在导航中显示(ps:站长弄得这个网站,导航是完全调用后台的,并非写死的那种),于是便降栏目属性设为“隐藏”。然后模板中正常调用!
{dede:arclist row='18' titlelen='60' typeid='18' orderby='weight'} ...... {/dede:arclist}
然后,生成页面后,缺不能显示!一般来说,此类问题最简单的解决办法就是万能的百度,不过经过一番查询,并没有什么有用的东西!因此,站长决定自行解决!
二、解决办法
经过站长对按arclist标签的查看发现,dedebiz社区版目前设置的是,只要栏目隐藏,那么文档就无法调用出来。那么有没有一种方法,让隐藏栏目的文章,该出来时候就显示出来。而不该显示出来的时候,就不让他显示出来呢?答案是有的!
思路是,如果隐藏栏目的内容需要显示出来,那么只需要指定调用这个栏目即可!如果没有指定这个隐藏的栏目id,那么就不让它显示!
假设栏目id为8的行业动态栏目,栏目属性设置为隐藏,那么我们在调用新闻资讯时,行业动态的内容是不能显示的。而如果专门调用行业动态的文章,那么又可以显示,这样是比较灵活一点的!当然,目前dedebiz是任何情况都不能调用到的!
三、修改内容
打开system/taglib/arclist.lib.php
1、找到63行,将
$typeid=trim($ctag->GetAtt('typeid'));
改为
$typeid=$typeidOld=trim($ctag->GetAtt('typeid'));
2、找到107行,将
$typeid=0,
改为
$typeid=0,$typeidOld=0,
3、将259行
if($orwhere!='')$orwhere="WHERE $orwhere and tp.ishidden!=1";
改为
if($orwhere!='') $orwhere="WHERE $orwhere";//注意把空格打上,编辑器抽风了,自己把空格去掉了,参考下图 if($typeid!=$typeidOld)$orwhere.="and tp.ishidden!=1";//注意把空格打上,编辑器抽风了,自己把空格去掉了,参考下图
以上代码修改,就完成了如果隐藏栏目的内容需要显示出来,那么只需要指定调用这个栏目即可!如果没有指定这个隐藏的栏目id,那么就不让它显示!