首页 > CMS > PhpCMS > 正文

PHPCMS V9 subcat函数在分站调不出子栏目的解决方法

2024-09-10 07:15:40
字体:
来源:转载
供稿:网友

这是在做网站的时候遇到的一个不起眼但却很不好解决的问题,先把出问题的代码贴出来:

  1. {loop subcat($catid$k $v}   
  2.     {php $subcatid[] = $k;}   
  3. {/loop}   
  4. {php $subcatid  = implode(','$subcatid);}   
  5. <?php   
  6.     $sql="SELECT * from ".gettablepre()."enpicture where status=99 and catid in ($subcatid) order by id DESC";   
  7. ?>   
  8. {pc:get sql="$sql" page="$page" return="data"}   
  9.     {loop $data $r}   
  10.         <div class="cat_pic_bd">   
  11.         <a href="{$r[url]}"><p class="picborder2"><img src="{thumb($r[thumb],200,150)}" width="200" height="150" /></p>   
  12.         <p>{$r[title]}</p></a>   
  13.         </div>   
  14.     {/loop}   
  15. {/pc} 

这段代码的功能是把当前栏目下所有子栏目的信息调取并显示出来,但是,不管怎么调取都调取不出来.

echo var_dump(subcat($catid))返回NULL;

我拉个擦来去,郁闷了,无奈,怀疑是不是subcat()函数参数传递不对,于是打开phpcms/libs/functions/global.func.php找subcat()函数,代码如下:

  1. /**  
  2.  * 获取子栏目  
  3.  * @param $parentid 父级id  
  4.  * @param $type 栏目类型  
  5.  * @param $self 是否包含本身 0为不包含  
  6.  * @param $siteid 站点id  
  7.  */   
  8. function subcat($parentid = NULL, $type = NULL,$self = '0'$siteid = '') {  
  9.     if (emptyempty($siteid)) $siteid = get_siteid();   
  10.     $category = getcache('category_content_'.$siteid,'commons');   
  11.     foreach($category as $id=>$cat) {   
  12.         if($cat['siteid'] == $siteid && ($parentid === NULL || $cat['parentid'] == $parentid) && ($type === NULL || $cat['type'] == $type)) $subcat[$id] = $cat;   
  13.         if($self == 1 && $cat['catid'] == $parentid && !$cat['child'])  $subcat[$id] = $cat;  //Vevb.com 
  14.     }   
  15.     return $subcat;   

傻眼了,果然,参数传递不正确,没有传递栏目类型和站点id,而在开启站群功能后,分站必须要传递$siteid参数,修改后的代码如下:

  1. {loop subcat($catid,0,0,$siteid$k $v}   
  2.     {php $subcatid[] = $k;}   
  3. {/loop}   
  4. {php $subcatid  = implode(','$subcatid);}   
  5. <?php   
  6.     $sql="SELECT * from ".gettablepre()."enpicture where status=99 and catid in ($subcatid) order by id DESC";   
  7. ?>   
  8. {pc:get sql="$sql" page="$page" return="data"}   
  9.     {loop $data $r}   
  10.         <div class="cat_pic_bd">   
  11.         <a href="{$r[url]}"><p class="picborder2"><img src="{thumb($r[thumb],200,150)}" width="200" height="150" /></p>   
  12.         <p>{$r[title]}</p></a>   
  13.         </div>   
  14.     {/loop}   
  15. {/pc}   

完美解决问题.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表