УрокНемного о выводе меню через шаблон

Поговорим немного о том, как выводить меню через тему. Обычно это выводится через файл page.tpl.php вот такой строкой кода:

<?php echo theme('links', $primary_links); ?>

Если нам надо поменять вывод ссылок, то нам понадобится функция theme_links(), которую можно найти в файле theme.inc в папке drupal/includes. Достаточно запихнуть эту функцию в файл template.php своей темы, изменив название theme_links на имяТемы_links - и подхватываться будет именно ваше выполнение этой функции, а не дефолтное.

Прошу обратить внимание, что вывод через theme('links', $primary_links) выводит только верхний уровень меню. Чтобы вывести меню со всеми его дочерними элементами, надо воспользоваться функцией menu_tree('primary-links'), тоесть написать

<?php echo menu_tree('primary-links'); ?>

Если надо поменять вывод этой функции - разбираем theme_menu_item(). Абсолютно аналагично можно вывести любое меню, включая secondary links.

Комментарии

Аватар пользователя Тайный поклонник
Тайный поклонник написал:

И дописываем последний абзац

Если нам надо поменять вывод ссылок, то нам понадобится функция theme_menu_item() ...

06.09.2010 13:46
Аватар пользователя SplasH
SplasH написал:

Ага, забыл написать. Спасибо большое

06.09.2010 14:18
Аватар пользователя Евгений
Евгений написал:

Подскажите как переопределить вывод только определенного меню ? темизация функций theme_menu_item() и theme_links() применяется сразу ко всем меню

12.11.2010 10:51
Аватар пользователя SplasH
SplasH написал:

написать свою функцию вывода меню) Можно воровать из theme_menu_links, только добавив туда нужный вам код

12.11.2010 14:53
Аватар пользователя Тайный поклонник
Тайный поклонник написал:

Спасибо, очень помогли.
Не подскажете, как зделать так, чтобы созданное меню при разворачивании не опускало все содержимое вниз, чтобы список подразделов открывался поверх контента.

24.08.2011 09:10
Аватар пользователя Znaem.net
Znaem.net написал:

CSS - пока еще жив !!!

06.12.2011 09:53

Комментировать

                                                                                  
88 888888888888 88888888ba 88b d88 db
88 ,8P' 88 "8b 888b d888 d88b
88 d8" 88 ,8P 88`8b d8'88 d8'`8b
88 ,8P' 88aaaaaa8P' 88 `8b d8' 88 d8' `8b
88 d8" 88""""""8b, 88 `8b d8' 88 d8YaaaaY8b
88 ,8P' 88 `8b 88 `8b d8' 88 d8""""""""8b
88 d8" 88 a8P 88 `888' 88 d8' `8b
88888888888 8P' 88888888P" 88 `8' 88 d8' `8b

Enter the code depicted in ASCII art style.