温州在线手机站

温州 > 科技 > 互联网 > 网站建设 > 站长入门 >

dede文章副栏目调用 完美解决DEDE封面调用副栏目文章列表方法

  dede副栏目调用方法用普通DEDE调用栏目的代码无效,dede封面或者首页调用副栏目的文章,用dede arclist是无法显示的,网上查了一下都是下面说的第一种方法,这样修改后是能调用副栏目的文章列表,但是首页、频道页、列表页的推荐无效了,第二种方法可以完美解决调用副栏目文章的问题。

  修改文件/include/taglib/arclist.lib.php
  修改原代码:
  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 FIND_IN_SET('.GetSonIds($typeid).',arc.typeid2)';
else $orwheres[] = 'arc.typeid IN ('.GetSonIds($typeid).','.$CrossID.')or FIND_IN_SET('.GetSonIds($typeid).',arc.typeid2)';
  代码说明:
  arc.typeid IN ('.GetSonIds($typeid).')查询dede_arctiny表中的typeid字段,如果是有.GetSonIds($typeid).的就查询并返回去。这里没有typeid2所以在这里就要加上 or FIND_IN_SET('.GetSonIds($typeid).',arc.typeid2)'
意思就是查询typeid2字段中如果包含了.GetSonIds($typeid).此数字的话也返回。但是这样一设置封面的推荐什么的都不显示了,所以只能用模糊查询。

  模糊查询说明:
  mysql中如果用like模糊查询的话,也是可以的。不过可能不是很准。
  代码如下:
  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.",%')";
  这个代码已经试过了,很好。

  一般SQL是可以支持CHARINDEX函数的。不过可惜的是Mysql不支持这个函数所以只能用以上方法或者like模糊查询了。如果你有更好的方法的话。除外,我只知道这两种就先发出来了。

  本文来源 电脑互助网|http://www.pc811.com 原文链接:http://www.pc811.com/6/4/25022.html

(责任编辑:yujeu)