Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal 为菜单创建模板文件_Drupal_Drupal 7_Drupal Hooks - Fatal编程技术网

Drupal 为菜单创建模板文件

Drupal 为菜单创建模板文件,drupal,drupal-7,drupal-hooks,Drupal,Drupal 7,Drupal Hooks,我想为菜单创建一个模板文件,我正在尝试以下操作: function MYTHEME_menu_tree__main_menu($variables) { return theme('mymainmenu', $variables); } 我在mymainmenu.tpl.php中编辑了主菜单的HTML,但这段代码不起作用。为什么?我认为你在这里采取了错误的方法。在Drupal7中,根本不需要调用theme()方法。相反,您应该关注可渲染数组并调用drupal_render(),后者反过来

我想为菜单创建一个模板文件,我正在尝试以下操作:

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

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

我认为你在这里采取了错误的方法。在Drupal7中,根本不需要调用theme()方法。相反,您应该关注可渲染数组并调用drupal_render(),后者反过来为您调用theme()

有了这些,让我们集中精力解决手头的问题:

您应该创建my 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;

正如克莱夫在评论中提到的,如果你发布所有与你的问题相关的方法,那么我们可能会更好地评估你的问题,这将更加有用。

你可能会想发布你的
主题\u我的主菜单
hook\u主题
函数,而问题最有可能出现在这些函数中的一个函数中!但是我还是不明白,这个函数应该放在哪里?在我的template.php中?我需要为此创建一个模块吗?例如,如果我想编辑主菜单,我如何用这种方式编辑它?谢谢是的,您必须为此创建一个模块,并在那里实现hook_theme()。输出代码的部分也可以从模块文件中调用。我不太明白你想用主菜单做什么。如果可能的话,在主菜单中添加元素应该通过管理部分的结构界面来完成。谢谢,我会试试的。我想编辑html,例如
,如果这是一项基本的工作,只需将菜单项添加到主菜单中,那么您应该通过结构界面来完成。祝你好运。