帝国CMS无限级栏目导航、多级栏目导航栏目导航的实现方法详细教
思良:最近在制作自适应模版想用灵动做导航,一直不能实习多级导航,很难调成和模版一样的代码,后来找了一个用函数做的导航,以前也用过,不过没成功过,今天早上又试了下,居然成功了,还是保留下来吧
很多时候我们用帝国CMS建站需要用到多级栏目导航,但是官方没有具体的实现方法跟教程,所以需要我们自己开发,下面CMS资源网就跟大家分享一下如果用帝国CMS实现多级栏目导航功能。
第一步:找到并打开/e/class/userfun.php文件,这个文件是专门给用户添加自定义函数用的,我们可以将自己开发的函数直接放进这个文件里面,一般二次开发都是修改这个文件。
一般默认情况下这个文件的内容会是下面这样的:
ps:如果有改动请自行将需要添加的代码放在最后面!
|
将其修改为如下代码:
思良:方便大家拷贝代码没要前面的123,而且测试,该代码只能在首页有用,原代码是相对路径,如果到了列表页或者内容页,那么路径又重复了,比如,首页显示新闻列表超链接是http://localhost/news,如果在新闻列表里导航就变成了http://localhost/news/news这样就不能访问,于是改成绝对路径,即超链接前面添加/,而且该导航只能支持静态路径,即http://localhost/news而不是http://localhost/e/action/ListInfo/?classid=36,所以用该代码时,列表页最好是静态的,内容可以是动态,怎么解决我研究下。
<?php //---------------------------用户自定义标签函数文件 function user_ListCats($bclassid) { global $empire, $dbtbpre; // classpath 为地址 $sql=$empire->query("select classid, classname, bclassid, islast, classpath, classurl from {$dbtbpre}enewsclass where bclassid='$bclassid' and wburl='' order by myorder,classid"); // 判断是否有类别记录 $num=$empire->num1($sql); if ($num == 0 && $bclassid == 0)//无记录 { echo $GLOBALS['notrecordword']; return ""; } if ($num == 0) { return ""; } $i = 1; while ($r=$empire->fetch($sql)) { // 如果不是终极栏目,显示其子目录 if(empty($r[islast])) { echo '<li><a href="/' . $r[classpath] . '">' . $r[classname] .'</a>'."\r\n"; echo '<ul>'."\r\n"; user_ListCats($r[classid], $showMore); echo '</ul>'."\r\n"; echo '</li>'."\r\n"; } else { echo '<li><a href="/' . $r[classpath] . '">' . $r[classname] .'</a></li>'."\r\n"; } $i += 1; } } ?> |
修改完成后保存。
第二步:进入帝国CMS后台管理
点击:模板-->标签-->管理标签
点击:【增加标签】按钮
标签名:自己填写
标签符号:myli (当然你也可以填写其他的,在调用时相应的修改下即可)
所属类别:不用改。
函数名:user_ListCats
注意大小写,不可改动,一定要写对。
是否开启标签:选是
填写完成后点击提交按钮。
第三步:在模板需要调用多级导航的地方添加如下代码:
|
完成后保存即可,更新首页就会发现有效果了!
[myli]0,1[/myli]标签的两个参数说明 :第一个是栏目ID,0为所有栏目,第二个为是否显示多级子栏目,1为显示。0为只显示一级。
原文:http://www.dedejs.com/html/article-852-1.html