Создайте файл шаблона для меню - PullRequest
0 голосов
/ 07 декабря 2011

Я хочу создать файл шаблона для меню и пытаюсь что-то вроде этого:

function MYTHEME_menu_tree__main_menu($variables) {
   return theme('mymainmenu', $variables);
}

Я редактирую HTML-код главного меню в mymainmenu.tpl.php, но этот код неза работой.Почему?

1 Ответ

1 голос
/ 07 декабря 2011

Я думаю, что вы используете неправильный подход.В Drupal 7 вам вообще не нужно вызывать метод theme ().Вместо этого вам следует сосредоточиться на визуализируемых массивах и вызывать drupal_render (), который, в свою очередь, вызывает для вас theme ().

После этого давайте сосредоточимся на вашей проблеме:

должен создать мою реализацию hook_theme ().Этот хук определяет, используете ли вы функцию или файл шаблона для рендеринга вашего HTML.Он также определяет, какие переменные передать в функцию / шаблон.Вот краткий пример реализации hook_theme ():

mymodule_theme($existing, $type, $theme, $path) {
  return array(
    'theme_name' => array(
       'variables' => array(
          'options' => NULL,
       )
       'template' => 'theme-name'
   );
}

В этом примере при вызове 'theme_name' вы также сможете передавать переменную (опции).

Послечто, создайте свой файл tpl.php и заполните его HTML и данными, которые вы хотите.Вы либо создаете файл шаблона или функцию, но не оба одновременно.

Теперь, в обратном вызове для вашего меню, вы хотите вернуть рендеринг-массив следующим образом:

$output = array(
   '#theme' => 'theme-name',
   '#options' => $aVariable,
);
return $output;

Как упоминал Клайвв комментарии было бы более полезно, если бы вы опубликовали все свои методы, относящиеся к вашей проблеме, чтобы мы могли лучше оценить вашу проблему.

...