我正在尝试实施模式和模板建议,但它不起作用
以下是我的模式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,但它不起作用。
我在这里缺少什么?
答案 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());
希望这有帮助!