Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
< >
1 2 3 4 5

Drupal 7 вбудовані пункти меню

Сьогодні мені довелося зробити досить типове завдання на тему Drupal, перетворивши блок меню на набір вбудованих посилань. На знімках мені треба було йти

від цього: від цього:   до цього: до цього:

Так як я зазвичай роблю модуль dev і подібні завдання для Koumbit Я знав, що у Drupal вже є вбудований клас для списків, що містять посилання, які відображатимуть мої посилання вбудовано. Цей клас є "ланками". На жаль, я не знаю, як змінити ці значення на шарі теми. Таким чином, я відвідав сторінку API theme_menu_tree (), сподіваючись на деяке натхнення, і знайшов деякий в цей коментар від wgsimon . Спеціальна тема може перевизначити тематику певного пункту меню в Drupal 7 за допомогою шаблону THEME_menu_tree__MENU_NAME ().

Я додав наступний код до template.php моєї теми, щоб зробити як стандартне меню користувача, так і наше спеціальне меню для анонімних користувачів використовують вбудовані в Drupal вбудовані теми для вбудованих посилань:

/ ** * Зробити користувачем вбудоване меню * / function customtheme_menu_tree__user_menu ($ variables) {return '& lt; ul class = "посилання вбудованого кліку" & gt; " . $ variables ['tree']. "& lt; / ul & gt;" ; } / ** * Зробити анонімне меню користувача вбудованим * / function customtheme_menu_tree__menu_user_menu_anonymous_ ($ variables) {return '& lt; ul class = "links inline clearfix" & gt;' . $ variables ['tree']. "& lt; / ul & gt;" ; }

Просто замініть customtheme на назви тем і змініть назви меню, щоб використовувати їх самостійно.

Для мовного перемикача я зробив щось подібне, після консультації locale_block_view () в API і бачачи, що мовний перемикач використовує тему ('links__locale_block', $ variables); забезпечити його зміст. Заміщення на основі шаблону.php виглядало так:

/ ** * Тема посилання на мовний перемикач як вбудований * / function customtheme_links__locale_block ($ variables) {array_push ($ variables ['attributes'] ['class'], 'links', 'inline', 'clearfix'); тема повернення ('посилання', $ змінні); }

Таким чином, я дізнався, що шаблон theme_function__object_name буде працювати для будь-якої теми, яку називають таким чином. Я впевнений, що це потрібно вказати десь у документації API Drupal.

У цей момент мої меню виглядали так: У цей момент мої меню виглядали так:

Останній крок є більш специфічним для теми. У моєму випадку я перемістив вміст <div class = "region-header"> і навколишню розмітку в моїй сторінці.tpl.php до логотипу, і вставив наступні правила CSS у відповідні файли:

.region-header .block {display: inline-block; margin-bottom: 0; } .region-header {text-align: right; }

Результат: Результат:

Очевидно, що ще залишається деяка робота до того, як кінцевий продукт виглядає як дизайн, але моя головна увага до цього моменту полягала у тому, щоб уникнути загроз моїм CSS кодом, який вже є в ядрі Drupal.