Вывод ролей пользователя

Главные вкладки

Аватар пользователя qartiko qartiko 8 сентября 2015 в 13:21

Здравствуйте, подскажите решение. Нашел пост на этом сайте, с кодом вывода ролей, но он для 6го друпала.

function drupalife_store_preprocess_user_profile(&$variables){
  $items = array();
  foreach ($variables['account']->roles as $key => $value) {
  // получаем в массив список ролей пользователя
  // (кроме стандартных анонимуса и авторизованного пользователя)
   if ($key > 2) {
    $items[] = $value;
   }
  }
  // если роли присутствуют, то добавляем их в вывод
  if (count($items)) {
  $variables['user_profile'] = '<h3>Роли пользователя</h3><dl class="user-roles"><dd>' . theme('item_list',$items) . '</dd></dl>' .   $variables['elements'];
  }
 
}

добавлял $account = $variables ['elements']['#account'];, но не помогло, подскажите где и что нужно изменить?

Выводит ошибки:

Notice: Undefined index: account в функции drupalife_store_preprocess_user_profile() (строка 324 в файле /home/v/vovanb3p/vovanb3p.bget.ru/public_html/profiles/drupalife_store/themes/drupalife_store/template.php).
Notice: Trying to get property of non-object в функции drupalife_store_preprocess_user_profile() (строка 324 в файле /home/v/vovanb3p/vovanb3p.bget.ru/public_html/profiles/drupalife_store/themes/drupalife_store/template.php).
Warning: Invalid argument supplied for foreach() в функции drupalife_store_preprocess_user_profile() (строка 324 в файле /home/v/vovanb3p/vovanb3p.bget.ru/public_html/profiles/drupalife_store/themes/drupalife_store/template.php).

Комментарии

Аватар пользователя Nikit Nikit 8 сентября 2015 в 15:07

навскидку:

<?php
function drupalife_store_preprocess_user_profile(&$variables){
$items = array();
$account = $variables ['elements']['#account'];
foreach ($account->roles as $key => $value) {
if ($key > DRUPAL_AUTHENTICATED_RID) {
$items[] = $value;
}
}
// если роли присутствуют, то добавляем их в вывод
if (count($items)) {
$variables ['user_profile']['otherroles'] = '

Роли пользователя

' .
theme('item_list',$items) . '

';
}

}
?>

Аватар пользователя qartiko qartiko 8 сентября 2015 в 15:36

Ошибок и предупреждений нет!!! Но так же ничего не выводится в профиле пользователя, может нужно куда то вставить вывод? я добавил этот код в template.php, может этого не достаточно?

Аватар пользователя Nikit Nikit 8 сентября 2015 в 15:48

чистить кеш, и попробуйте это вместо $variables ['user_profile']['otherroles']...:
<?php
$variables ['user_profile']['otherroles'] = array(
'#type' => 'item',
'#title' => 'Роли пользователя',
'#markup' => '

' . theme('item_list',$items) . '

',
);

?>

Аватар пользователя Nikit Nikit 8 сентября 2015 в 16:46

забыл что для дру7 списки по другому:
<?php
$variables ['user_profile']['otherroles'] = array(
'#type' => 'item',
'#title' => 'Роли пользователя',
'#markup' => theme('item_list',array('items' => $items)),
);