0

メニューが単一レベルのリストの場合に正常に機能する前処理機能があります。ただし、吸盤メニューで動作するようにしたいと思います。スタイルを設定できるように、最上位のメニュー項目にクラスを追加したいと考えています。これは、単一レベル メニューに使用したコードです。

function cti_flex_preprocess_page(&$vars, $hook) {

// Make a shortcut for the primary links variables
$primary_links = $vars['primary_links'];

// Loop thru the menu, adding a new class for CSS selectors
    $i = 1;

    foreach ($primary_links as $link => $attributes){
        // Append the new class to existing classes for each menu item
        $class = $attributes['attributes']['class'] . " item-$i";

        // Add revised classes back to the primary links temp variable
        $primary_links[$link]['attributes']['class'] = $class;
        $link['title'] = '<span class="hide">' . check_plain($link['title']) . '</span>';
        $i++;
        } // end the foreach loop

// reset the variable to contain the new markup
$vars['primary_links'] = $primary_links;

}

menu_tree()たとえば、次のように、関数を無駄に使用しようとしました。

function cti_flex_preprocess_page(&$vars, $hook) {

// Make a shortcut for the primary links variables
$primary_links = $vars['primary_links'];

// Loop thru the menu, adding a new class for CSS selectors
    $i = 1;

    foreach ($primary_links as $link => $attributes){
        // Append the new class to existing classes for each menu item
        $class = $attributes['attributes']['class'] . " item-$i";

        // Add revised classes back to the primary links temp variable
        $primary_links[$link]['attributes']['class'] = $class;
        $link['title'] = '<span class="hide">' . check_plain($link['title']) . '</span>';
        $i++;
        } // end the foreach loop

// reset the variable to contain the new markup
$vars['primary_links_tree'] = menu_tree(variable_get('menu_primary_links_source', '$primary_links'));

}

どんなアイデアでも大歓迎です。

4

1 に答える 1

0

まあ、私はこれをあきらめて、必要なことをする素晴らしいモジュールを見つけました。素敵なメニュー。メニューの完全な css コントロール、優れたモジュール。このモジュールに関する詳細 (プロジェクト ページから):

Nice Menus は、ドロップダウン/右/左の展開可能なメニューを有効にします。ほとんどのブラウザーでは CSS のみを使用し、IE6 では最小限の Javascript を使用します。(バージョン 2 では、すべてのブラウザーで Superfish jQuery プラグインを使用し、JS を無効にするオプションがあり、それを処理できるブラウザーでは CSS のみにフォールバックします。)

現在、3 つのスタイル/タイプのメニューが可能です。水平、ドロップダウン メニュー。垂直、メニューは左に飛びます。垂直、メニューは右に飛びます。Nice メニューを使用しているサイトのリストを提供するハンドブック ページがあります。

Nice Menus は、テーマ内の通常のブロックを配置できる場所ならどこにでも配置できる既存のサイト メニューに関連付けることができるブロックを作成します。テーマの場合は、提供されているテーマ関数を使用してメニューをナイス メニューとして直接テーマ設定することもできるため、ブロックは必要ありません。Primary Links メニューの特定のテーマ機能が利用可能です。テーマ関数を使用すると、開発者は作成したカスタム メニュー ツリー (つまり、Drupal メニューを使用しない) を渡すこともできます。ドキュメントには、テーマ関数の使用方法に関する詳細情報があります。

このモジュールには、オーバーライド CSS をテーマの通常のスタイルシートに追加するか、Nice Menus CSS ファイルを作成して、Nice Menus に独自のデフォルトではなくそれを使用するように伝えることで、完全にオーバーライドできるシンプルで一般的な配色が付属しています。テーマ構成。同梱の README.txt ファイルとハンドブックには、いくつかの CSS オーバーライドの例が記載されています。

于 2010-05-04T20:21:26.367 に答える