Ограничено CMenu в Yii
Начинът за прилагане на този проблем не би трябвало да създава особени затруднения, тъй катоYii Framework е проектиран така, че всяка част от него да може да бъде разширена според необходимите нужди. Следователно ще наследим приспособлениетоCMenu и ще създадем нов клас, нареченTagMenu в /protected/components
Тази конструкция ще ни позволи да използваме целия списък от свойства, публични и защитени методи на класаCMenu, както и да ги разширяваме за собствени нужди. Повече подробности можете да намерите на страницата с документацията.
След това трябва да извикаме джаджата на мястото, където се намира нашето меню. Този пример използва основния изглед на оформление /protected/views/layouts/main.php
По-късно ще обясня защо да използвам свойствотоlastItemCssClass. Свойствотоitem ви позволява да създадете меню в списъчни тагове ( ). Типът свойствоitems е масив във формата:
Виждаме също, че масивътitems се генерира динамично от моделаMobiletags чрез методаgetMenuList(). Помислете за този метод:
Логиката на този метод е такава, че правим ограничен изход от 5 тагова наведнъж като елементи от менюто и избутваме останалите като под-елементи в „Още“.
За лека закуска, както обещах, ще спомена защо свойствотоlastItemCssClass. И всичко това, защото менюто не е лесно за нас :) Според плана, подпозициите „Още.“ трябва да бъдат скрити и да изпадат, когато задържите курсора на мишката върху него. За да направите това, можете да използвате чудесната библиотекаjQueryUI с приспособлението за меню. Всички свойства на тази библиотека и примери са достъпни на страницата с документация на потребителския интерфейс.
Ще покажа на моя пример как да го използвам и всичко е много просто. Свързваме библиотеката и инициализираме всичко в същия /protected/views/layouts/main.php:
И най-накрая стигнахме доlastItemCssClass. Изводът е, че при зареждане на страницатаjQuery UI скрива поделементите „Още.“ след зареждане на съдържанието на цялата страница и те се изплъзват като нескрити със значително количество страници. Следователно, ние дефинираме класаmoreItems с display: none; и по този начин предотвратява изпадането на менюто при всяко зареждане на страницата.
Това всъщност е краят на първата ми статия, надявам се този материал да ви бъде полезен.