使用模板建议的模式在hook_theme()中不起作用

时间:2011-08-24 11:47:13

标签: drupal drupal-6 drupal-theming

我正在尝试实施模式和模板建议,但它不起作用 以下是我的模式hook_theme()的实现:

$theme['nm_home_page_zone'] = array(
  'pattern' => 'nm_home_page_zone__',
  'arguments' => array('nodes_content' => array(), 'nodes' => array()),
  'template' => 'zone-contenu',
),

我使用以下代码调用theme()

$output .= theme(array('nm_home_page_zone__'.$rowZone->model.'_'.$rowZone->weight, 'nm_home_page_zone__'.$rowZone->model, 'nm_home_page_zone'), array(), array());

我的主题和模块中有2个模板文件(zone-contenu.tpl.php和zone-contenu - one.tpl.php)(只是为了确定)。
在我的情况下,模式和模板建议应该使用zone-contenu - one.tpl.php,但它不起作用。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:5)

我得到了答案(虽然很简单):模板文件必须被命名为主题钩子(键)
所以这些变化都在hook_theme中:

$theme['zone-contenu'] = array(
  'pattern' => 'zone-contenu__',
  'arguments' => array('nodes_content' => array(), 'nodes' => array()),
  'template' => 'zone-contenu',
),


就是这样!你很高兴玩模式:)

请记住,您可以将带有theme()的动态模板与类似的字符串一起使用:

theme('zone_contenu__fun__here', $hello);

在这个例子中,Drupal会自动尝试查找zone-contenu - fun - here.tpl.php然后是zone-contenu - fun.tpl.php,最后是zone-contenu.php
如果要控制建议的顺序,请给出如上所示的数组(FIFO):

$output .= theme(array('nm_home_page_zone__'.$rowZone->model.'_'.$rowZone->weight, 'nm_home_page_zone__'.$rowZone->model, 'nm_home_page_zone'), array(), array());

希望这有帮助!