帝国CMS终极栏目和父栏目使用同一个模板,当调用当前终极栏目信息时,父栏目数据为空怎么办? 作者:30yi.cn 时间:2020-09-17
简单概括
解决一级栏目信息为空的思路很简单:首先判断当前栏目,如果当前栏目是一级栏目,那么就获取本栏目的子栏目ID,如果当前栏目是非一级栏目,则获取当前栏目ID,并将获取的ID传给灵动标签调用。
解决思路很简单,首先判断本栏目情况,如果当前栏目是一级栏目,那么就获取本栏目的子栏目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,简单试试就能出来哦~