更多



DeDeCMS的标签arclist无法调用文章的副栏目或多个副栏目的解决方法 不指定

郝聪 , 2016/01/14 17:57 , 建站优化 , 评论(1) , 阅读(4459) , Via 推酷 | |

由于DeDeCMS后台没有在栏目间复制文档的功能,只有移动文档的功能(类似于剪切),而建站时经常会需要让多个栏目列表页都调用这篇文档,DeDeCMS的副栏目功能恰恰是用于解决类似需求的,它既可以让一篇文档被主栏目调用,也能在副栏目调用,甚至能被多个副栏目同时调用。

副栏目的设置如下图:

一个文章归属于2个栏目,一个是文档主栏目,一个是文档副栏目,而最终的管理是在主栏目中,但是被放入到副栏目的文档同样是可以在副栏目的前台 列表页中展示,但问题是:我们不仅要实现文章在列表页中去展示,也需要在首页或者其他页面中展示,这样就需要使用arclist标签来进行调用。但是,你会发现,默认在arclist中是无法直接调用副栏目的文档出来的。

其原因就是因为arclist标签文件中相关的php代码函数不支持副栏目的调取,我们只能对程序文件的相关代码进行更改,实现让arclist支持副栏目的调用。

修改文件/include/taglib/arclist.lib.php

XML/HTML代码
        
  1. if($CrossID=='') $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).')';  
  2.     
  3. else $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).','.$CrossID.')';  

修改为:

XML/HTML代码
        
  1. if($CrossID=='')  
  2.     
  3. $orwheres[] = " (arc.typeid in (".GetSonIds($typeid).") or arc.typeid2 in (".GetSonIds($typeid).") or CONCAT( ',', arc.typeid2, ',' ) LIKE '%,".$typeid.",%' )";  
  4.     
  5. else  
  6.     
  7. $orwheres[] = " (arc.typeid in (".GetSonIds($typeid).",".$CrossID.") or arc.typeid2 in (".GetSonIds($typeid).",".$CrossID.") or CONCAT( ',', arc.typeid2, ',' ) LIKE '%,".$typeid.",%')";  

网上的很多方法都是只能让一个副栏目能调用文档的,而这套代码可以让多个副栏目都能调用文档。

OK,修改完之后请更新缓存,重新生成,就能看到效果了!


郑州SEO优化 Email
2016/03/04 20:48
博主好像很久没有来了哈
分页: 1/1 第一页 1 最后页
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]