user->uid всегда равно 1 для любого пользователя?
Я новичок в Drupal, поэтому я хочу создать простой модуль с настраиваемым профилем пользователя, в частности, я хочу вставить несколько вкладок для профиля пользователя (в традиционном профиле пользователя есть 2 вкладки: "Вид вкладки" и "Редактировать вкладку"), так что теперь я хочу добавить еще 3 вкладки.
- Показать историю
- Поделиться профилем
- Ярлыки
но он применяется только для аутентифицированного пользователя, а не для профиля администратора (когда администратор показывает свой профиль, профиль является традиционным). Итак, это мой код (имя моего модуля:tung_tab), а вот код tung_tab.module:
function tung_tab_menu()
{
$items = array();
global $user;
//if (!user_access('administer'))
if($user->uid!=1)
{
$items['user/%/rvhistory'] = array(
'title' => 'Review History ',
'description' => 'Review History',
//'page callback' => 'drupal_get_form',
//'page arguments' => array('tung_tab_confirm_reviewh', 1),
'access callback' => 'user_view_access',
'access arguments' => array(1),
'type' => MENU_LOCAL_TASK,
);
$items['user/%/sharehistory'] = array(
'title' => 'Share History',
'description' => 'Share History',
//'page callback' => 'drupal_get_form',
//'page arguments' => array('tung_tab_confirm_shareh', 1),
'access callback' => 'user_view_access',
'access arguments' => array(1),
'type' => MENU_LOCAL_TASK,
);
$items['user/%/sc'] = array(
'title' => 'Shortcut',
'description' => 'Shortcut',
//'page callback' => 'getDescription',
//'page arguments' => array('tung_tab_confirm_shareh', 1),
'access callback' => 'user_view_access',
'access arguments' => array(1),
'type' => MENU_LOCAL_TASK,
);
}
return $items;
}
Это работает корректно для вкладки администратора, но когда я выхожу, а затем захожу с другим пользователем, но ничего не меняется, поэтому, если я комментирую строку //if($user->uid), все в порядке, поэтому, когда я добавляю больше кода в этой строке 'title' => 'History Review'.$user->uid, Когда я являюсь администратором. Это показывает, что History Review 1 Когда я вошел с другой учетной записью, все то же самое, History Review 1 Я не могу понимаю почему? Я думаю, что в моем коде произошла ошибка. Я поместил свой модуль в "mysite/sites/default/modules/".
1 ответ
Вы не должны определять пункты меню внутри условия if. Вы должны контролировать доступ к обратным вызовам меню, используя вместо этого обратный вызов доступа и аргументы доступа.
НЕПРАВИЛЬНО:
function tung_tab_menu()
{
$items = array();
global $user;
if($user->uid!=1)
{
// defined menu items
}
return $items;
}
ПРАВИЛЬНЫЙ:
function tung_tab_menu()
{
$items = array();
global $user;
// define the menu items here...
return $items;
}
Попытайтесь это исправить, а затем посмотрите, получите ли вы те же результаты.