帝国cms sql实现无限级导航代码可指定ID
代码:
<?
function daohang($bclassid=0)
{
global $empire,$dbtbpre,$public_r;
$sql=$empire->query("select * from {$dbtbpre}enewsclass where bclassid=$bclassid order by myorder,classid");
while($r=$empire->fetch($sql))
{
$jclassURL=@sys_ReturnBqClassname($r,9);
$num = @ReturnClassInfoNum($r);
if(empty($r['islast']))
{
echo '<ul>'.'<a href="'.$jclassURL.'">'.$r['classname'].'</a>'.'('.$num.')'.'</ul>';
daohang($r['classid']);
}
else
echo '<li>'.'<a href="'.$jclassURL.'">'.$r['classname'].'</a>'.'('.$num.')'.'</li>';
}
}
echo '<ul>';
daohang(0);
echo '</ul>';
?>
思良:如果把SQL语句改成select * from {$dbtbpre}enewsclass where bclassid=$bclassid and tbname='news' order by myorder,classid,即加了and tbname='news' 这个条件就可以只显示新闻系统模型的栏目。
很多网站栏目默认是新闻系统模型,很少用到下载系统或者文章系统,而如果想用帝国安装2个网站,我们可以把主站建立的栏目用新闻系统,第二个网站的栏目用文章系统,这样的话,如果用最新更新的标签时,文章系统更新不会显示到新闻系统里,我的网站就这样,主站用新闻系统,专门为模版建立了一个栏目,有新模版就发到里面,里面必须要有测试文章的,为了防止测试文章显示到主站里,所以用的是文章系统,如果想用上面的代码显示导航时,就会把所有栏目都显示出来了,而我们就想显示主站的导航就好了,好在我把其他里面都设置成其他系统,所以加个条件:and tbname='news' 这样就只显示新闻系统(主站)的栏目(导航)了。
如果把daohang($bclassid=0)和下面的 daohang(0);改成对应栏目ID就循环显示该栏目(包括子栏目),比如我网址大全ID是30,改成了daohang($bclassid=30)和下面的 daohang(30);那么就显示网址大全下面所有子栏目了。
希望这个思路帮助到其他朋友。