Anzeige in Block "Groups" ändern
-> Module & Blöcke

#1: Anzeige in Block "Groups" ändern Autor: Joerg12 BeitragVerfasst am: 07.02.2009 01:16
    ----
Hallo,

verwendet man das neue Club-Module, kann man sich die 10-Top-Clubs als Block anzeigen lassen.

Leider werden nun aber auch alle Clubs im Block Groups angezeigt. Dies kann bei vielen Clubs dazu führen, daß der Block "Groups" immer länger wird.

Ich wollte nun im Block "Groups" nur 2 Benutzergruppen anzeigen lassen. Alle anderen soll der Block ignorieren.

Der PHP Code sieht folgendermaßen aus:

PHP:
<?php
if (!defined('CPG_NUKE')) { exit; }

if (!
is_active('Groups')) {
$content = 'ERROR';
return trigger_error('Groups module is inactive', E_USER_WARNING);
}

global
$db, $prefix, $userinfo,$lang;
get_lang('forums');
$in_group = array();

// Select all groups where the user is a member
if (isset($userinfo['_mem_of_groups'])) {
$s_member_groups = '';
foreach ($userinfo['_mem_of_groups'] as $id => $name) {
$in_group[] = $id;
if (!empty($name)){
$s_member_groups .= '&nbsp;&nbsp;&nbsp;&nbsp;<a title="'.$name.'" href="' . getlink('Groups&amp;g='.$id) . '">&nbsp;<img src="images/arrow.gif" alt="'.$name.'" border="0" height="9" width="9" /> ' . $name . '</a><br />';
}
}
}
// Select all groups where the user has a pending membership.
if (is_user()) {
$result = $db->sql_query('SELECT g.group_id, g.group_name, g.group_type
FROM '
. $prefix.'_bbgroups g, ' . $prefix.'_bbuser_group ug
WHERE ug.user_id = '
. $userinfo['user_id'] . '
AND ug.group_id = g.group_id
AND ug.user_pending = 1
AND g.group_single_user = 0
ORDER BY g.group_name, ug.user_id'
);
if ($db->sql_numrows($result)) {
$s_pending_groups = '';
while ( $row = $db->sql_fetchrow($result) ) {
$in_group[] = $row['group_id'];
$s_pending_groups .= '&nbsp;&nbsp;&nbsp;&nbsp;<a title="'.$row['group_name'].'" href="' . getlink('Groups&amp;g='.$row['group_id']) . '"> <img src="images/arrow.gif" alt="'.$row['group_name'].'" border="0" height="9" width="9" /> ' . $row['group_name'] . '</a><br />';
}

}
}

// Select all other groups i.e. groups that this user is not a member of
$ignore_group_sql = ( count($in_group) ) ? "AND group_id NOT IN (" . implode(', ', $in_group) . ")" : '';
$result = $db->sql_query("SELECT group_id, group_name, group_type
FROM "
. $prefix."_bbgroups
WHERE group_single_user = 0
$ignore_group_sql
ORDER BY group_name"
);

$s_group_list = '';
while (
$row = $db->sql_fetchrow($result)) {
if ($row['group_type'] != 2 || is_admin()) {
$s_group_list .='&nbsp;&nbsp;&nbsp;&nbsp;<a title="'.$row['group_name'].'" href="' . getlink('Groups&amp;g='.$row['group_id']) . '"> <img src="images/arrow.gif" alt="'.$row['group_name'].'" border="0" height="9" width="9" /> ' . $row['group_name'] . '</a><br />';
}
}

$content = '';
if (isset(
$s_member_groups)) {
$content .= '<img src="images/blocks/group-1.gif" alt="'.$lang['Current_memberships'].'" border="0" height="14" width="17" /> '.$lang['Current_memberships'].'<br />'.$s_member_groups;
}
if (isset(
$s_pending_groups)) {
$content .= '<img src="images/blocks/group-3.gif" alt="'.$lang['Memberships_pending'].'" border="0" height="14" width="17" /> '.$lang['Memberships_pending'].'<br />'.$s_pending_groups;
}
if (
$s_group_list != '') {
$content .= '<img src="images/blocks/group-4.gif" alt="'.$lang['Group_member_join'].'" border="0" height="14" width="17" /> '.$lang['Group_member_join'].'<br />'.$s_group_list;
}
if (!
is_user()) {
$content .= '<br />'.$lang['Login_to_join'];
}

Kann mir jemand sagen, wie ich nur 2 ausgewählte Benutzergruppen (Gruppe1 und Gruppe2) in diesem Block anzeigen lassen kann ?

Vielen Dank !

Gruss
Jörg.

#2: Re: Anzeige in Block "Groups" ändern Autor: Joerg12 BeitragVerfasst am: 21.06.2009 15:34
    ----
Hallo,

hmmmm... warum antwortet mir keiner auf dieses Posting ?

Ich suche immer noch jemanden, der mir kurz sagt, wie ich die Datei "block-Groups.php" verändern muß, damit mir NUR die beiden Usergruppen 1+2 (goup_id 1 und 2) angezeigt werden.

Alle anderen Usergruppen mit der group_id 3 und höher sollen ignoriert werden.

Ist doch sicherlich keine große Sache....

Bitte noch einmal um Antwort.

Gruss
Jörg.

#3: Re: Anzeige in Block "Groups" ändern Autor: Poldi BeitragVerfasst am: 21.06.2009 17:57
    ----
Dafür brauchst du nicht den Groups-Block ändern, sondern es sollte reichen, einen einfachen HTML-Block mit den beiden Links zu erstellen ...

Array:
<a href="http://www.deinedomain.de/index.php?name=Groups&g=1"  target="_self">Gruppe 1</a>
<a href="http://www.deinedomain.de/index.php?name=Groups&g=2"  target="_self">Gruppe 2</a>

Nicht unbedingt elegant, aber einfach und funktionell ...

#4: Re: Anzeige in Block "Groups" ändern Autor: Joerg12 BeitragVerfasst am: 22.06.2009 21:14
    ----
Hallo Poldi,

genau so habe ich es derzeit auch gelöst, ABER auf diese Art und Weise wird mir dem User nicht angezeigt ob er schon Mitglied in der Benutzergruppe ist, oder nicht. (Sonst bräuchte man ja auch den ganzen Code im Block nicht....)

Gruss
Jörg.

#5: Re: Anzeige in Block "Groups" ändern Autor: Poldi BeitragVerfasst am: 23.06.2009 09:00
    ----
Hmm ...
wie gesagt, bei mir funktioniert der ganze Groups-Block nicht, wird daher etwas schwieriger mit testen, aber ich gucks mir mal an ...

#6: Re: Anzeige in Block "Groups" ändern Autor: Poldi BeitragVerfasst am: 23.06.2009 13:35
    ----
So, auf die Schnelle hab ichs mal etwas geändert ...

Die Gruppen, in denen man Mitglied ist, werden leider immernoch alle angezeigt, daran muß ich noch arbeiten,
aber bei den Gruppen, denen man beitreten kann bzw. bei denen seine Mitgliedschaft noch nicht freigegeben ist (geschlossene Gruppen) werden nur die ersten X Gruppen angezeigt.

In den Zeiten 29 und 48 einfach die 3 durch die ID der Gruppe ersetzen, welche als erste NICHT mehr angezeigt werden soll.

Ich hoffe, das ist in etwa das, was du dir vorgestellt hast ...


PHP:
<?php
if (!defined('CPG_NUKE')) { exit; }

if (!
is_active('Groups')) {
$content = 'ERROR';
return trigger_error('Groups module is inactive', E_USER_WARNING);
}

global
$db, $prefix, $userinfo,$lang;
get_lang('forums');
$in_group = array();

// Select all groups where the user is a member
if (isset($userinfo['_mem_of_groups'])) {
$s_member_groups = '';
foreach ($userinfo['_mem_of_groups'] as $id => $name) {
$in_group[] = $id;
if (!empty($name)){
$s_member_groups .= '&nbsp;&nbsp;&nbsp;&nbsp;<a title="'.$name.'" href="' . getlink('Groups&amp;g='.$id) . '">&nbsp;<img src="images/arrow.gif" alt="'.$name.'" border="0" height="9" width="9" /> ' . $name . '</a><br />';
}
}
}
// Select all groups where the user has a pending membership.
if (is_user()) {
$result = $db->sql_query('SELECT g.group_id, g.group_name, g.group_type
FROM '
. $prefix.'_bbgroups g, ' . $prefix.'_bbuser_group ug
WHERE ug.user_id = '
. $userinfo['user_id'] . '
AND ug.group_id = g.group_id
AND ug.group_id < 3
AND ug.user_pending = 1
AND g.group_single_user = 0
ORDER BY g.group_name, ug.user_id'
);
if ($db->sql_numrows($result)) {
$s_pending_groups = '';
while ( $row = $db->sql_fetchrow($result) ) {
$in_group[] = $row['group_id'];
$s_pending_groups .= '&nbsp;&nbsp;&nbsp;&nbsp;<a title="'.$row['group_name'].'" href="' . getlink('Groups&amp;g='.$row['group_id']) . '"> <img src="images/arrow.gif" alt="'.$row['group_name'].'" border="0" height="9" width="9" /> ' . $row['group_name'] . '</a><br />';
}

}
}

// Select all other groups i.e. groups that this user is not a member of
$ignore_group_sql = ( count($in_group) ) ? "AND group_id NOT IN (" . implode(', ', $in_group) . ")" : '';
$result = $db->sql_query("SELECT group_id, group_name, group_type
FROM "
. $prefix."_bbgroups
WHERE group_single_user = 0
AND group_id < 3
$ignore_group_sql
ORDER BY group_name"
);

$s_group_list = '';
while (
$row = $db->sql_fetchrow($result)) {
if ($row['group_type'] != 2 || is_admin()) {
$s_group_list .='&nbsp;&nbsp;&nbsp;&nbsp;<a title="'.$row['group_name'].'" href="' . getlink('Groups&amp;g='.$row['group_id']) . '"> <img src="images/arrow.gif" alt="'.$row['group_name'].'" border="0" height="9" width="9" /> ' . $row['group_name'] . '</a><br />';
}
}

$content = '';
if (isset(
$s_member_groups)) {
$content .= '<img src="images/blocks/group-1.gif" alt="'.$lang['Current_memberships'].'" border="0" height="14" width="17" /> '.$lang['Current_memberships'].'<br />'.$s_member_groups;
}
if (isset(
$s_pending_groups)) {
$content .= '<img src="images/blocks/group-3.gif" alt="'.$lang['Memberships_pending'].'" border="0" height="14" width="17" /> '.$lang['Memberships_pending'].'<br />'.$s_pending_groups;
}
if (
$s_group_list != '') {
$content .= '<img src="images/blocks/group-4.gif" alt="'.$lang['Group_member_join'].'" border="0" height="14" width="17" /> '.$lang['Group_member_join'].'<br />'.$s_group_list;
}
if (!
is_user()) {
$content .= '<br />'.$lang['Login_to_join'];
}



-> Module & Blöcke

Alle Zeitangaben sind in GMT + 1 Stunden

Seite 1 von 1