ВопросНеактивный пункт меню для текущей страницы
Хочется в главном меню сделать так, чтобы пункт, ведущий на текущую (открытую) страницу, был не ссылкой, а просто текстом. На drupal.ru нашел такой код:
<?php function replace_active_link($text) { $pattern = "/<a[^>]* class=\"[^\"]*active[^\"]*\"[^>]*>([^<]*)<\/a>/"; $replace = "<span class=\"active\">\${1}</span>"; return preg_replace($pattern, $replace, $text); } ?> <?php print replace_active_link($menu) ?>
Буду благодарен, если поможете разжевать :)
Ну или по традиции, Евгений нужную ссылку даст на мануал, за что также буду благодарен! :)
- vegas
- 10.12.2011
- 12021
Комментарии
Ну смотри. HTML код у пункта меню приблизительно такой (взял с этого сайта):
Когда я нахожусь на главной странице у пункта меню Главная, точнее, у его ссылки появляется класс active. Функция replace_active_link() находит ссылку с классом active и заменяет её на span с классом active. В итоге ссылка исчезает.
В функцию replace_active_link() надо передавать отрендеренный HTML с меню. Т.е. для page.tpl.php использование приблизительно такое (пример для D7):
Совсем другое дело! Спасибо!
Еще просьба объяснить, пожалуйста, как в переменную $menu запихнуть menu_tree, чтобы подменю выводилось? Что-то никак не могу накопать правильный код (
Сделал так:
Дерево выводится, только вот функция подхватывает также класс active-trail, в итоге родительский пункт подменю тоже становится spanом.
Получается, что в строке:
надо как-то исправить, но я еще не разобрался в этой абракадабре :)
Либо лезть в функцию вывода меню и убирать там active-trail...
Бррррр! Даже страшно об этом думать.
Так а может через js проще? Или всё же переписать вывод меню.. Потому что регулярными выражениями там жесть получается)
Иногда здесь чувствую себя как школьник на симпозиуме :) Но я очень старательно вникаю.
Что значит "регулярные выражения"?
Регулярные выражения - это регулярные выражения :)
Спасибочки за ссылку! Немного разобрался. Может это частный случай, но в моём шаблоне всё good! Исправил строчку:
и теперь выглядит так, как мне нужно. В span преобразуется только ссылка класса active.
:-)))))
Вот видишь, теперь и ты в этом АДе разбираешься =)
Комментировать