方法一:帝国CMS技巧:SQL万能标签实现多表指定多栏目信息调用
一直想做个最新更新文章的自定义页面,但没有找到如何一次调用多个表的最新文章,在网上搜了好一会,发现了以下的方法,但是本人还没有尝试,希望需要的朋友调试以下
[ecmsinfo]'select * from (select * from phome_ecms_表名1 where checked=1 and classid in (1610,1616) union select * from phome_ecms_表名2 where checked=1 and classid in (1289,1290,1291)) a order by newstime desc limit 100',100,40,1,24,54,0[/ecmsinfo]
注意事项:
1. 红色括号千万别遗漏,不是多余的!
2.蓝色部分为指定的栏目ID,切忌必须为终极栏目,如果有多个用“,”分隔。
3.多表的时候用union链接。 也可以直接copy这段代码“ union select * from phome_ecms_表名 where checked=1 and classid in (1289,1290,1291)” ,注意union前有空格。
4.绿色“24”为操作类型SQL,黄色“54”为标签模板。具体万能标签用法,请参照官方教程,这里不在详解。
5. 上面代码是按照时间排序,也可以根据需要显示点击排行或者热门推荐,更多应用还需要自己思考!
方法二:帝国CMS灵动标签调用当前父栏目下所有子栏目-支持选中状态/高亮
帝国CMS实现灵动标签调用当前父栏目下所有子栏目-支持选中状态及当前栏目高亮,支持栏目自定义排序。最适用于内容模板,显示父栏目下的子栏目。
支持静态栏目页与动态栏目页
代码如下
1
2
3
4
5
6
7
8
9
10
|
[e:loop={ "select classname,classpath,classid from phome_enewsclass where bclassid='" . $class_r [ $GLOBALS [navclassid]][bclassid]. "' order by myorder,classid desc " ,0,24,0}] <?php $classurl =sys_ReturnBqClassname( $bqr ,9); //取得栏目地址 ?> <li class = "" id= "cid<?=$bqr[classid]?>" ><a href= "<?=$classurl?>" ><?= $bqr [classname]?></a></li> [/e:loop] <script> var changeclass=window.document.getElementById( 'cid[!---self.classid--]' ); changeclass.className= 'on' ; </script> |
以上会将设置为隐藏的栏目也调用出来,以下代码不调用隐藏设置的栏目:
1
2
3
4
5
6
7
8
9
10
|
[e:loop={ "select classname,classpath,classid from phome_enewsclass where bclassid='" . $class_r [ $GLOBALS [navclassid]][bclassid]. "' and showclass=0 order by myorder,classid desc " ,0,24,0}] <?php $classurl =sys_ReturnBqClassname( $bqr ,9); //取得栏目地址 ?> <li class = "" id= "cid<?=$bqr[classid]?>" ><a href= "<?=$classurl?>" ><?= $bqr [classname]?></a></li> [/e:loop] <script> var changeclass=window.document.getElementById( 'cid[!---self.classid--]' ); changeclass.className= 'on' ; </script> |
也就是增加了:
1
|
and showclass=0 |
0为显示,1为不显示
方法三:帝国CMS后台自带的导航标签模板调出来的导航没有子栏目,且不带样式,可改用灵动标签实现顶级栏目循环并当前栏目高亮,还可以调出当前栏目下的子栏目,可用作导航下拉。
[e:loop={"select classid,classname from {$dbtbpre}enewsclass where bclassid=0 order by myorder,classid asc",0,24,0}]
<?php
$classurl=sys_ReturnBqClassname($bqr,9);//取得栏目地址
$style="";
if($GLOBALS[navclassid])
{
$fcr=explode('|',$class_r[$GLOBALS[navclassid]][featherclass]);
$topbclassid=$fcr[1]?$fcr[1]:$GLOBALS[navclassid];//取得当前栏目的一级栏目ID
if($bqr[classid]==$topbclassid)
{
$style="current-menu-item";
}
}
?>
<li class="<?=$style?>"><a href="<?=$classurl?>"><?=$bqr[classname]?></a>
<ul><li class='litop'></li>
<?php
//取得栏目下的子栏目
$newsclass=$empire->query("select classid,classname from ".$dbtbpre."enewsclass where bclassid=".$bqr[classid]." order by myorder,classid asc limit 11");
while($classr=$empire->fetch($newsclass))
{
$classrurl=sys_ReturnBqClassname($classr,9); //取得子栏目地址
?>
<li><a href="<?=$classrurl?>"><?=$classr[classname]?></a></li>
<?php
}
?>
</ul>
</li>
[/e:loop]
另可调出栏目简介、栏目缩略图
[e:loop={"select classid,classname,classimg,intro from {$dbtbpre}enewsclass where bclassid=0 order by myorder,classid asc",0,24,0}]
<?=$bqr[classimg]?> //栏目缩略图
<?=$bqr[intro]?> //栏目简介
[/e:loop]
方法四:如何获取多个栏目或指定栏目下所有子栏目的文章列表
[e:loop={"1,2",10,0,0,'','newstime DESC'}]
<a href="<?=$bqsr['titleurl']?>" target="_blank"><?=$bqr['title']?></a> <br>
[/e:loop]
这个应该是你需要的代码
同时调用多个栏目下面的文章时,栏目id之间用逗号分开。同时用引号将id括起来。用灵动标签调用,多个栏目ID用逗号隔开
<? $bclassid = $class_r[$GLOBALS[navclassid]][bclassid]; //获取当前父栏目ID ?> [e:loop={"select classid,classname,classpath from [!db.pre!]enewsclass where bclassid = ‘$bclassid’ order by classid”,0,24,0}]<!-取得父栏目下的子栏目-> <li><a href=”<?=$public_r[newsurl].$bqr[classpath]?>/”><?=$bqr[classname]?></a></li> [/e:loop]