Количество элементов меню PHP, затем добавьте под кнопку «Дополнительно»

Я использую приведенный ниже код для загрузки элементов главного меню из некоторых CMS, текущий код идеален, за исключением того, что он загружает ВСЕ основные элементы в одну строку меню, что сделает его ширину непригодной для любого центрированного дизайна (менее 1000 пикселей). ).. Я хочу изменить этот скрипт, чтобы после 15 основных элементов добавить кнопку "БОЛЬШЕ", под которой остальные пункты основного меню будут отображаться как подпункты этой кнопки "БОЛЬШЕ" (у них не будет своего собственного подпункта). -предметы как первые 15 делают).. Как мне это сделать? Спасибо!

        <?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>";

    ?>

person Adrian M.    schedule 17.04.2010    source источник


Ответы (1)


Лично я бы использовал для этого CSS и Javascript (+jQuery).

Используйте Javascript, чтобы найти любые li в ul#ddmenu, которые имеют индекс 15 или более, и присвойте им другой класс. Затем добавьте кнопку «Дополнительно» и используйте onclick/hover и т. д., чтобы отобразить оставшиеся lis.

person Josh    schedule 17.04.2010