Question

Je ne souhaite pas que le blocage de connexion de l'utilisateur soit affiché pour les utilisateurs qui ne sont pas administrateurs.

Je souhaite uniquement qu'il soit affiché pour l'utilisateur admin (sitadmin, uid: 1, dans mon cas) et pour les utilisateurs non connectés (uid: 0)

Dans la page de configuration (/ admin / build / block / configure / user / 0) du bloc, sous les paramètres spécifiques à la page, j'ai sélectionné "Afficher si le code PHP suivant renvoie TRUE (mode PHP, experts uniquement). ). " et compte tenu du code suivant:

<?php
global $user;

if($user->uid===1 or $user->uid===0)
  return TRUE;
else
  return FALSE;

?>

Cependant, il est toujours visible, même pour les utilisateurs de 3,4 ud, etc. J'ai essayé d'effacer le cache, sans succès. D'autre part, si je mets simplement

<?php return FALSE;?>

Le bloc d'utilisateurs n'est pas affiché pour les utilisateurs anonymes.

Remarque: les paramètres de visibilité spécifiques à un rôle ne semblent pas avoir d'effet sur cela.

Était-ce utile?

La solution

il se pourrait également que dans le tableau $ user , uid soit en fait une chaîne. Ainsi, lorsque vous lui donnez le === , il essaie également de comparer le type. vous pouvez faire $ user- > uid === "1" ou $ user- > uid == 1

EDIT:

vous pouvez également essayer de vérifier leurs rôles d'utilisateur avec

! in_array ('utilisateur authentifié', array_values ??($ user- > rôles)) .

Je pense que c'est la logique que vous voulez. Je ne suis pas sûr que vous définissiez autre chose que le comportement standard du bloc de connexion ... il ne s'affiche que si quelqu'un n'est PAS connecté? En quoi est-ce différent de la normale?

Autres conseils

<?php   
global $user;

if($user->uid==1 || $user->uid==0)
  return TRUE;
else
  return FALSE;
 ?>    

ferait l'affaire.

Si vous n'êtes pas sûr, faites toujours un écho simple et affichez le bloc. Par exemple:

<?php   
global $user;

if($user->uid==1)
  echo "Hello world!";
 ?> 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top