我想为菜单创建一个模板文件,我正在尝试这样的事情:
function MYTHEME_menu_tree__main_menu($variables) {
return theme('mymainmenu', $variables);
}
我在 mymainmenu.tpl.php 中编辑了主菜单的 HTML,但这段代码不起作用。为什么?
我想为菜单创建一个模板文件,我正在尝试这样的事情:
function MYTHEME_menu_tree__main_menu($variables) {
return theme('mymainmenu', $variables);
}
我在 mymainmenu.tpl.php 中编辑了主菜单的 HTML,但这段代码不起作用。为什么?
我认为你在这里采取了错误的方法。在 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 在评论中提到的,如果您发布所有提及您的问题的方法会更有用,这样我们可以更好地评估您的问题。