无法理解这个......
我在用户个人资料中添加了“联系人”标签。如果用户个人资料不属于登录用户,我想要隐藏此内容。
我在hook_menu_alter的实现中得到了这个:
$items['user/%views_arg/contacts'] = array(
'access callback'=>'current_user_hide_tabs',
'access arguments'=>array(1),
);
我似乎无法获得相应的功能:
function current_user_hide_tabs($user) {
return $user->uid != $account->uid //???
}
干杯!
(我已经检查过在询问older question后实际访问了该标签。)
答案 0 :(得分:3)
试试这个:
function current_user_hide_tabs($account) {
global $user;
return $user->uid != $account->uid;
}
$ user:这是当前用户,请注意全局语句,以便它在您的函数中可见 $ account:这是传递给您的函数的用户帐户。需要重命名,因为$ user已经为当前登录的用户保留。
答案 1 :(得分:1)
这应该可以解决问题:
$items['user/%/contacts'] = array(
'access callback'=>'current_user_hide_tabs',
'access arguments'=>array(1),
);
function current_user_hide_tabs($uid) {
global $user;
return $user->uid == $uid;
}
除非登录用户的ID与用户//联系人相同,否则将返回FALSE,从而隐藏菜单链接。您不希望将$ user与access参数进行比较,因为参数将是用户ID,而不是用户对象。 $ user-> uid是用户ID。
答案 2 :(得分:0)
好的,谢谢你让我更接近解决方案。我发现如果我单独引用$items
变量并且不使用数组......它会起作用吗?
所以不是:
$items['user/%views_arg/contacts'] = array(
'access callback'=>'current_user_hide_tabs',
'access arguments'=>array(1),
);
...但:
$items['user/%views_arg/contacts']['access callback'] = 'current_user_hide_tabs';
$items['user/%views_arg/contacts']['access arguments'] = array(1);
......并使用Matt的功能:
function current_user_hide_tabs($uid) {
global $user;
return $user->uid != $uid;
}