Необязательный аргумент в реализации hook_menu Drupal

Как установить один из аргументов страницы в пункте меню drupal в качестве необязательного аргумента страницы?

У меня

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

Если я вызову activity_list/76, например, без третьего аргумента, я получу ошибку, не найденную на странице. Как установить третий параметр как необязательный?

Спасибо!

Ответ 1

Это проще, чем вы думаете:). Не задавайте никаких аргументов в своем пути и просто передавайте их функции "обратный вызов страницы".

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

Надеюсь, это поможет... Мухаммад.

Ответ 2

Я не думаю, что ты можешь. Если вы сделали это только с одним шаблоном:

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

Затем будет работать URL-адрес, например activity_list/foo, но если у вас есть URL-адрес, например activity_list/foo/bar, вы все равно можете получить значение bar в обратном вызове страницы, поскольку он все еще передается этой функции с помощью "аргументов страницы" = > array (1,2).

Или вы можете вызвать его, используя arg (2) в обратном вызове страницы.