Drupal 7和主题()使用自定义模板

时间:2011-01-20 16:01:22

标签: drupal drupal-7

我在默认主菜单中有一个项目列表。我试图覆盖模板,以便我可以遍历每个项目和自定义模板/主题整个菜单。

echo theme('links', array('links' => menu_navigation_links('main-menu', 0)));

主菜单是drupal提供的默认菜单ID。主题的第一个参数是告诉它使用默认的“链接”模板 - 这是我理解的。如何告诉它使用mytheme目录中的MY mainmenu.tpl.php?

我尝试创建一个名为mainmenu.tpl.php的文件并使用

调用它
theme('links__mainmenu.tpl.php')

为了在mainmenu.tpl.php每个消失的情况下提供默认链接的回退。我将文件命名为错误或其他东西,我不能为我的生活弄清楚。帮助:)

干杯, 亚历

2 个答案:

答案 0 :(得分:4)

模块的默认主题在hook_theme方法中定义。此函数允许您声明主题文件(.tpl.php)和传递给它们的变量。要声明默认主题文件,请使用template字段。

function hook_theme($existing, $type, $theme, $path) {
  return array(
    'mymodule_display' => array(        /* displayable name */
      'template' => 'mymodule_display', /* template file, leave off .tpl.php */
      'variable' => array(...),         /* associative array of vars used */
    )
  );
}

link包含更深入的示例。

要调用模块的默认主题,请使用theme()方法,如原始帖子中所示。类似的东西:

<?php echo theme('mymodule_display', array(/* vars */));

双下划线用于定义后备主题,最后一个是首选。因此,theme('links__mymodule_display', ...)表示只有在Links无法恢复时,Drupal才会使用mymodule_display模块主题。

答案 1 :(得分:0)

有点基本但你的主题是否实现基本主题并且你的主题设置为默认主题?