Вроде плевое и простое дело, но так и не нашел решения.
Задача: в профиле пользователя, который переопределяю через user-profile.tpl.php выводить список групп, в которых этот пользователь состоит. Соответственно для каждого пользователя - свои группы.
Во views так и не смог понять, как вывести каждому пользователю группы, в которых он состоит.
На org нашел решение, которое мне не подходит, т.к. выводит в каждом профиле группы того пользователя, который профиль просматривает, а не того, профиль которого просматривают
Вот тот код
как вывести в итоге каждому пользователю свои группы? =\
заранее спасибо
Комментарии
Перед своим кодом нужно поставить.
global $user
А вообще желательно логику вынести в preprocess функцию, а в темплейте просто вывести
print $groups;
что-то полезное, но мне без знания языка не разобрать... (
нет решения для cntrl+с - cntrl+v ?
головой думал, поиском искал, честно!..
<?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>";
}
?>
Таки да, лучше в препроцессе, а код можно так написать:
<?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);
?>
gumk и Dan
Спасибо!!!
Ребят, а не подскажите, как будет выглядеть код, если у меня профиль собирается с помощью панелей? Вставляю последний код как материал с форматом ввода 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"
видимо ругается на <?php
Без <?php код просто выведется как текст. В моем случае в первой строке еще строчка global user; была.
Аналогичным способом выводила в профиль последние сообщения из гостевой пользователя, все работало..
global $user;
Пропущено $
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);
?>
Однако в профиле все равно выводится список групп того пользователя, который просматривает профиль другого, а не группы владельца профиля.
Всё верно, global $user получает глобальный объект текущего пользователя, т.е. который в данный момент просматривает страницу.
Если нужен объект пользователя, страницу которого смотрим, то можно так: $user = menu_get_object('user'); — для страницы /user/123. Или $user = menu_get_object('user_uid_optional'); для страницы /user. Хотя второй вариант должен работать и в первом случае.
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);
?>
Господа встречный вопрос, по группам, как убрать вывод списка групп в стандартном профиле user-profile.tpl.php?