2011-01-20 78 views
1

我有默认主菜单中的项目列表。我正在尝试覆盖模板,以便遍历每个项目和自定义模板/主题整个菜单。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链接应该每隔消失。我正在命名文件错误或什么,我不能为我的生活弄清楚。帮助:)

干杯,亚历克斯

回答

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', ...)意味着只有当mymodule_display不能被解除时,Drupal才会使用Links模块主题。