帝國cms 主導航條下拉菜單功能實現,模板功能擴展

主導航條下拉菜單樣式:

具體應用請查看我的個人網站:無知人生

實現步驟

1、在公共模板變量》頁面頭部模板中使用以下標籤來加載菜單項

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

13對應的是標籤模板》新建的一個模板

2、新建標籤模板

頁面模板內容(*)

<li class="[!--class-menu--]"><a href="[!--bclassurl--]">[!--bclassname--]</a>
 [!--empirenews.listtemp--]
        <ul class="sub">
       [!--empirenews.listtemp--]
       <!--list.var1-->
       [!--empirenews.listtemp--]
        </ul>
        <span></span>
 [!--empirenews.listtemp--]
</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

相關代碼

//欄目導航標籤-循環
function sys_GetShowClassMore($bclassid,$bcr,$tr,$bno,$bnum,$show=0){
	global $empire,$class_r,$public_r,$dbtbpre;
	//取得模板
	$listtemp=$tr[temptext];
	$subnews=$tr[subnews];
	$listvar=$tr[listvar];
	$rownum=$tr[rownum];
	$formatdate=$tr[showdate];
	if(empty($rownum))
	{$rownum=1;}
	//替換變量
	$listtemp=str_replace("[!--bclassname--]",$bcr[classname],$listtemp);
	$bclassurl=sys_ReturnBqClassname($bcr,9);//欄目鏈接
	$listtemp=str_replace("[!--bclassurl--]",$bclassurl,$listtemp);
	$listtemp=str_replace("[!--bclassid--]",$bclassid,$listtemp);
	$bclassimg=$bcr[classimg]?$bcr[classimg]:$public_r[newsurl]."e/data/images/notimg.gif";//欄目圖片
	$listtemp=str_replace("[!--bclassimg--]",$bclassimg,$listtemp);
	$listtemp=str_replace("[!--bintro--]",nl2br($bcr[intro]),$listtemp);//欄目簡介
	$listtemp=str_replace("[!--bno--]",$bno,$listtemp);
	$listtemp=str_replace("[!--bnum--]",$bnum,$listtemp);
	//列表
	$list_exp="[!--empirenews.listtemp--]";
	$list_r=explode($list_exp,$listtemp);
	$listtext=$list_r[1];
    $listtext2=$list_r[1];
    if(count($list_r)==5)
    {
      $listtext=$list_r[2];
      $listtext2=$list_r[2];
    }
	$no=1;
	$changerow=1;
	$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");
	while($r=$empire->fetch($sql))
	{
		//顯示欄目數據數
		if($show)
		{
			$num=ReturnClassInfoNum($r);
		}
		//替換列表變量
		$repvar=ReplaceShowClassVars($no,$listvar,$r,$num,0,$subnews);
		$listtext=str_replace("<!--list.var".$changerow."-->",$repvar,$listtext);
		$changerow+=1;
		//超過行數
		if($changerow>$rownum)
		{
			$changerow=1;
			$string.=$listtext;
			$listtext=$listtext2;
		}
		$no++;
	}
	//多餘數據
    if($changerow<=$rownum&&$listtext<>$listtext2)
	{
		$string.=$listtext;
    }
    if(count($list_r)==5)
    {
      if($no==1){
        $string=$list_r[0].$list_r[4]; // 20190606 由於不包含子欄目,所以這裏不加 $string
        $string=str_replace("[!--class-menu--]","",$string);
      }else{
        $string=$list_r[0].$list_r[1].$string.$list_r[3].$list_r[4];
        $string=str_replace("[!--class-menu--]","menu",$string);
      }
    }
    else
    {
      $string=$list_r[0].$string.$list_r[2];
    }
	echo $string;
}

注意:如果你想修改系統原來的模板,不是很熟悉的情況最好先做好備份;其實我覺得最好還是新建一個,把它的內容複製過來改,不然的一旦改的次數多了就找不回以前的了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章