13

Drupalメニュー項目のページ引数の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)
); 

たとえば、3番目の引数なしでactivity_list / 76を呼び出すと、ページが見つかりませんというエラーが表示されます。3番目のパラメーターをオプションとして設定するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

21

思ったより簡単です:)。パスに引数を設定せず、「ページコールバック」関数に渡すだけです。

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

これがお役に立てば幸いです...ムハンマド。

于 2012-06-19T14:09:36.123 に答える
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で機能しますが、 activity_list / foo / barのようなURLがある場合でも、ページコールバックでbarの値を取得できます。これは、 「ページ引数」によってその関数に渡されるためです。 => array(1,2)

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

于 2012-06-19T08:49:09.277 に答える