Drupal 7 и использование пользовательских шаблонов с theme ()

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

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 исчезнет. Я неправильно называю файлы или что-то в этом роде, и я не могу понять это. Помощь :)

Привет, Алекс


person alex.barylski    schedule 20.01.2011    source источник


Ответы (2)


Тема модуля по умолчанию определяется в 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 */
    )
  );
}

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

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

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

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

person Courtney Christensen    schedule 20.01.2011

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

person msrxthr    schedule 20.01.2011