Drupal 7 и использование пользовательских шаблонов с темой () - PullRequest
1 голос
/ 20 января 2011

У меня есть список пунктов в главном меню по умолчанию.Я пытаюсь переопределить шаблон, чтобы я мог перебирать каждый элемент и пользовательский шаблон / тему по всему меню.

echo theme('links', array('links' => menu_navigation_links('main-menu', 0)));

main-menu - это идентификатор меню по умолчанию, который предоставляет drupal.Первый параметр темы говорит ей использовать шаблон ссылок по умолчанию - это я так понимаю.Как мне сказать, чтобы он использовал мой mainmenu.tpl.php, который находится в каталоге mytheme?

Я попытался создать файл с именем mainmenu.tpl.php и вызвать его с помощью

theme('links__mainmenu.tpl.php')

Так какобеспечить откат к ссылкам по умолчанию в случае, если mainmenu.tpl.php должен исчезнуть каждый раз.Я называю файлы неправильными или что-то в этом роде, и я не могу понять это.Справка:)

Ура, Алекс

Ответы [ 2 ]

4 голосов
/ 20 января 2011

Тема модуля по умолчанию определяется в методе hook_theme. Эта функция позволяет объявлять файлы тем (.tpl.php) и передаваемые им переменные. Чтобы объявить файл темы по умолчанию, используйте поле template.

function hook_theme($existing, $type, $theme, $path) {
  return array(
    'mymodule_display' => array(        /* displayable name */
      'template' => 'mymodule_display', /* template file, leave off .tpl.php */
      'variable' => array(...),         /* associative array of vars used */
    )
  );
}

Эта ссылка содержит более подробный пример.

Чтобы вызвать тему модуля по умолчанию, используйте метод theme(), как показано в исходном сообщении. Что-то вроде:

<?php echo theme('mymodule_display', array(/* vars */));

Двойное подчеркивание используется для определения резервных тем, причем последняя является предпочтительной. Следовательно, theme('links__mymodule_display', ...) означает, что Drupal будет использовать тему модуля Links, только если mymodule_display не может быть восстановлено.

0 голосов
/ 20 января 2011

Вид базового, но реализует ли ваша тема базовую тему и установлена ​​ли ваша тема по умолчанию?

...