Подсчет пунктов меню PHP, затем добавление под кнопкой more - PullRequest
0 голосов
/ 17 апреля 2010

Я использую приведенный ниже код для загрузки элементов главного меню из некоторой 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>";

    ?>

1 Ответ

0 голосов
/ 17 апреля 2010

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

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

...