织梦arclist调用副栏目不显示的解决办法:
打开/include/taglib/arclist.lib.php,代码约位于295-296行,查找以下两行代码:
if($CrossID=='') $orwheres[] = ' arc.typeid IN
('.GetSonIds($typeid).')'; else $orwheres[] = ' arc.typeid IN
('.GetSonIds($typeid).','.$CrossID.')';   将其替换成以下代码: $vicewheres =
""; $typeids = explode(",",GetSonIds($typeid)); $crossids =
explode(",",$CrossID); $typeidss = array_merge($typeids,$crossids);
$typeidss = array_unique($typeidss); 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.')
'; } 这种办法可以解决typeid="2"的情况下不显示副栏目的问题,
如果typeid=“2,3,8”,有多个栏目需要调用副栏目就不行了 怎么解决这个问题,找到262行, $orwheres[] = "
arc.typeid IN ($typeid) "; 直接替换为: $vicewheres = ""; foreach($typeid
as $tid){ $liketypeid2 = ",".$tid.","; $vicewheres.= " or
CONCAT(',',arc.typeid2,',') like '%$liketypeid2%' "; }
if($vicewheres!="") $orwheres[] = " (arc.typeid in ($typeid)
$vicewheres) "; else $orwheres[] = " arc.typeid in ($typeid) ";
问题产生的原因,看下arclist.lib.php原始代码:( typeid为主栏目id, typeid2为副栏目id)
找到246行: //指定了多个栏目时,不再获取子类的id if( preg_match('#,#', $typeid) )
//如果typeid字段匹配逗号, 就是说typeid调用多个栏目,例如:typeid=“2,3,8” {
//指定了getall属性或主页模板例外 if($getall==1 ||
empty($refObj->Fields['typeid'])) { $typeids = explode(',',
$typeid); foreach($typeids as $ttid) { $typeidss[] =
GetSonIds($ttid); } $typeidStr = join(',', $typeidss); $typeidss =
explode(',', $typeidStr); $typeidssok = array_unique($typeidss);
$typeid = join(',', $typeidssok); } $orwheres[] = " arc.typeid IN
($typeid)"; //导致typeid='2,3,8'情况下不能调用副栏目问题产生的地方 } else
//如果typeid不匹配逗号,就是调用一个栏目 例如 typeid="2" { //处理交叉栏目 $CrossID = '';
if($ctag->GetAtt('cross')=='1') { $arr =
$dsql->GetOne("SELECT
`id`,`topid`,`cross`,`crossid`,`ispart`,`typename` FROM
`dede_arctype` WHERE id='$typeid' "); if( $arr['cross']==0 || (
$arr['cross']==2 && trim($arr['crossid']=='') ) ) {
$orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).')'; } else {
$selquery = ''; if($arr['cross']==1) { $selquery = "SELECT id,topid
FROM `dede_arctype` WHERE typename LIKE '{$arr['typename']}' AND
id<>'{$typeid}' AND topid<>'{$typeid}' "; } else {
$arr['crossid'] = preg_replace('#[^0-9,]#', '',
trim($arr['crossid'])); if($arr['crossid']!='') $selquery = "SELECT
id,topid FROM `dede_arctype` WHERE id IN('{$arr['crossid']}') AND
id<>'{$typeid}' AND topid<>'{$typeid}' "; }
if($selquery!='') { $dsql->SetQuery($selquery);
$dsql->Execute(); while($arr = $dsql->GetArray()) { $CrossID
.= ($CrossID=='' ? $arr['id'] : ','.$arr['id']); } } } }
if($CrossID=='') $orwheres[] = ' arc.typeid IN
('.GetSonIds($typeid).')'; else $orwheres[] = ' arc.typeid IN
('.GetSonIds($typeid).','.$CrossID.')';
//导致typeid='2'情况下不能调用副栏目问题产生的地方 }

文章来源:牛人织梦

织梦调用多个栏目typeid="1,2,3"不支持的解决方法的更多相关文章

  1. DEDECMS织梦后台更新网站栏目无反应一键更新无响应的解决方法

    很多站长朋友反应,经常会遇到DEDECMS织梦后台更新网站栏目无反应和一键更新无响应的问题,这个问题的所在就是在于恢复了数据或者覆盖了织梦后台文件之后,点击一键更新完全没反应,或者生成栏目的时候其他都 ...

  2. dede织梦调用顶级二级栏目及下三级栏目方法(数据库实现)

    上次有说道能调用织梦的二级栏目今天来说道说道调用三级,乃至无限极 ①:通过dede调用二级栏目大家都会调用,但要调用三级栏目,就有点麻烦了,如下样式的三级栏目dede如何调用呢?如下: ------- ...

  3. 织梦系统中出现DedeTag Engine Create File False提示原因及解决方法

    今天更新网站时dedecms系统时,遇到一个问题:DedeTag Engine Create File False  出现这样的提示. 其实这也不算是什么错误,我个人觉得最重要的一点就是根目录下没有给 ...

  4. 织梦DEDECMS文章、栏目页获取当前页面顶级栏目名称的方法

    在用织梦做一些项目时,时常会碰到需要在当前页面调用顶级栏目名称的时候,织梦默认{dede:field name='typename' /} 可以获取当前栏目页上一级栏目的名称,而不是当前栏目顶级栏目名 ...

  5. 织梦DedeCMS删除所有栏目或文章后,新建ID不从1开始的解决方法

    这个修改方法很简单,从模板无忧那里找到的,只需要在后台系统-SQL命令行工具里面运行以下语句即可,不用采用笨方法重新安装织梦CMS了. 删除所有栏目,新建ID从1开始: ALTER TABLE `de ...

  6. 织梦channelartlist标签当前栏目高亮

    channelartlist标签完美支持currentstyle属性,实现自动加载当前栏目CSS样式,可以用来标识当前栏目位置的CSS,解决方法如下: 打开文件include\taglib\chann ...

  7. 【我的Android进阶之旅】Android调用JNI出错 java.lang.UnsatisfiedLinkError: No implementation found for的解决方法

    错误描述 今天使用第三方的so库时候,调用JNI方法时出现了错误.报错如下所示: 11-01 16:39:20.979 4669-4669/com.netease.xtc.cloudmusic E/a ...

  8. 织梦dedecms 用交叉栏目时arclist标签调用不出内容文章的问题(纯转载)

    本文转自:http://www.cnblogs.com/cnteam/articles/4056702.html 最近用了交叉栏目发现当为手动指定交叉栏目ID时用arclist标签不能调出相关文章最后 ...

  9. dede织梦调取一二三级栏目名及栏目下的内容列表的方法

    网站根据需要,把地区划成省-市-文章的层级结构,栏目首页需要显示的是 复制代码代码如下: {dede:channelarclist} <!--省显示--> <a href=" ...

随机推荐

  1. Day15 集合(二)

    Set简介 定义 public interface Set<E> extends Collection<E> {} Set是一个继承于Collection的接口,即Set也是集 ...

  2. webpack.config.js配置遇到Error: Cannot find module '@babel/core'问题

    在webpack配置,将ES6转成ES5的时候,,出现Error: Cannot find module '@babel/core'错误最初以为是babel-core没有安装上.重装了好几遍babel ...

  3. hive使用derby的服务模式(可以远程模式)

    hive默认使用的derby的嵌入模式.这个就面临着,无法多个并发hive shell共享的问题. 使用MySQL服务器也可以解决问题,但安装.配置太麻烦了. 可以使用轻量级的derby的c/s服务模 ...

  4. idea 如何优雅的添加.ignore 忽略不必要提交的文件

    最近有点时间然后就跑去搜了下idea热门的插件,一不小心发现了一个.ignore插件.有过在idea使用git都知道.gitignore文件,而这个插件就是能优雅的帮我们做这件事. 首先先讲下安装这个 ...

  5. POJ 3468 A Simple Problem with Integers(线段树模板之区间增减更新 区间求和查询)

    A Simple Problem with Integers Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 140120 ...

  6. 参加360前端星计划总结(二)--HTML&CSS

    HTML学习手册(英文版)html:the living standard 重要知识点 文档声明的作用a. 指定html的文档标准和版本b. 告诉浏览器渲染模式,有怪异模式(较为古老的模式,不写文档声 ...

  7. [iOS]拾遗补阙

    一.AFNetworking POST纯字符串 修改位置AFURLRequestSerialization 修改前 NSString * AFQueryStringFromParameters(NSD ...

  8. MongoDB查找条件

    1. 关系运算符 $eq 等于 $lt    小于 $lte 小于等于 $gt   大于 $gte 大于等于 $in   在范围内 //查询名字为“小明”和“小刚”的 $condition = [ ' ...

  9. day 87 Vue学习六之axios、vuex、脚手架中组件传值

      本节目录 一 axios的使用 二 vuex的使用 三 组件传值 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 axios的使用 Axios 是一个基于 promise 的 HT ...

  10. uboot-2012.04.01移植编译前准备

    一:准备移植1.从下面的官网下载uboot-2012.04.012.建立sourceinsight工程 a.解压并在E:\colin weidongshan\transplant_u-boot-201 ...