0

メニューのテーマを設定して、デフォルトの UL クラスを変更しようとしています。これまでのところ、次の機能を使用しています。

function theme_menu_tree($variables){
  return '<ul class="my-class">' . $variables['tree'] . '</ul>';
}

これはうまく機能しますが、親アイテム内の UL に別のクラスを適用する必要があります。今私は得る

<ul class="my-class">
  <li class="dropdown">Item
    <ul class="my-class">
      <li>Link1</li>
      <li>Link2</li>
    </ul>
  </li>
</ul>

theme_menu_tree 関数を使用して、2 番目の UL をターゲットにして別のクラスを指定するにはどうすればよいですか?

4

3 に答える 3

0

メニュークラスをオーバーライドする必要があるのはなぜですか? メニューが含まれているボディ、セクション、またはブロックの CSS ID またはクラスを見て、現在の場所のものを使用し、それを使用してそれをオーバーライドしてみませんか?

たとえば、ブロック内のリーフ メニュー項目のデフォルトの外観をオーバーライドするためにこれを使用しています。

#block-menu-menu-top-navigation ul li.leaf
{
  list-style-type: none;
  list-style-image: none;
}
于 2013-07-02T20:28:35.690 に答える
0

メニュー属性モジュールを探しているのかもしれません。CSS クラスと ID を定義できます。

于 2013-07-02T23:39:34.430 に答える
0

Drupal には、デフォルトの UL クラスのようなものはありません。テーマ関数 ( theme_で始まる関数名で認識可能) とテンプレート ( .tpl.phpで終わるファイル名で認識可能) があります。どちらも、データのレンダリングに使用される HTML 要素については想定していません。特に、Drupal は、テンプレートまたはテーマ関数が生成する要素にどのクラスを適用する必要があるかについて、仮定を行いません。

于 2013-07-02T20:29:09.803 に答える