为菜单创建模板文件

时间:2011-12-07 09:49:15

标签: drupal drupal-7 drupal-hooks

我想为菜单创建一个模板文件,我正在尝试这样的事情:

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

我在mymainmenu.tpl.php中编辑主菜单的HTML,但此代码无效。为什么呢?

1 个答案:

答案 0 :(得分:1)

我认为你在这里采取了错误的做法。在Drupal 7中,您根本不需要调用theme()方法。您应该专注于可渲染数组并调用drupal_render(),而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;

正如Clive在评论中所提到的,如果您发布所有涉及问题的方法,那么我们可能会更好地衡量您的问题。