PHPCMS V9 subcat函數在分站調不出子欄目的解決方法

這是合肥笑緣信息技術有限公司在做網站的時候遇到的一個不起眼但卻很不好解決的問題。


先把出問題的代碼貼出來:

{loop subcat($catid) $k $v}
    {php $subcatid[] = $k;}
{/loop}
{php $subcatid  = implode(',', $subcatid);}
<?php
    $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}
        <div class="cat_pic_bd">
        <a href="{$r[url]}"><p class="picborder2"><img src="{thumb($r[thumb],200,150)}" width="200" height="150" /></p>
        <p>{$r[title]}</p></a>
        </div>
    {/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);}
<?php
    $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}
        <div class="cat_pic_bd">
        <a href="{$r[url]}"><p class="picborder2"><img src="{thumb($r[thumb],200,150)}" width="200" height="150" /></p>
        <p>{$r[title]}</p></a>
        </div>
    {/loop}
{/pc}

完美解決問題!


合肥網絡公司找笑緣信息技術,歡迎交流!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章