Mostrar 'logon' no menu do usuário quando não estiver logado

8

Estou me perguntando: onde está o código que oculta "Minha conta" e "Sair" no menu do usuário? Apenas curioso, para aprender com esse código. Alguma maneira de saber onde procurar, se você quiser saber algo assim?

Adicionei um link "Login" a este menu e quero ocultá-lo quando ninguém estiver conectado.

gritando SiLENCE
fonte

Respostas:

13

Quando você tem algo que acontece com um link, precisa procurar no código a hook_menu(). Então você precisa adivinhar em qual módulo ele está. Nesse caso, dê uma olhada no módulo principal do usuário:

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

  return $items;
}

Observe a 'access callback' => 'user_is_anonymous',linha. Isso significa que você só pode fazer isso se for anônimo (ou seja, não estiver logado). Isso significa que você deve conseguir fazer uma entrada no menu com "usuário / login" como o caminho, e o link só será exibido quando você estiver desconectado.

mpdonadio
fonte
16

Você pode adicionar um link de menu para user/login, o retorno de chamada de acesso que verifica se ele é mostrado apenas para usuários anônimos. Assim como user/logouté visível apenas para usuários logados.

A definição desses retornos de chamada () é, como mencionado na outra resposta, em user_menu()

Berdir
fonte
+1 e o mesmo se aplica a user/register- crie o link da maneira usual através da interface do menu e aparece apenas para usuários que não estão conectados automaticamente.
User56reinstatemonica8
1

Verifique as definições de menu user_menu()no módulo do usuário. O retorno de chamada de acesso determina quando o item de menu será exibido.

Gabor Szanto
fonte