Здравствуйте, подскажите решение. Нашел пост на этом сайте, с кодом вывода ролей, но он для 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'];
}
}
$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).
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).
Комментарии
навскидку:
<?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) . '
';
}
}
?>
Ошибок и предупреждений нет!!! Но так же ничего не выводится в профиле пользователя, может нужно куда то вставить вывод? я добавил этот код в template.php, может этого не достаточно?
чистить кеш, и попробуйте это вместо $variables ['user_profile']['otherroles']...:
<?php
$variables ['user_profile']['otherroles'] = array(
'#type' => 'item',
'#title' => 'Роли пользователя',
'#markup' => '
',
);
?>
Отлично, хотя бы title вывелся, но роли по прежднему не выводятся, а #markup - это откуда берется?
забыл что для дру7 списки по другому:
<?php
$variables ['user_profile']['otherroles'] = array(
'#type' => 'item',
'#title' => 'Роли пользователя',
'#markup' => theme('item_list',array('items' => $items)),
);
Огромное спасибо, получилось!!!