0

現在の項目との関係に基づいてメニュー項目にカスタム css クラスを配置できるように Drupal を取得しようとしています。このようにして、css でアイテムを非表示にしてスタイルを設定できるため、メニューがそれほど大きくありません。

区別できるようにしたい: 最初のレベル - アクティブでない先祖を常に表示する Trail - 常に Active_trail を非表示にする - 現在のアイテムを表示する - 兄弟を表示する - 子を表示する - 表示する

ルールは次のとおりです。

一般的なナビゲーション ルール
ナビゲートするときは、常に「レベル 1」のナビゲーションが表示されます。
現在のページの直接の子孫 (ブレッドクラム) が表示されます。現在表示しているページの兄弟が表示されます。現在のページの子が表示されます。注: これはアコーディオン ナビゲーションではありません。サブレベルは、ページにいるときにのみ表示されます。

レベル 1 ホームページとナビゲーションの最上位レベルのみが表示されます。ホームページのリンクが表示されません。

レベル 2 ホームページから離れている場合、そのリンクが「レベル 1」のナビゲーションと一緒に表示され、現在のページの直接の子が表示されます。

レベル 3 これで、レベル 1 のすべて、レベル 2 のすべて (兄弟)、および現在のページの子 (レベル 3) が表示されます。これにより、ページを深く掘り下げたときに、サイトで通常どの程度のナビゲーションが表示されるかを把握できます。

レベル 4 いつものようにホームページとレベル 1 が表示されます。現在表示しているページの祖先も表示されます。また、レベル 3 にいるため、レベル 3 のすべての兄弟と、現在のページ (レベル 4) の子が表示されます。

レベル 5 ou ホームページとレベル 1 はいつものように表示されます。現在表示しているページの祖先も表示されます。また、レベル 4 にいるため、レベル 4 のすべての兄弟と、現在のページ (レベル 5) の子が表示されます。

アップデート:

私は基本的に必要なことを達成することができました

function USZ_menu_link($variables) {
    $element = $variables['element'];
    $depth = sizeof(menu_get_active_trail()) -1; 
    static $item_id = 0;


    if(!$element['#below'] && !$element['#active_trail'] && $element['#original_link']['depth'] != "1" && $element['#original_link']['depth'] < $depth){
        $element['#attributes']['class'][] = 'hideme';      
    }
}
4

1 に答える 1

0

必要なことをすべて理解することはできませんが、 http://drupal.org/project/menu_position 、http://drupal.org/project/contexthttp://drupal.org/project/menu_blockをお勧めします

このモジュールは、メニューを使用するタスクのほとんどの部分で役立ちます。コンテキスト モジュールは、メニュー項目にクラスを追加できます。メニュー ブロックは、カスタム設定でメニュー ブロックを拡張します (レベル、ツリーへの親項目を含め、コンテキスト統合もあり)。メニュー位置は、さまざまな条件のルールを作成するのに役立ち、メニューを操作するための API を提供しますカスタム モジュール。

これは単なる意見です。これらのモジュールでできることを知っておくと役立つと思います。

于 2012-05-16T22:11:04.020 に答える