2011-11-03 19 views
1

メニューパスでワイルドカードを使用することはできませんか?私の問題のクイックサマリー(私は確信しているので、あなたの時間を浪費していません):私は特定のコンテンツタイプのノードページに表示しているメニューがあります。ノードのページへの私のパスはワイルドカードを使用したメニューパス

イベント/ instal2010は、イベントの名前になりinstal2010

...(イベントは、コンテンツタイプです)...のようになります。

私はそのページのサイドバーのメニューを配置するために、コンテキストメニューとブロックモジュールを使用してい

...

  • イベント(デフォルトアクティブな項目)
  • プログラム
  • ビジター情報
  • チケット予約プログラムのパスは次のようになり

...

だから、

イベント/ instal2010 /プログラム

これは、多くの異なるイベントのために働くために、これらのメニュー項目は、例えば、自分のパスにワイルドカードを必要とします

イベント/ * /プログラム

おそらくそれは、メニューを捨て、ちょうど私たちはURLからにしている何ページかを決定するためにPHPでブロックを使用する時間です。

経験豊富な人の手によるアドバイスは、ありがたくありがとうございます。

答えて

5

Drupalの管理インターフェイスからワイルドカードを使用してメニュー項目を作成することはできませんが、のワイルドカードを使用してモジュール項目をモジュール内に作成できます。 hook_menu()を使用してメニュー項目を作成するカスタムモジュールを作成することをお勧めします。 %はワイルドカードで、それはあなたのページのコールバック関数に渡されます、$items['events/%/programme'] = array(

function YOURMODULE_menu() { 
    $items = array(); 

    $items['events/%/programme'] = array(
    'title' => 'Programme', 
    'description' => 'Loads a program page', 
    'page callback' => 'YOUR CUSTOM FUNCTION NAME', // Custom function used to perform any actions, display the page, etc 
    'page arguments' => array(1), // Passes wildcard (%) to your page callback function 
    'access callback' => TRUE, // Change if you want to control access 
    'type' => MENU_NORMAL_ITEM, // Creates a link in the menu 
    'menu_name' => 'primary-links' // Adds the link to your primary links menu, change if needed 
); 

    return $items; 
} 

:実装例は次のようになります。 hook_menu()Anatomy of hook_menuの詳細については、お役に立ちます。

+0

ありがとうございましたLaxman、大変感謝しています! – chichilatte

関連する問題