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

Foi útil?

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!";
 ?> 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top