【发布时间】:2014-05-29 21:25:40
【问题描述】:
所以我在我的 drupal 7 站点的一个区域中有几个菜单块。我需要将这些菜单块中的每一个包装在 <section> 标记中,但不影响所有其他菜单块。我的想法是预处理该区域,检查这些块是否是菜单块,并且如您所见,尝试简单地将输出包装在一个部分标记中。有人可以告诉我我做错了什么吗?这个问题想死我了。
function mytheme_preprocess_region(&$vars){
//checks to see if we're in the correct region
if($vars['region'] == "footer-top"){
//loops through every block in our region
foreach($vars['elements'] as $key => $item){
$block_type = $item['#block']->module;
//if it's a menu block, wrap the output in section tag, this doesnt work
if($block_type == "menu_block"){
//$vars['elements']['menu_block_4']['#children'] = "<section>" . $item['#children'] . "</section>";
$vars['elements'][$key]['#children'] = "<section>" . $item['#children'] . "</section>";
}
}
}
}
【问题讨论】:
-
你能写更多关于具体问题的内容吗?你的代码在做什么而不是你期望它做什么?
-
试试
foreach($vars['elements'] as &$item){($item by ref) -
对不起,如果我之前没有具体说明,我的大脑被炸了...我有一个区域当前仅包含菜单块...我想将每个菜单块包装在
标签。我只想为这个区域做这个,所以编辑 block--menu.tpl.php 已经出来了,我想避免在 tpl 中添加条件语句。 (我想将 .tpl 文件保留为标记,而不是逻辑)代码检查它是否是正确的区域,循环遍历该区域中的所有块,如果它是菜单块,则尝试包装输出在 标签中。我希望这更有意义。另外,编辑了上面的代码。
标签: php drupal drupal-7 drupal-theming drupal-regions