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     }     }     }     ?>
  这一段代码实现了上面两段在一起的功能,当然可以继续嵌套循环,个人认为是比较好的解决方法。
								 |