web-dev-qa-db-ja.com

特定のメニューにカスタムクラスを追加する

特定のメニューにクラスを追加する方法を知る必要があります。たとえば、カスタムメニュー "menu-header-let"があります。このメニューは以下のようにレンダリングされます。

<ul class="menu"><li class="leaf first"><a title="Redirecting to Help Page" href="/vsv/content1">Help</a></li>
<li class="leaf"><a title="" href="/vsv/content1">Home</a></li>
<li class="leaf last"><a title="" href="/vsv/content1">home2</a></li>
</ul>

次のように、ulにクラスを追加したい

   <ul class="header-top-menu">

私はphptemplate_menu_tree()を使用しましたが、カスタムメニューごとに異なるクラスが必要です。メニューテーマをオーバーライドし、すべてのカスタムメニューに同じクラスを追加する場合。

Drupalで異なるカスタムメニューが表示されるときに、異なるクラスを追加する方法がわかりません。

私を助けてください。

5
sathishkumar

さて、言及した tutorial のコードbethはバグがあり、機能しません。私が今までに見つけた最良の解決策はこれです:

<?php
function YOUR_THEME_menu_tree($tree) {
  if (preg_match('/A unique string in your menu/', $tree)) {
      return '<ul class="header-top-menu">' . $tree . '</ul>';
  } else {
    return '<ul class="menu">'. $tree .'</ul>';
  } 
}
?>

一意のパスまたはリンクタイトルを文字列として使用して、メニューを識別できます。このソリューションは、引用されたチュートリアルのコメントに触発されました。

4
Vlad T.

あなただけのチュートリアルがあります: http://programmingbulls.com/complete-drupal-6-menu-theming

0
beth

Drupalでのメニュー項目のテーマ設定はうんざりすることに同意する必要があります。

それを行うモジュール Menu Attributes があります。特定のメニューにId,Name, Target, Rel,Class,Style,Accesskey属性を追加することもできます。

0
Gokul N K