6.6的标题分类真是让人又爱又恨,增加灵活性的同时,却不知如何列出当前栏目下的标题分类,在论坛里扒了好久,也没找到合适的答案,于是个人研究了一下,找到了一个可能并不完美的方法。由于接触帝国时间不长,如果有所失误,请高人指出。 具体方法如下: 1、经查看,在栏目的附表里有该栏目下属标题分类的ID,因此第一步先读出这些ID,可以使用灵动标签,方法如下:
[e:loop={"select ttids from [!db.pre!]enewsclassadd where classid=$GLOBALS[navclassid]",0,24,0}] <? $ttids=$bqr[ttids]; ?> [/e:loop]
2、由于读出的是多个ID在一起的字符串,因此通过下面的步骤分解为数组后,再查询标题分类的表取得标题分类的名字,方法如下:
<? $ttids=explode(',',trim($ttids,",")); foreach($ttids as $id){ ?> [e:loop={"select tname from [!db.pre!]enewsinfotype where typeid=$id",0,24,0}] <?=$bqr[tname]?><br/> [/e:loop] <? } ?>
$ttids=explode(',',trim($ttids,","));是重点所在,初始读出的多个标题分类id是用","连在一起的,并且字符串两端由","包括,因此先后通过trim去除两端字符,通过explode将字符串转为数组进行处理。
--------------------------------------------------------------我是分割线-----------------------------------------------------------------------
尽管上面的方法可以实现,不过如果是更高层次的嵌套呢,比如是在封面页列出分类的同时在列出它下面的标题分类呢?那就有点不是很方便了。
通过php代码实现灵动标签的方法,就可以相对简单的实现了。
<?php $ttids_sql=sys_ReturnEcmsLoopBq("select ttids from [!db.pre!]enewsclassadd where classid=$GLOBALS[navclassid]",0,24,0); //$bqno=0; while($bqr=$empire->fetch($ttids_sql)) { // $bqsr=sys_ReturnEcmsLoopStext($bqr); // $bqno++; $ttids=explode(',',trim($bqr[ttids],",")); foreach($ttids as $id){ $ttname_sql=sys_ReturnEcmsLoopBq("select tname from [!db.pre!]enewsinfotype where typeid=$id",0,24,0); while($bqr2=$empire->fetch($ttname_sql)){ // $bqsr2=sys_ReturnEcmsLoopStext($bqr2); ?> <?=$bqr2[tname]?> <?php } } } ?>
这一段代码实现了上面两段在一起的功能,当然可以继续嵌套循环,个人认为是比较好的解决方法。
|