0

そのため、drupal 7 サイトの 1 つの領域にいくつかのメニュー ブロックがあります。<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>";
                    }
            }
    }
}
4

2 に答える 2

0

ブロックテンプレートを調べてください。基本ブロック テンプレートは modules/block/block.tpl.php にあります。特定のブロックの基本テンプレートをオーバーライドできます。

基本的には、テーマ フォルダに新しいブロック テンプレート ファイルを作成するだけです。

https://drupal.org/node/1089656

于 2014-05-30T02:34:25.407 に答える
0
function mytheme_preprocess_block(&$variables) {
  if ($variables['region'] == 'footer-top' && $variables['block']->module == 'menu_block') {
    $variables['content'] = 
            '<section>'. 
                   $variables['elements']['#children'] 
            .'</section>';

  }
}
于 2014-05-30T07:18:33.630 に答える