2012-06-19 18 views
11

Drupalメニュー項目のページ引数の1つをオプションのページ引数として設定するにはどうすればよいですか?Drupalフックメニューのオプション引数

私はページが見つからないというエラーを受け取ることになります第三引数なしで例えばactivities_list/76を呼び出す場合、私は

$items['activities_list/%/%']=array(
'title callback' => 'activities_list_title', 
'title arguments' =>array(1), 
'description' =>'All the Indicators divided by Coutry', 
'page callback' => 'activities_list', 
'access arguments' => array('access ppi'), 
'page arguments' => array(1,2) 
); 

を持っています。どうやって3番目のパラメータをオプションとして設定できますか?

ありがとうございます!

答えて

18

あなたが考えるよりも簡単です:)。パスに引数を設定せず、単に "ページコールバック"関数に渡してください。

$items['activities_list']=array(
    'title callback' => 'activities_list_title', 
    'description' =>'All the Indicators divided by Coutry', 
    'page callback' => 'activities_list', 
    'access arguments' => array('access ppi'), 
); 

とページコールバック関数は次のようになります。

function activities_list($arg1, $arg2) 
{ 
    // Your code goes here... 
    drupal_set_title(activities_list_title($arg1, $arg2)); 
} 

次のコードを使用して、ページのタイトルを変更することができます。 (テストされていない、親切にそれが働いていたなら、私に知らせて):

function activities_list_title($arg_1, $arg_2) 
{ 
    $title = ""; 
    // Your code goes here 
    return $title; 
} 

ホープこのことができます...ムハンマドを。

+0

ありがとうございました。私は、タイトル引数がもはや働いていないという問題があります。 –

+0

〜に対する解決策を追加しました。親切にそれを試して、それが働いたら教えてください。 –

+0

コールバック関数に引数を渡さないと、警告がスローされます。 – JCharette

5

私はできないと思います。あなただけの1つのワイルドカードを代わりにこれをしなかった場合:

$items['activities_list/%']=array(
    'title callback' => 'activities_list_title', 
    'title arguments' =>array(1), 
    'description' =>'All the Indicators divided by Coutry', 
    'page callback' => 'activities_list', 
    'access arguments' => array('access ppi'), 
    'page arguments' => array(1,2) 
); 

これは、activities_list/fooののようなURLのために働くだろうが、あなたはそれから/バーactivities_list/fooのようなURLを持っていた場合、あなたはまだ得ることができますbarの値がページコールバックにまだの 'page arguments' => array(1,2)によってその関数に渡されているためです。

また、ページコールバックでarg(2)を使用して呼び出すこともできます。

関連する問題