user_profile.tpl - alle organic groups anzeigen in denen ein user mitglied ist
am 07.04.2007 - 14:49 Uhr in
hi,
ich benutze drupal 5.1 und versuche über die user_profile.tpl.php auszugeben, in welchen organic groups ein user mitglied ist. bei den php-snippets auf drupal.org hab ich dazu nur untenstehendes gefunden, was ich an meine bedürfnisse angepasst habe. für blogs und andere selbst erstellte nodes funktionert das wunderbar, wende ich dies auf die gruppen an, werden natürlich nur die erstellten gruppen eines users angezeigt. da ich ein php newbie bin, weiss ich nicht welche datenbankabfrage ich ergänzen muss, oder ob das komplett anders gemacht werden sollte.
in der standard profil ansicht von drupal 5.1 sehen admins diese gruppen genau so wie ich es haben möchte. wie stelle ich es an, dass alle gruppen in denen ein user mitglied ist, in der user_profile.tpl.php angezeigt werden?
<h2>Alle Gruppen des Users</h2>
<?php $userid=$user->uid; ?>
<?php $result = db_query("SELECT n.created, n.title, n.nid, n.changed FROM node n WHERE n.uid = $userid AND n.type = 'gruppe' AND n.status = 1 ORDER BY n.changed DESC"); ?>
<?php $output3 .= "<div class=\"item-list\"><ul>\n"; ?>
<?php $list = node_title_list($result); ?>
<?php $output3 .= strip_tags($list) ? $list : '<li>Noch keinen Gruppen beigetreten</li>'; ?>
<?php print $output3; ?>
</ul></div>
- Anmelden oder Registrieren um Kommentare zu schreiben
hat niemand einen hinweis?
am 09.04.2007 - 12:49 Uhr
hat niemand einen hinweis?
User Object
am 09.04.2007 - 17:22 Uhr
Alle Gruppen in denen ein user Mitglied ist befinden sich im User-Object.
Hier ein Hinweis aus dem Code von OG:
// since a user's subscriptions are loaded into $user object, this function is only occassionally useful to get group subs for users other than the current user
// even then, it often makes sense to call user_load() instead of this function.
// load all subscriptions for a given user
function og_get_subscriptions($uid, $min_is_active = 1)
Lass dir mal mit var_dump das User Objekt anzeigen. Dann siehst du wie du drauf zugreifen musst.
vg
--
md - DrupalCenter
mdwp
hey, ich hab da ein bissel
am 17.04.2007 - 00:12 Uhr
hey, ich hab da ein bissel ausprobiert und in der tabelle geguckt!
hier der korrigierte Teil!
<b>Alle Gruppen des Users</b>
<?php $userid=$user->uid;
$result = db_query("SELECT n.created, n.title, n.nid, o.nid, n.changed FROM node n, og_uid o WHERE o.uid = $userid AND n.nid = o.nid AND n.type = 'gruppe' AND n.status = 1 ORDER BY n.changed DESC");
$output3 .= "<div class=\"item-list\"><ul>\n";
$list = node_title_list($result);
$output3 .= strip_tags($list) ? $list : '<li>Noch keinen Gruppen beigetreten</li>';
print $output3; ?>
</ul></div>
Wie ich schon sagte
am 17.04.2007 - 10:08 Uhr
Ist das nicht notwendig. Ist alles im User Objekt. Wann immer möglich, sollte man zusätzliche SQL Queries vermeiden.
vg
--
md - DrupalCenter
mdwp
und das heisst? Also die SQL
am 17.04.2007 - 10:17 Uhr
und das heisst? Also die SQL Queries, die ich da geschrieben habe, bräuchte man nicht?
Genau
am 17.04.2007 - 10:28 Uhr
weil sich die OG Subscriptions eines users im User Object befinden.
user's subscriptions are loaded into $user object
vg
--
md - DrupalCenter
mdwp
hallo und danke yippi, ich
am 17.04.2007 - 11:18 Uhr
hallo und danke yippi, ich kann das ganz gut gebrauchen - immerhin funktioniert es - bis ich dahintergestiegen bin, was es mit dem user object auf sich hat, werde ich diese lösung verwenden! :)
so, ich nochmal.. eine
am 17.04.2007 - 13:35 Uhr
so, ich nochmal.. eine feinere Version, jetzt müssten alle zufrieden sein :)
<?php
$groups = $user->og_groups;
if($groups){
echo "<b>Alle Gruppen des Users</b><br>";
foreach($groups as $group){
print l($group[title], 'node/'.$group[nid]);
echo "<br>";
}
}
else {
echo "<b>$user->name hat keine Gruppe</b>";
}
?>
ich hatte mittlerweile
am 17.04.2007 - 14:37 Uhr
ich hatte mittlerweile bemerkt dass vorher auch gruppen angezeigt wurden in denen man erst eine mitgliedschaft beantragt hat, aber noch nicht freigeschaltet war. jetzt geht das auch optimal, danke nochmal!