Não exibir bloco 'login do usuário'
-
19-08-2019 - |
Pergunta
Eu não quero o bloco de login do usuário a ser exibido para usuários que não são de administrador.
Eu só quero que ele seja exibido para o usuário admin (sitadmin, uid: 1, no meu caso) e os usuários que não estão conectados (uid: 0)
Na página de configuração (/ admin / build / bloco / configure / user / 0) para o bloco, de acordo com as configurações específicas de página, eu selecionei "Show se o seguinte código retorna PHP verdadeiro (PHP-mode, os especialistas apenas) ". e dado o seguinte código:
<?php
global $user;
if($user->uid===1 or $user->uid===0)
return TRUE;
else
return FALSE;
?>
No entanto, ainda é visível, mesmo para usuários com uid 3,4 etc. Eu tentei cache de compensação, com infrutíferas. Por outro lado, se eu simplesmente colocar
<?php return FALSE;?>
O bloco de usuário não é mostrada para usuários anônimos.
Nota:. Configurações de visibilidade papel específico não parecem ter um efeito sobre este
Solução
também pode ser que na matriz $user
, uid é realmente uma string. Então, quando você dar-lhe o ===
ele tenta comparar tipo também. você poderia fazer $user->uid==="1"
ou $user->uid==1
EDIT:
Você também pode tentar verificar as suas funções de usuário com
!in_array('authenticated user', array_values($user->roles))
.
eu acho que essa é a lógica que você deseja. Eu não estou certo de que você está definindo outra coisa senão o comportamento padrão para o bloco de login ... ele só aparece se alguém não está logado? Como é que diferente do normal?
Outras dicas
<?php
global $user;
if($user->uid==1 || $user->uid==0)
return TRUE;
else
return FALSE;
?>
faria o truque.
Se não tiver certeza, sempre faz um eco simples e exibir o bloco. Por exemplo:
<?php
global $user;
if($user->uid==1)
echo "Hello world!";
?>