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

Plu*_*rge 4 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',
),
Run Code Online (Sandbox Code Playgroud)

theme()用以下代码调用:

$output .= theme(array('nm_home_page_zone__'.$rowZone->model.'_'.$rowZone->weight, 'nm_home_page_zone__'.$rowZone->model, 'nm_home_page_zone'), array(), array());
Run Code Online (Sandbox Code Playgroud)

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

我在这里缺少什么?

Plu*_*rge 5

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

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


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

请记住,你可以使用带有theme()的动态模板,其中包含以下字符串:

theme('zone_contenu__fun__here', $hello);
Run Code Online (Sandbox Code Playgroud)

在这个例子中,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());
Run Code Online (Sandbox Code Playgroud)

希望这有帮助!