我正在尝试向Drupal 7用户个人资料添加新标签。 不幸的是,我找不到让用户查看页面的正确访问参数,但是限制他通过更改网址中的用户ID来查看其他用户的页面。
目前,管理员可以访问它,但不能访问注册用户。
这是当前的代码:
$items['user/%user/apples'] = array(
'title' => t('My apples'),
'type' => MENU_LOCAL_TASK,
'description' => t('Configure your apples'),
'access arguments' => array(
'administer site configuration'
),
'page callback' => 'drupal_get_form',
'page arguments' => array(
'mysite_apples_config_page'
),
'file' => 'mysite.apples.inc'
);
我在哪里可以找到一个例子?
答案 0 :(得分:1)
我认为可以实现的唯一方法是编写自定义access callback
逻辑。
在此回调中,您将检查用户是否具有与他尝试查看的页面相同的uid。如果是,请授予他访问权;否则,阻止他。
function my_custom_access_callback($account) {
global $user;
// allow admin users
if(user_access("administer site configuration")) {
return TRUE;
}
// allow the user to view his own page
if($user->uid == $account->uid) {
return TRUE;
}
// disallow the rest
return FALSE;
}
在你的hook_menu中使用新的访问回调:
$items['user/%user/apples'] = array(
'title' => t('My apples'),
'type' => MENU_LOCAL_TASK,
'description' => t('Configure your apples'),
'access callback' => 'my_custom_access_callback', // use the new callback.
'access arguments' => array(1), // use %user as the callback argument.
'page callback' => 'drupal_get_form',
'page arguments' => array(
'mysite_apples_config_page'
),
'file' => 'mysite.apples.inc'
);