2012-06-19 19 views
11

¿Cómo puedo establecer uno de los argumentos de página en mi elemento de menú de drupal como un argumento de página opcional?Argumento opcional en la implementación de Drupal hook_menu

que tienen

$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) 
); 

Si llamo activities_list/76, por ejemplo, sin un tercer argumento que voy a recibir una página no se encuentra el error. ¿Cómo puedo configurar el Tercer parámetro como uno opcional?

Gracias!

Respuesta

18

Es más fácil de lo que piensas :). No establezca ningún argumento en su camino y simplemente páselos a su función de "devolución de llamada de página".

$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'), 
); 

Y la función de devolución de llamada página se vería así:

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

Usted puede alterar el título de la página usando el siguiente código. (No probado, amablemente hágamelo saber si funcionó):

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

Espero que esto ayude ... Muhammad.

+0

Gracias funcionó. Tengo un problema porque el argumento del título ya no funciona. –

+0

Se agregó una solución para. Por favor, inténtelo y avíseme si funcionó. –

+0

Esto lanzará una advertencia si no pasa ningún argumento a la función de devolución de llamada. – JCharette

5

No creo que puedas. Si hizo esto en su lugar con sólo un comodín:

$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) 
); 

Esto entonces trabajar para una URL como activities_list/foo, pero si luego tuvo una URL como activities_list/foo/bar todavía se puede conseguir el valor de bar en la devolución de llamada de la página, ya que aún se pasa a esa función por 'page arguments' => array (1,2).

O, como alternativa, puede llamarlo usando arg (2) en la devolución de llamada de su página.

Cuestiones relacionadas