0

drupal メニュー (この場合はプライマリ リンク) 用の独自のテーマ関数を作成するためにアクセスできるフックまたは前処理関数はありますか?

私はかなり複雑なメニュー構造を持っており、ブロック内のメニュー項目をレンダリングするだけで現在取得しているものよりも少し余分なマークアップを必要とし (小さなカスタム マークアップを持つサブメニューを含む)、メニューのコンテンツを構築するために実際にアクセスする必要があります。理想的には、すべてのプライマリ リンクとその子をスコープ内に持つ配列から、自分自身を変数にします。

4

1 に答える 1

0

これは最善の解決策ではないかもしれませんが、非常に迅速かつ簡単に機能するものです。

Drupal はすべてのメニューのキャッシュ バージョンを cache_menu テーブルに保持します。このクエリを実行して、メニューのすべてのコンテンツを含むシリアル化された文字列を取得しました。

SELECT data FROM menu_cache WHERE serialized = 1 AND cid LIKE 'links:primary_links:%';

メニューの名前を primary_links に置き換え、$row->data で unserialize を呼び出して、カスタム メニューを構築するために必要なすべての構造化配列を取得します。

メニューブロックのコンテンツを自分のものと交換する hook_preprocess_block の関数を呼び出し、すべて正常に動作しているようです。

于 2011-08-08T22:58:09.633 に答える