現在の項目との関係に基づいてメニュー項目にカスタム 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';
}
}