Не отображать блок 'user login' - PullRequest
0 голосов
/ 17 марта 2009

Я не хочу, чтобы блок входа пользователя отображался для пользователей, которые не являются администраторами.

Я хочу, чтобы он отображался только для пользователя с правами администратора (sitadmin, uid: 1, в моем случае) и пользователей, которые не вошли в систему (uid: 0)

На странице конфигурации (/ admin / build / block / configure / user / 0) для блока в разделе настроек, специфичных для страницы, я выбрал «Показать, если следующий код PHP возвращает TRUE (режим PHP, только для экспертов) «. и с учетом следующего кода:

<?php
global $user;

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

?>

Однако, это все еще видно даже для пользователей с uid 3,4 и т. Д. Я попытался очистить кеш, но безрезультатно. С другой стороны, если я просто поставлю

<?php return FALSE;?>

Блок пользователя не отображается для анонимных пользователей.

Примечание. Параметры видимости, относящиеся к конкретной роли, на это не влияют.

Ответы [ 2 ]

2 голосов
/ 17 марта 2009

также может быть, что в массиве $user uid на самом деле является строкой. поэтому, когда вы даете ему ===, он также пытается сравнить тип. Вы можете сделать $user->uid==="1" или $user->uid==1

EDIT:

Вы также можете попробовать проверить их роли с помощью

!in_array('authenticated user', array_values($user->roles)).

Я думаю, что это логика, которую вы хотите. Я не уверен, что вы определяете что-либо, кроме стандартного поведения для блока входа в систему ... он появляется только если кто-то НЕ вошел в систему? Чем это отличается от обычного?

0 голосов
/ 17 марта 2009
<?php   
global $user;

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

сделает свое дело.

Если вы не уверены, всегда выполняйте простое эхо и отображайте блок. Например:

<?php   
global $user;

if($user->uid==1)
  echo "Hello world!";
 ?> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...