-1

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

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

我在 mymainmenu.tpl.php 中编辑了主菜单的 HTML,但这段代码不起作用。为什么?

4

1 回答 1

1

我认为你在这里采取了错误的方法。在 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;

正如 Clive 在评论中提到的,如果您发布所有提及您的问题的方法会更有用,这样我们可以更好地评估您的问题。

于 2011-12-07T14:24:25.597 回答