帝国cms 主导航条下拉菜单功能实现,模板功能扩展

主导航条下拉菜单样式:

实现步骤

1、在公共模板变量》页面头部模板中使用以下标签来加载菜单项

 [listshowclass]'0',13,0,0[/listshowclass]

13对应的是标签模板》新建的一个模板

2、新建标签模板

页面模板内容(*)


  1. <li class="[!--class-menu--]"><a href="[!--bclassurl--]">[!--bclassname--]</a>
  2. <ul class="sub">
  3. [!--empirenews.listtemp--]
  4. <!--list.var1-->
  5. [!--empirenews.listtemp--]
  6. </ul>
  7. </li>

列表内容模板(list.var) (*)

<li><a href="[!--classurl--]" title="[!--classname--]">[!--classname--]</a></li>

 3、模板功能扩展

由于有的功能无法实现,所以需要进行扩展

比如:[!–class-menu–] 这是一个根据有没有子菜单来替换为不同内容的标签;

比如:[!–empirenews.listtemp–] 标签可以出现四次,原本是只能出现两次;

相关文件:EmpireCMS_7.5_SC_UTF8/upload/e/class/t_functions.php

相关代码


  1. //栏目导航标签-循环
  2. function sys_GetShowClassMore($bclassid,$bcr,$tr,$bno,$bnum,$show=0){
  3. global $empire,$class_r,$public_r,$dbtbpre;
  4. //取得模板
  5. $listtemp=$tr[temptext];
  6. $subnews=$tr[subnews];
  7. $listvar=$tr[listvar];
  8. $rownum=$tr[rownum];
  9. $formatdate=$tr[showdate];
  10. if(empty($rownum))
  11. {$rownum=1;}
  12. //替换变量
  13. $listtemp=str_replace("[!--bclassname--]",$bcr[classname],$listtemp);
  14. $bclassurl=sys_ReturnBqClassname($bcr,9);//栏目链接
  15. $listtemp=str_replace("[!--bclassurl--]",$bclassurl,$listtemp);
  16. $listtemp=str_replace("[!--bclassid--]",$bclassid,$listtemp);
  17. $bclassimg=$bcr[classimg]?$bcr[classimg]:$public_r[newsurl]."e/data/images/notimg.gif";//栏目图片
  18. $listtemp=str_replace("[!--bclassimg--]",$bclassimg,$listtemp);
  19. $listtemp=str_replace("[!--bintro--]",nl2br($bcr[intro]),$listtemp);//栏目简介
  20. $listtemp=str_replace("[!--bno--]",$bno,$listtemp);
  21. $listtemp=str_replace("[!--bnum--]",$bnum,$listtemp);
  22. //列表
  23. $list_exp="[!--empirenews.listtemp--]";
  24. $list_r=explode($list_exp,$listtemp);
  25. $listtext=$list_r[1];
  26. $listtext2=$list_r[1];
  27. if(count($list_r)==5)
  28. {
  29. $listtext=$list_r[2];
  30. $listtext2=$list_r[2];
  31. }
  32. $no=1;
  33. $changerow=1;
  34. $sql=$empire->query("select classid,classname,islast,sonclass,tbname,intro,classimg,infos from {$dbtbpre}enewsclass where bclassid='$bclassid' and showclass=0 order by myorder,classid");
  35. while($r=$empire->fetch($sql))
  36. {
  37. //显示栏目数据数
  38. if($show)
  39. {
  40. $num=ReturnClassInfoNum($r);
  41. }
  42. //替换列表变量
  43. $repvar=ReplaceShowClassVars($no,$listvar,$r,$num,0,$subnews);
  44. $listtext=str_replace("<!--list.var".$changerow."-->",$repvar,$listtext);
  45. $changerow+=1;
  46. //超过行数
  47. if($changerow>$rownum)
  48. {
  49. $changerow=1;
  50. $string.=$listtext;
  51. $listtext=$listtext2;
  52. }
  53. $no++;
  54. }
  55. //多余数据
  56. if($changerow<=$rownum&&$listtext<>$listtext2)
  57. {
  58. $string.=$listtext;
  59. }
  60. if(count($list_r)==5)
  61. {
  62. if($no==1){
  63. $string=$list_r[0].$list_r[4]; // 20190606 由于不包含子栏目,所以这里不加 $string
  64. $string=str_replace("[!--class-menu--]","",$string);
  65. }else{
  66. $string=$list_r[0].$list_r[1].$string.$list_r[3].$list_r[4];
  67. $string=str_replace("[!--class-menu--]","menu",$string);
  68. }
  69. }
  70. else
  71. {
  72. $string=$list_r[0].$string.$list_r[2];
  73. }
  74. echo $string;
  75. }

注意:如果你想修改系统原来的模板,不是很熟悉的情况最好先做好备份;其实我觉得最好还是新建一个,把它的内容复制过来改,不然的一旦改的次数多了就找不回以前的了。

皮蛋哥是一个优秀的站长,精品资源尽在皮蛋哥!
皮蛋哥 » 帝国cms 主导航条下拉菜单功能实现,模板功能扩展

发表评论

提供最优质的资源集合

立即查看 了解详情