多くの試行錯誤の後、次のuser/%/edit
ようなコードを使用して、ページをパスの子として機能させることができました。
<?php
/**
* Implementation of hook_menu().
*/
function noc_profile_privacy_menu() {
return array(
'user/%user_category/edit/privacy' => array(
'title' => 'Portfolio privacy',
'page callback' => 'drupal_get_form',
'page arguments' => array('noc_profile_privacy_form', 1),
'access callback' => 'content_profile_page_access',
'access arguments' => array('profile', 1),
'type' => MENU_LOCAL_TASK,
'load arguments' => array('%map', '%index'),
),
);
}
/**
* Implementation of hook_user().
*/
function noc_profile_privacy_user($op, &$edit, &$account, $category = NULL) {
if ($op === 'categories') {
return array(array(
'name' => 'privacy',
'title' => t('Profile privacy'),
'weight' => 0,
));
}
}
'name'
hook_user() で返されるキーは、hook_menu() 定義の後に続くキーと同じであることに注意してくださいuser/%user/category/edit
。それが鍵だと思います。項目を省略した場合も'load arguments'
、正確にその値でエラーが発生します。
したがって、ユーザー カテゴリとは、私の場合、メニュー項目定義のパスの'privacy'
少し後ろにあると思います。edit
これは不要な合併症ですか?はい、そのようです。
編集: 同僚の hefox がこの質問への返信で私を殴ったのを見ました。フォックスの助けがなければ、このすべてを理解することはできなかったでしょう。