ВопросГоризонтальное тянущееся меню на всю ширину
Добрый день .
Ищу варианты реализации меню .
От 10 до 15 элементов .
Ширина контейнера 100% .
Меню должно растягиваться .
Были попытки размещения блоками , но от этой идеи пришлось отказаться , т.к. не все браузеры его стабильно держали .
Сейчас стоит вопрос выполнения меню заключенного в таблицу .
Покопавшись немного в ядре удалось найти пару функций .
function theme_menu_tree($variables) { return '<ul class="menu clearfix">' . $variables['tree'] . '</ul>'; } function theme_menu_tree_local_action($variables) { $link = $variables['element']['#link']; $output = '<li>'; if (isset($link['href'])) { $output .= l($link['title'], $link['href'], isset($link['localized_options']) ? $link['localized_options'] : array()); } elseif (!empty($link['localized_options']['html'])) { $output .= $link['title']; } else { $output .= check_plain($link['title']); } $output .= "</li>\n"; return $output; }
Естественно сразу попытался заменить теги .
После этого понял , что элементы во всех списках на странице изменились .
Вопрос , как заменить теги оборачивающие элементы списка только у нужного блока ?
Сразу приходит мысль указать в имени функции id блока .
А вообще , очень сильно сомневаюсь по поводу того , какой метод выбрал .
Возможно это делается по другому ?
- ice
- 16.12.2011
- 7135
Комментарии
Так может выведите пункты меню в таблицу шириной 100%? Тогда все пункты точно всегда будут растягиваться на всю ширину контейнера.
Как раз это и является задумкой .
Но как записать нужную функцию пока не очень представляю .
Так как необходимо будет добавлять или удалять пункты , хотелось бы чтоб это понимал шаблон .
Да и вариант с блондинкой модератором не исключается .
Ну во-первых, функции theme_menu_tree_local_action() ни в одной из версий Друпала не существует. Во-вторых, скажите какая у вас версия Друпала и я напишу вам решение.
7
а называется эта функция theme_menu_local_action()
Закиньте в template.php вот такую функцию:
После этого меню выводить вот так (в page.tpl.php):
Это не имплементация методов Друпала, а исключительно своя функция. Сделано это для того, чтобы другие части системы, вызванные через стандартные методы, не были обёрнуты в таблицу, вместо стандартных списков.
Работает )
А это применимо только к основному меню или можно вывести так дополнительное ?
Не верно задал вопрос .
id меню "menu-menu" , как привязать данное решение к нему ?
Любое меню. ID тут не причём) В page.tpl.php передаётся $main_menu и $secondary_menu. Их можно передавать в качестве аргумента в эту функцию.
Видимо лыжи тут не причем , это я ... )
Как же вывести именно это меню в таблице ?
Так я же функцию написал, которое выводит любое меню, которое переданно аргументом?
Главное меню не выводит больше одного уровня .
В настройках естественно указал показать раскрытыми .
Решил создать новое меню и проверить как там дела , а там все в порядке .
А как вы представляете себе выпадающее меню, которое представляет из себя таблицу?
так
Ага, понял. Интересное решение.
Подсказываю как написать решение:
Есть замечательная функция, с которой вы уже знакомы - menu_tree. В ней вам надо изменить вывод функции menu_tree_output, которая и выстраивает html код по уровням.
Код будет примерно такой:
Это слегка видоизменённая функция menu_tree(). Теперь вам надо написать функцию ИМЯТЕМЫ_custom_tree_output(), которая будет как 2 капли воды похожа на menu_tree_output(), но с другим html выводом дочерних элементов.
У вас это работает , скриншот можно посмотреть ?
Я реализацию не писал. Но если вы сделаете так, как я сказал, то можете написать её самостоятельно. Какой у вас уровень программирования?
Читаю книжки , вышиваю крестиком .
Явно не выше низкого , в противном случае не задавал бы вопросов ).
Ну а если серьезно , то черпаю знания php из записей уроков .
Я так понимаю, реализация выпадающего меню требуется от меня ?)) Отпишитесь в этой теме завтра, как будет свободная минутка обещаю набросать работающий код.
Спасибо за отзывчивость .
Жду с нетерпением ).
Вчера обнаружил themer в модуле devel , был поражен тому что он показывает .
Еще пригодится ).
Вызывать как и menu_tree():
Надеюсь, css сделать получится у вас)
ААААА , супер , стили щас прикручу )
Спасибо вам огромное , надеюсь не много времени на меня потратили )
Незачто :) Главное, чтобы всё работало!
Комментировать