[Решено] список групп пользователя в профиле

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

Аватар пользователя lopata24 lopata24 8 июня 2010 в 15:40

Вроде плевое и простое дело, но так и не нашел решения.

Задача: в профиле пользователя, который переопределяю через user-profile.tpl.php выводить список групп, в которых этот пользователь состоит. Соответственно для каждого пользователя - свои группы.

Во views так и не смог понять, как вывести каждому пользователю группы, в которых он состоит.
На org нашел решение, которое мне не подходит, т.к. выводит в каждом профиле группы того пользователя, который профиль просматривает, а не того, профиль которого просматривают
Вот тот код

<div class="item-list"><ul>
<?php
$groups = $user->og_groups;
if($groups){
    foreach($groups as $group){
    echo "<li>";
        print l($group[title], 'node/'.$group[nid]);
    echo "</li>";
    }
}
else {
    echo "<li>$user->name has joined no groups</li>";
}
?>
</ul>

как вывести в итоге каждому пользователю свои группы? =\

заранее спасибо

Комментарии

Аватар пользователя lopata24 lopata24 8 июня 2010 в 21:00

что-то полезное, но мне без знания языка не разобрать... (
нет решения для cntrl+с - cntrl+v ?

головой думал, поиском искал, честно!..

Аватар пользователя gumk gumk 8 июня 2010 в 22:21
<?php
$groups 
$account->og_groups;
if(
$groups){
    foreach(
$groups as $group){
    echo 
"<li>";
        print 
l($group[title], 'node/'.$group[nid]);
    echo 
"</li>";
    }
}
else {
    echo 
"<li>$user->name has joined no groups</li>";
}
?>
Аватар пользователя Dan Dan 8 июня 2010 в 23:45

Таки да, лучше в препроцессе, а код можно так написать:
<?php
global user;
$user_groups = array();

foreach($user->og_groups as $group){
$user_groups[] = l($group[title], 'node/'.$group[nid]);

if(!count($user_groups))
$user_groups[] = t("name has joined no groups", array('name' => $user->name));

print theme('item_list', $user_groups);
?>

Если код в препроцессинге, то последняя строчка соответственно:
<?php
$vars['user_groups'] = theme('item_list', $user_groups);
?>

Аватар пользователя dobraya dobraya 15 сентября 2010 в 9:32

Ребят, а не подскажите, как будет выглядеть код, если у меня профиль собирается с помощью панелей? Вставляю последний код как материал с форматом ввода php code, выдается ошибка "Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE or '$' in /usr/share/drupal6/includes/common.inc(1566) : eval()'d code on line 1"

Аватар пользователя dobraya dobraya 16 сентября 2010 в 6:47

Без <?php код просто выведется как текст. В моем случае в первой строке еще строчка global user; была.
Аналогичным способом выводила в профиль последние сообщения из гостевой пользователя, все работало..

Аватар пользователя dobraya dobraya 20 сентября 2010 в 11:42

Dan, спасибо!
В итоге у меня получился для вывода в панель вот такой код

<?php
global $user;
$user_groups = array();

foreach($user->og_groups as $group){
$user_groups[] = l($group[title], 'node/'.$group[nid]);

if(!count($user_groups))
$user_groups[] = t("name has joined no groups", array('name' => $user->name));}

print theme('item_list', $user_groups);
?>
Однако в профиле все равно выводится список групп того пользователя, который просматривает профиль другого, а не группы владельца профиля.

Аватар пользователя Dan Dan 21 сентября 2010 в 17:39

Всё верно, global $user получает глобальный объект текущего пользователя, т.е. который в данный момент просматривает страницу.
Если нужен объект пользователя, страницу которого смотрим, то можно так: $user = menu_get_object('user'); — для страницы /user/123. Или $user = menu_get_object('user_uid_optional'); для страницы /user. Хотя второй вариант должен работать и в первом случае.

Аватар пользователя dobraya dobraya 22 сентября 2010 в 6:27

Dan, примите благодарность! Заработало!
Итоговый код:
<?php
$user = menu_get_object('user_uid_optional');
$user_groups = array();

foreach($user->og_groups as $group){
$user_groups[] = l($group[title], 'node/'.$group[nid]);

if(!count($user_groups))
$user_groups[] = t("name has joined no groups", array('name' => $user->name));}

print theme('item_list', $user_groups);
?>

Аватар пользователя demart demart 1 марта 2011 в 22:35

Господа встречный вопрос, по группам, как убрать вывод списка групп в стандартном профиле user-profile.tpl.php?