帝国CMS灵动标签调用指定栏目的子栏目、当前栏目的子栏目、同级栏目
帝国CMS灵动便签调用格式
[e:loop={栏目ID/专题ID,显示条数,操作类型,只显示有标题图片,附加SQL条件,显示排序}]
模板代码内容
[/e:loop]
调用指定栏目ID=1下面子栏目
[e:loop={"select classid, classname, classpath from `[!db.pre!]enewsclass` where bclassid='1' order by `classid` desc ",5,24,0,0,0}]
<li><a href="<?=$bqsr['classurl']?>"><?=$bqr[classname]?></a></li>
[/e:loop]
可以用到:
子栏目名称调用:<?=$class_r[$bqr[classid]]['classname']?>
子栏目链接调用:<?=$class_r[$bqr[classid]]['classpath']?>
子栏目id调用:$bqr[classid]
标签调用信息:[ecmsinfo] $bqr[classid] ,8,12,0,0,15,0,0,0[/ecmsinfo]
当前栏目调用子栏目
<?php
$bclassid=$GLOBALS[navclassid]; //取得本栏目id
?>
[e:loop={"select classid, classname, classpath from `[!db.pre!]enewsclass` where bclassid='$bclassid' order by `classid` desc ",5,24,0,0,0}]
<li ><a href="<?=$bqsr['classurl']?>"><?=$bqr[classname]?></a></li>
[/e:loop]
思良:测试用上面的灵动,调用当前栏目实用性不是很大,比如用于首页,调用的是跟栏目,直接让bclassid=0即可,不要php代码了,如果用于二级栏目还可以,如果用于三级即没有子栏目了,就调不出,而我们其实就想调用同级的栏目,比如都是三级,或者都是二级,上面的代码是不能实现的,实现同级,我们要知道父级ID,接着调父级的子栏目即可,我重新找了下代码,可以实现调用同级栏目。
调用同级栏目
获取当前栏目的 父栏目id 父栏目名称的方法
<?php
if($class_r[$GLOBALS[navclassid]][bclassid]==0){
$classid=$GLOBALS['navclassid'];
$classname=$class_r[$classid][classname];
}else{
$classid=$class_r[$GLOBALS[navclassid]][bclassid];
$classname=$class_r[$classid][classname];
}
?>
[e:loop={"select classid, classname, classpath from `[!db.pre!]enewsclass` where bclassid='$classid' order by `myorder` asc ",5,24,0,0,0}]
<li ><a href="<?=$bqsr['classurl']?>"><?=$bqr[classname]?></a></li>
[/e:loop]
如果当前栏目的父栏目id为0 就直接 获取当前栏目 id $GLOBALS['navclassid'];
思良:为什么我写成order by `myorder` asc "?该语句的意思是按栏目顺序的升序排列,默认是by `classid` desc ,按ID降序排列,有时我们建栏目时发现少建了个栏目,于是急急忙忙的建立了,而且想把它排到第一位,于是我们在栏目编辑那块,又重新排了序,如果按ID显示,就会显示到后面,所以我们直接用myorder这个字段来控制了,这个字段刚刚是栏目排序用的,所以大家留个心。一般建栏目时都是想好了的,所以一直都是用ID排序了,不要太在意,这里只是提醒下大家,拷贝代码的时候注意下。
后来发现可以用
[showclasstemp]'selfinfo',1,0,0[/showclasstemp]
实现同级栏目调用。1,是子栏目导航标签模板,可以修改对应样式。
但是灵动的好处是用sql控制条件,有些栏目我们并不想让它显示的,就用条件给它排除。