先把出問題的代碼貼出來:
- {loop subcat($catid) $k $v}
- {php $subcatid[] = $k;}
- {/loop}
- {php $subcatid = implode(',', $subcatid);}
- $sql="SELECT * from ".gettablepre()."enpicture where status=99 and catid in ($subcatid) order by id DESC";
- ?>
- {pc:get sql="$sql" page="$page" return="data"}
- {loop $data $r}
- class="cat_pic_bd">
- "{$r[url]}">
class="picborder2">
"{thumb($r[thumb],200,150)}" width="200" height="150" />
-
{$r[title]}
- {/loop}
- {/pc}
- 這段代碼的功能是把當前欄目下所有子欄目的信息調取并顯示出來,但是,不管怎么調取都調取不出來。
echo var_dump(subcat($catid))返回NULL;
我拉個擦來去。。。郁悶了,無奈,懷疑是不是subcat()函數參數傳遞不對,于是打開phpcms/libs/functions/global.func.php找subcat()函數,代碼如下:
- /**
- * 獲取子欄目
- * @param $parentid 父級id
- * @param $type 欄目類型
- * @param $self 是否包含本身 0為不包含
- * @param $siteid 站點id
- */
- function subcat($parentid = NULL, $type = NULL,$self = '0', $siteid = '') {
- if (empty($siteid)) $siteid = get_siteid();
- $category = getcache('category_content_'.$siteid,'commons');
- foreach($category as $id=>$cat) {
- if($cat['siteid'] == $siteid && ($parentid === NULL || $cat['parentid'] == $parentid) && ($type === NULL || $cat['type'] == $type)) $subcat[$id] = $cat;
- if($self == 1 && $cat['catid'] == $parentid && !$cat['child']) $subcat[$id] = $cat;
- }
- return $subcat;
- }
傻眼了,果然,參數傳遞不正確!沒有傳遞欄目類型和站點id,而在開啟站群功能后,分站必須要傳遞$siteid參數。修改后的代碼如下:- {loop subcat($catid,0,0,$siteid) $k $v}
- {php $subcatid[] = $k;}
- {/loop}
- {php $subcatid = implode(',', $subcatid);}
- $sql="SELECT * from ".gettablepre()."enpicture where status=99 and catid in ($subcatid) order by id DESC";
- ?>
- {pc:get sql="$sql" page="$page" return="data"}
- {loop $data $r}
- class="cat_pic_bd">
- "{$r[url]}">
class="picborder2">
"{thumb($r[thumb],200,150)}" width="200" height="150" /
-
{$r[title]}
- {/loop}
- {/pc}
- 完美解決問題!
合肥網絡公司找笑緣信息技術,歡迎交流!