【问题标题】:How do I change the output of drupal 7 menu blocks in one specific region?如何更改特定区域中的 drupal 7 菜单块的输出?
【发布时间】: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 &amp;$item){ ($item by ref)
  • 对不起,如果我之前没有具体说明,我的大脑被炸了...我有一个区域当前仅包含菜单块...我想将每个菜单块包装在
    标签。我只想为这个区域做这个,所以编辑 block--menu.tpl.php 已经出来了,我想避免在 tpl 中添加条件语句。 (我想将 .tpl 文件保留为标记,而不是逻辑)代码检查它是否是正确的区域,循环遍历该区域中的所有块,如果它是菜单块,则尝试包装输出在
    标签中。我希望这更有意义。另外,编辑了上面的代码。

标签: php drupal drupal-7 drupal-theming drupal-regions


【解决方案1】:

查看块模板。基本块模板位于 modules/block/block.tpl.php。您可以覆盖特定块的基本模板。

基本上你只需要在你的主题文件夹中创建一个新的块模板文件。

https://drupal.org/node/1089656

【讨论】:

    【解决方案2】:
    function mytheme_preprocess_block(&$variables) {
      if ($variables['region'] == 'footer-top' && $variables['block']->module == 'menu_block') {
        $variables['content'] = 
                '<section>'. 
                       $variables['elements']['#children'] 
                .'</section>';
    
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-07-08
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-19
      相关资源
      最近更新 更多