2012-06-19 13 views
11

मैं अपने ड्रूपल मेनू आइटम में एक पृष्ठ पृष्ठ तर्कों को वैकल्पिक पृष्ठ तर्क के रूप में कैसे सेट कर सकता हूं? अगर मैं एक तीसरा तर्क के बिना उदाहरण के लिए activities_list/76 फोन मैं त्रुटि नहीं मिला एक पृष्ठ प्राप्त होगा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) 
); 

है। मैं तीसरे पैरामीटर को वैकल्पिक के रूप में कैसे सेट कर सकता हूं?

धन्यवाद!

उत्तर

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/foo जैसी URL के लिए काम करेंगे, लेकिन अगर तुम तो जैसे activities_list/foo/बार एक यूआरएल था आप अभी भी प्राप्त कर सकते हैं पेज कॉलबैक में बार का मान क्योंकि यह अभी भी 'पृष्ठ तर्क' => सरणी (1,2) द्वारा उस फ़ंक्शन को पास कर दिया गया है।

या वैकल्पिक रूप से आप इसे अपने पृष्ठ कॉलबैक में तर्क (2) का उपयोग करके कॉल कर सकते हैं।

संबंधित मुद्दे