0

Drupal 7 でブロックのスタイルを設定しようとしているのですが、なかなかうまくいきません。

menu_block モジュールを使用して、メイン メニューからすべてのリンクを取得しました。各メニュー ツリーの div としてテーマにしたい ul にリンクを含むブロックを生成します。

スタイリング自体は簡単なはずですが、スタイリングに使用するテーマ フック/テンプレート ファイル名を見つけるのに本当に苦労しています。

と にフックしようとしましたが、それらはあまりにも多くの場所をテーマにしてtheme_menu_treeおりtheme_menu_link、何をスタイリングしているのかわかりません。試してみましmenu-tree--menu-block--main-menu.tpl.phpたが、変数は必要なものとはまったく異なります。

$contentで変数のスタイルを設定する必要があると思いますblock.tpl.phpが、特定のブロックに対してそれを行う方法がわかりません。ブロック (ブロック タイプ) が (フッターに) 表示されているときにメニュー ポイントのスタイルを設定したい場合、どこに接続すればよいですか?

4

3 に答える 3

2

これを行うのに最も簡単な(必ずしも最良ではない)場所だと思いますhook_block_view_alter()

function MYMODULE_block_view_alter(&$data, $block) {
 if ($block->module == 'menu_block') {
    // Extract the links from the available data
    $links = element_children($data['content']['#content']);
    $content = '';

    // Loop through the links and build up the required output.
    foreach ($links as $link) {
      $content .= '<div class="something">' . l($link['#title'], $link['#href']) . '</div>';
    }

    // Assign the new output to the block content...done :)
    $data['content'] = $content; 
  }
}

Devel モジュールとその便利な機能は、ここでのあなたdpm()の親友です...標準メッセージ領域で適切に構造化された形式で PHP 変数を調べることができます。まだインストールしていない場合は、インストールすることをお勧めします。Drupal 開発には絶対に必要です。

そのフックを実装したら、Drupal のキャッシュをクリアすることを忘れないでください。そうしないと、システムがそれを取得できなくなります。

于 2012-03-09T14:11:02.820 に答える
0

print テーマを使用すると、CSS スタイルを < ul > に配置できます。

print theme('links', array('links' => menu_navigation_links($your_menu_name), 'attributes' => array('class'=> array('ul_class')) ));
于 2015-03-04T13:52:16.660 に答える