我想为菜单创建一个模板文件,我正在尝试这样的事情:
function MYTHEME_menu_tree__main_menu($variables) {
return theme('mymainmenu', $variables);
}
我在mymainmenu.tpl.php中编辑主菜单的HTML,但此代码无效。为什么呢?
答案 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在评论中所提到的,如果您发布所有涉及问题的方法,那么我们可能会更好地衡量您的问题。