1

これは本当に基本的な質問ですが、何時間も検索してもわかりません。問題は、Drupal 7 でメニュー ブロックのテーマを設定するにはどうすればよいかということです。

メイン メニューに基づいて、3 つの異なるブロックを作成しました。今私はしたい:

  1. 3 つのブロックすべてに固有の HTML を作成します。つまり、周囲のラッパーを変更し<ul><li>メニューを構築します。特別なクラスを設定して、Drupal で追加されたものをすべて削除したい

  2. 各ブロック内のさまざまなレベルにさまざまなクラスを関連付けます。ブロックの 1 つは 2 つのレベルのメニューを表示します。つまり、サブメニューを表示します。サブメニューの特別なクラスを設定したい...

これは不可能に思えます... :(

事前に助けてくれてありがとう!!!!

4

3 に答える 3

8

テーマ設定はトリッキーな野獣であり、何をする必要があるかによって大きく変わることがよくあります。非常に詳細な説明があっても、「場合による」と言うことができますが、正しい方向に向けるのに役立ついくつかの手順を次に示します.

ステップ 1: Caffeine Addict の提案に従ってブロック tpl.php を使用します。.tpl.php の名前がわからない場合は、Theme Developerモジュールをお勧めします。バグがありますが、これを使用して特定の要素を選択し、.tpl.php ファイルの命名に関する提案を表示させることができます。

devel themer からの候補テンプレート ファイルの概要

ステップ 2: template.php のテーマ / 前処理関数を使用して、事前定義された変数とマークアップを変更します。開始点については、api.drupal.org のtheme_menu_treeおよびtemplate_preprocess_menu_tree関数を必ず確認してください。devel モジュールを使用 している場合はdpm($variables);、それらのそれぞれで使用して、最初から何を使用する必要があるかを確認してください。

それが役立つことを願っています!スーパーフィッシュが代替品かもしれないと彼が言うとき、私はカフェイン中毒者に同意します. また、条件付きサブセクションを独自のブロックに分割するためのメニュー ブロックモジュールも確認する必要があります。

于 2012-08-15T03:12:39.167 に答える
1

davidneedham が言ったことに加えて、Drupal がメニュー HTML タグに追加したものを変更するには、それらをオーバーライドできます。ここに追加されたクラスがあります:

<ul class="expanded">
  <li class="firstleaf">...<li>
  ...
</ul>

このクラスを削除する方法が見つかりませんでしたが、次のblock--system--main_menu.tpl.phpようにファイルでオーバーライドできます。

li.expanded,
li.collapsed,
li.leaf {
  padding: 0 0 0 0;
  margin: 0;
}
ul.menu li {
  margin: 0 0 0 0;
}

次に、メニューの内容を印刷します。

<?php echo $content; ?>

私は Drupal の初心者です。私の投稿がお役に立てば幸いです。:)

于 2013-01-06T07:19:24.980 に答える
0

Zenテーマのインストールから始め、テーマ内の指示に従ってスターターサブテーマをセットアップすることをお勧めします. これには、drupal でのテーマ設定や、独自のスタイルシートの追加方法などを学ぶために必要なすべての情報が含まれています。

これにより、メニュー ブロックのテンプレートの編集を開始し、独自の html ラッパーとクラスを設定できます。

ブロックに追加のクラスを設定するには、次のモジュールを使用します: http://drupal.org/project/block_class

次に、ブロックを編集するだけで、追加のクラスをブロックに追加するための追加セクションが表示されます。

于 2012-08-13T13:47:58.397 に答える