Выделить пункт меню

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
psevdo
Сообщения: 96
Зарегистрирован: 2013.04.10, 11:10

Выделить пункт меню

Сообщение psevdo »

Всем здравствуйте. Пишу один проект на Yii. Сейчас нужно реализовать вывод меню и выделение активного пункта меню.
Допустим имеется такое меню:
  • Главная
  • Каталог
  • Контакты
Каталог это отдельный модуль вот с такой структурой:
  • Список всех категорий
  • Выбранная категория
  • Список элементов категории
Все пункты меню хранятся в БД. Активный пункт меню я нахожу следующим образом... Получаю текущий адрес страницы с GET-параметрами и ищу этот адрес в таблице с пунктами меню. Если нашелся подходящий адрес, то выделаю.
Допустим я сейчас нахожусь на странице Каталог и вижу перед собой список категорий. Соответственно пункт меню Каталог выделяется. Теперь я кликаю на любую категорию. Адрес страницы меняется и в БД я такого адреса не нахожу. Соответственно ни один их пунктов меню не выделяется. Но ведь страница относится к Каталогу. Как мне выйти из положения универсально (Ведь такая же проблема актуальна и для модуля блог например)?
Avgusto
Сообщения: 46
Зарегистрирован: 2013.11.07, 21:09

Re: Выделить пункт меню

Сообщение Avgusto »

Получаю текущий адрес страницы с GET-параметрами и ищу этот адрес в таблице с пунктами меню. Если нашелся подходящий адрес, то выделаю.
Зачем еще один раз в БД искать?
БД (или кеш) один раз отдаёт меню, и далее Вы его рендерите.
На этапе рендера сделайте проверку URL (GET-параметров) регулярным выражением.
Подсветка при частичном совпадении роутов задаётся в самой регулярке.
ИМХО так.

upd: с регуляркой погорячился.
Вобщем задача называется: "поиск подстроки в строке"
Тот-же strpos() может подойти. От сложности урлов зависит, что будет оптимальнее.
А регулярка, как один из вариантов ;)
psevdo
Сообщения: 96
Зарегистрирован: 2013.04.10, 11:10

Re: Выделить пункт меню

Сообщение psevdo »

Дельное замечание. Но мой главный вопрос все еще актуален.
Avgusto
Сообщения: 46
Зарегистрирован: 2013.11.07, 21:09

Re: Выделить пункт меню

Сообщение Avgusto »

А Вы ждёте готовый код?
Ответ на главный вопрос: "Поиск подстроки в строке".
Я себе делал как описал, и подсвечиваются все совпавшие уровни в выпадающих списках - родитель и все(текущие) дочерние.
Только делал я это не на Yii, тут я пока в стадии изучения.
psevdo
Сообщения: 96
Зарегистрирован: 2013.04.10, 11:10

Re: Выделить пункт меню

Сообщение psevdo »

Спасибо. Надо подумать.
sajjad123
Сообщения: 1
Зарегистрирован: 2014.12.10, 14:43

Re: Выделить пункт меню

Сообщение sajjad123 »

Таким образом мы при каждом открытии формы добавляем по скрипту (что в общем-то есть говнокод),
но благодаря id картинки они не путаются и работают нормально.
Решение далеко не лучшее, но относительно простое.
Enjoy the real success with 400-101 - free dumps exam and cisco ccna online training programs and latest 300-209 - testking - braindumps.com Also prepare for next level with quality marygrove questions and www.pittstate.edu and join Curry College
Ответить