帝国CMS终极栏目和父栏目使用同一个模板,当调用当前终极栏目信息时,父栏目数据为空怎么办? 作者:30yi.cn     时间:2020-09-17

简单概括
解决一级栏目信息为空的思路很简单:首先判断当前栏目,如果当前栏目是一级栏目,那么就获取本栏目的子栏目ID,如果当前栏目是非一级栏目,则获取当前栏目ID,并将获取的ID传给灵动标签调用。

帝国CMS一级栏目和二级栏目使用同一个模板,二级栏目是终极栏目,调用本栏目数据,一级栏目由于无法发布信息,显示的数据为空,这时要怎么处理?

解决思路很简单,首先判断本栏目情况,如果当前栏目是一级栏目,那么就获取本栏目的子栏目ID,如果当前栏目是非一级栏目,则获取当前栏目ID,并将获取的ID传给灵动标签调用。

PHP查询如下:
<?
    $classid = $GLOBALS[navclassid];
    $dclassid = $class_r[$GLOBALS[navclassid]][bclassid];
    if($dclassid==0){
        $classid=$class_r[$GLOBALS[navclassid]][sonclass];
        $t=explode('|',$classid);
        $d=count($t);  
        $classid='';
        for($i=0;$i<$d;$i++)  
        {  
            if($i>1&&$i<($d-1)){
                $f=',';
            }else{
                $f='';
            }
            $classid.= $f.$t[$i];
        }  
    }
?>

灵动标签如下:
[e:loop={"select title,titleurl from {$dbtbpre}ecms_news where classid in ($classid) and order by newstime desc limit 5",1,24,0,'',''}]
[/e:loop]

有更多更好的技巧,欢迎与我分享。

需要解决帝国难题,请点击在线客服咨询。
 

BUG提示(2020/09/23):

在实际生产环境中,发现如果是一级栏目同时为终极栏目时,会因为取不到classid而报错,这个bug根据现有源码简单调整就可以修复。

解决思路很简单,先获取终极栏目的标记,再在if($dclassid==0){内加入判断条件,如果是终极栏目,则classid为当前栏目id,简单试试就能出来哦~