Проверьте роль в node-type.tpl.php - PullRequest
1 голос
/ 12 ноября 2009

Есть ли способ проверить роль средства просмотра в файле темы drupal, чтобы написать условное утверждение?

Спасибо ...

Ответы [ 3 ]

3 голосов
/ 12 ноября 2009

Текущий пользователь всегда доступен как глобальная переменная, просто сделайте:

// Make the user object available
global $user;
// Grab the user roles
$roles = $user->roles;

$ user-> role будет массивом имен ролей, обозначаемых идентификатором роли (rid).


Редактировать: Точнее, глобальный пользовательский объект становится доступным во время ранней начальной загрузки, на этапе DRUPAL_BOOTSTRAP_SESSION, но с точки зрения пользовательского кодирования в темах или модулях вы можете рассматривать этот глобальный объект как всегда доступный.

1 голос
/ 20 апреля 2011

Это будет делать

 
  global $user;
  $num_roles = db_fetch_object(pager_query(db_rewrite_sql('SELECT rid from {role} ORDER BY rid Desc')))->rid;  // Find how many roles are there
  for($i=0; $i < $num_roles; $i++){
      if(strlen($user->roles[$i]) >0){
        echo $user->roles[$i];
        $i = $num_roles;
      }
  }
  
0 голосов
/ 13 ноября 2009

Просто приложение к ответу Хенрика Опеля: если вы используете его в файле tpl.php, то сначала создайте переменную в функции preprocess_node:

<?php
function YOURTEMPLATE_preprocess_node(&$variables) {
  global $user;
  $variables['current_user_roles'] = $user->roles;
}
?>

Теперь вы можете распечатать свои роли в вашем tpl.php:

<?php
if ($current_user_roles) {
?>
<ul class="roles">
<?php
  foreach ($current_user_roles as $role) {
    ?><li class="roles-item"><?php print $role; ?></li><?php
  }
?>
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...