• Инструменты для разработчика

    • Самые удобные инстременты для разработчика, которые облегчат жизнь любого как начинающего так и продвинутого разработчика. Украшатели, уменьшители, конвертеры кодов. Доменные инструменты. Всё в одном комплекте.
  • Использование BB кодов. Тут указаны существующие BB коды на форуме.

[PHP] СОЗДАНИЕ ДВИЖКА НА CODEIGNITER 3 + HMVC. ЧАСТЬ 5. СОЗДАНИЕ МОДУЛЯ MENU

impuLse #IT

Администратор
Команда форума
Регистрация
12.03.2015
Сообщения
914
Репутация
448
Баллы
74
Награды
2
Адрес
mySQL
Лучшие ответы
0
  • Супер постер
  • Постер
Давайте напишем с вами еще один небольшой модуль + укрепим уже пройденный ранее материал по созданию меню для нашего движка.
А результат будет следующий:
  • Создадим 2 таблицы в бд - для хранения информации о меню и самих данных
  • Напишем рекурсивную функцию для вывода многоуровневого меню
  • Напишем функцию для вывода простого(универсального) меню
  • Вызовем 2 меню в разных местах сайта с помощью модульного расширения
  • Напишем небольшую jquery функцию добавляющую класс 'active' к нужному меню
МОДУЛЬ MENU. СОЗДАНИЕ БАЗЫ ДАННЫХ
Итак создадим две таблицы в бд и наполним их верхним(нестандартным) и правым(многоуровневым) меню:
PHP:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
СТРУКТУРА МОДУЛЯ MENU. РЕКУРСИВНАЯ ФУНКЦИЯ ВЫВОДА МНОГОУРОВНЕВОГО МЕНЮ CODEIGNITER 3 + HMVC.
Не будем изменять нашей традиции и создадим папку menu в каталоге modules, контроллер Menu.php и модель Menu_model.php


Теперь для нашего класса Menu мы напишем 2 метода: get_menu(имя_меню) - основная функция, которую мы будем использовать в каждом нашем проекте. _build_tree - будет сердцем нашего модуля, эта функция позволяет строить дерево меню(иерархию) абсолютно любой вложенности.

Информация Обратите внимание! Для скрытия определенных методов от публичного доступа, нужно просто объявить метод частным или защищенным, или в моем случае - добавляем префикс "_" к имени. Наш метод более недоступен по URL запросу.


Дополнительно - get_simple_menu(имя_меню) - примитивная функция, но порой жизненно необходима.
Зачем?
Иногда нужно использовать покупные шаблоны (к примеру с сайта:
Пожалуйста, Войти или Регистрация для просмотра содержимого URL-адресов!
). А в современных или адаптивных или просто примитивных меню - уже не отделаешься обычной стилизацией #menu>ul>li>ul>li>ul>li. Вот для этого мы напишем функцию выбирая все ссылки и шаблонизируя меню по собственному вкусу и с уникальными стилями. В нашем шаблоне bootstrap как раз такой случай с верхним меню;-)
Итак, код Menu.php и следом Menu_model.php:
PHP:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
PHP:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!

Работу контроллера мы описали, проблем с моделью возникнуть не должно - 2 объединения (joins) в одном запросе. позволяет выбирать данные меню не по уникальному идентификатору а по системному имени меню. Это очень удобно при администрировании и запросе нашего модуля из шаблона. Давайте прямо сейчас и сделаем вызов из 3х шаблонов.

Первое - это главное меню в шаблоне index.tpl
PHP:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
В шаблонах category_full.tpl и page_full.tpl мы вызовем правое меню(right_menu) в сайдбаре
PHP:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
На мой взгляд - такая система вывода меню - просто изумительная. Мы можем создавать любое количество навигационных блоков, для любой части сайта. Мы не зависим более от общих библиотек или контроллеров. Мы можем вообще не использовать меню на сайте , если в нем нет нужды.

Давным давно - генерируя меню для сайта - приходилось делать несколько лишних запросов к БД. проверять текущий URL и в цикле производить проверку на совпадение ссылки меню и активной странице - и только тогда добавлять класс 'active'. Сейчас мы возложим эту задачу не на сторону сервера а на сторону клиента - миниатюрным jQuery скриптом, функционирующем при готовности страницы.
PHP:
Пожалуйста, Войти или Регистрация для просмотра содержания кодов!
Не забудьте добавить стили для каждого из меню, что бы увидеть скрипт в действии. Класс 'active' верхнего меню остался с исходников шаблона bootstrap, напомню: вот шаблон сайта на основе которого мы делаем наши уроки. А боковое меню я подсветил розовым, как на скриншоте.

Вот и все на сегодня. Надеюсь, вы под черпнули из данного урока пару трюков для будущей работы с 3й версией фреймворка. Как всегда полные исходные коды
Пожалуйста, Войти или Регистрация для просмотра содержимого URL-адресов!
со всеми последними модулями.

Статья взято из сайта polyakov.co.ua
 
Сверху Снизу