Показывать «войти» в меню пользователя, когда не вошли в систему


8

Я спрашиваю себя, где находится код, который скрывает «Мой аккаунт» и «Выйти» в меню пользователя? Просто любопытно узнать из этого кода. Есть ли способ узнать, где искать, если вы хотите узнать что-то подобное?

Я добавил ссылку «Вход» в это меню и хочу скрыть это, когда никто не вошел в систему.

Ответы:


13

Если у вас есть что-то, что происходит со ссылкой, вам нужно искать в коде a hook_menu(). Затем вам нужно угадать, в каком модуле он находится. В этом случае взгляните на основной модуль User:

function user_menu() {
  $items['user/login'] = array(
    'title' => 'Log in',
    'access callback' => 'user_is_anonymous',
    'type' => MENU_DEFAULT_LOCAL_TASK,
  );

  return $items;
}

Обратите внимание на 'access callback' => 'user_is_anonymous',строку. Это означает, что вы можете сделать это, только если вы анонимны (то есть, не вошли в систему). Это означает, что вы должны просто иметь возможность сделать пункт меню с «user / login» в качестве пути, и ссылка будет отображаться только при выходе из системы.


16

Вы можете добавить ссылку в меню user/login, обратный вызов доступа которого проверяет, что она отображается только анонимным пользователям. Так же, как user/logoutэто видно только для зарегистрированных пользователей.

Определение этих обратных вызовов (), как указано в другом ответе, в user_menu()


+1 и то же самое для user/register- создать ссылку обычным способом через интерфейс меню, и она появляется только для пользователей, которые не вошли в систему автоматически.
user56reinstatemonica8

1

Проверьте определения меню user_menu()в пользовательском модуле. Обратный вызов доступа определяет, когда будет отображаться пункт меню.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.