2012-06-19 57 views
11

如何在我的drupal菜單項中設置一個頁面參數作爲可選的頁面參數?Drupal hook_menu實現中的可選參數

$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/76沒有第三個參數,我會收到錯誤未找到頁。如何將第三個參數設置爲可選參數?

謝謝!

回答

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

我不認爲你可以。如果你這樣做有不是隻有一個通配符:

$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 /富一個URL工作,但如果你再有一個URL像activities_list /富/酒吧你仍然可以得到bar在頁面回調中的值,因爲它仍然通過'頁面參數'=>數組(1,2)傳遞給該函數。

或者,您也可以在頁面回調中使用arg(2)來調用它。