2010-04-17 102 views
0

我使用以下代码从一些CMS加载主菜单元素,现在的代码是完美的,只不过它将一行菜单中的所有主项加载 - 这将使它的宽度在任何居中设计(不足1000px)下都不可用。我想要更改此脚本,因此在15个主要元素添加一个“更多”按钮后,其余主菜单项将显示为此子项“更多”按钮(他们将没有自己的子项目,前15名)我该怎么做? 谢谢!PHP菜单项计数,然后在更多按钮下添加

 <?php 

require_once('../../../inc/header.inc.php'); 
require_once(DIRECTORY_PATH_INC . 'membership_levels.inc.php'); 
require_once(DIRECTORY_PATH_ROOT . "templates/tmpl_{$tmpl}/scripts/TemplMenu.php"); 

      class SimpleMenu extends TemplMenu 
      { 
      function getCode() 
      { 
      $this->iElementsCntInLine = 100; 
      $this->getMenuInfo(); 
      $this->genTopItems(); 
      return $this->sCode; 
      } 

      function genTopItem($sText, $sLink, $sTarget, $sOnclick, $bActive, $iItemID, $isBold = false, $sPicture = '') 
      { 
      $sActiveStyle = ($bActive) ? ' id="tm_active"' : ''; 

      if (!$bActive) { 
      $sAlt= $sOnclick ? (' alt="' . $sOnclick . '"') : ''; 
      $sTarget = $sTarget ? (' target="_parent"') : ''; 
      } 

      $sLink = (strpos($sLink, 'http://') === false && !strlen($sOnclick)) ? $this->sSiteUrl . $sLink : $sLink; 

      $sSubMenu = $this->getAllSubMenus($iItemID); 

      $sImgTabStyle = $sPictureRep = ''; 
      if ($isBold && $sPicture != '') { 
      $sPicturePath = getTemplateIcon($sPicture); 
      $sPictureRep = "<img src='{$sPicturePath}' style='vertical-align:middle;width:16px;height:16px;' />"; 
      $sText = '&nbsp;'; 
      $sImgTabStyle = 'style="width:38px;"'; 
      } 

      $sMainSubs = ($sSubMenu=='') ? '' : " {$sSubMenu} </a>"; 
      $this->sCode .= " 

       <li><a href='{$sLink}' {$sOnclick} target='_parent'>{$sPictureRep}{$sText}</a> 
       <div id='submenu'> 
       <ul> 
       <li>{$sMainSubs}</li> 
       </ul> 
       </div> 
       </li> 
      "; 
      } 
      } 

      $objMenu = new SimpleMenu(); 
      echo "<ul id='ddmenu'>"; 
      echo $objMenu->getCode(); 
      echo "</ul>"; 

    ?> 

回答

0

个人我会使用CSS和Javascript(+ jQuery)来做到这一点。

使用Javascript查找ul#ddmenu中的任何li,其索引为15或更多,并为它们分配不同的类别。然后,添加您的“更多”按钮,并使用onclick/hover等显示剩余的li s。

相关问题