Seite 1 von 1

Nur für bestimmte Gruppen anzeigen

Verfasst: 19.09.2004 01:09
von saerdnaer
Author: Saerdnaer
Beschreibung: Mit diesem Snippet kann man Bereiche nur für bestimmte Gruppen anzeigen.
phpBB Version: 2.0.x

Code: Alles auswählen

#
#-----[ Öffne ]------------------------------------------
# 
includes/functions.php
#
#-----[ Finde ]------------------------------------------
# 
?>
#
#-----[ Füge davor ein ]-------------------------------------------
# 
function member_of($group_id, &$userdata)
{
        global $db;
        if ( !$userdata['session_logged_in'] )
        {
                return false;
        }
        if ( isset($userdata['user_member_of_' . $group_id]) )
        {
                return $userdata['user_member_of_' . $group_id];
        }
        $sql = "SELECT count(*) AS num FROM " . USER_GROUP_TABLE . "
                WHERE user_id = '" . $userdata['user_id'] . "' AND user_pending = 0 AND group_id IN ( " . $group_id . " )";
          if ( !($result = $db->sql_query($sql)) )
        {
                message_die(GENERAL_ERROR, 'Could not get group auth', '', __LINE__, __FILE__, $sql);
        }
        $row = $db->sql_fetchrow($result);
        if ( $row['num'] > 0 )
        {
                return $userdata['user_member_of_' . $group_id] = true;
        }
        return $userdata['user_member_of_' . $group_id] = false;
}
#
#-----[ Öffne ]------------------------------------------
# 
includes/page_header.php
#
#-----[ Finde ]------------------------------------------
# 
        if ( !empty($userdata['user_popup_pm']) )
        {
                $template->assign_block_vars('switch_enable_pm_popup', array());
        }
#
#-----[ Füge danach ein ]-------------------------------------------
# 
        if ( member_of('123', $userdata) )
        {
                $template->assign_block_vars('switch_usergroup_123', array());
        }
wobei 123 jeweils die Gruppen ID ist. Mehrere Gruppen können mit einem Komma getrennt eingegeben werden.
Anschließend den entsprechenden Teil in der Template Datei mit folgendem Schalter umschließen:

Code: Alles auswählen

<!-- BEGIN switch_usergroup_123 -->
Hier der Code der nur für die Gruppe sichtbar sein soll.
<!-- END switch_usergroup_123 -->

Verfasst: 26.02.2006 22:39
von saerdnaer
Da ich jetzt schon mehrmals gefragt wurde, wie man genau das Gegenteil ereicht, also das ein Teil von einer bestimmten Gruppe nicht gesehen wird; hier eine kleine Erweiterung:

(Die obrige Funktion muss natürlich schon eingebaut sein.)
Man fügt in der page_header.php einfach einen weiteren Code-Block ein:

Code: Alles auswählen

#
#-----[ Füge ein ]-------------------------------------------
#
        if ( !member_of('456', $userdata) )
        {
                $template->assign_block_vars('switch_usergroup_not_456', array());
        }
und schon hat man einen Block

Code: Alles auswählen

<!-- BEGIN switch_usergroup_not_456 -->
Hier der Code der für die Gruppe nicht sichtbar sein soll.
<!-- END switch_usergroup_not_456 -->
der genau das erwünschte Ziel erreicht.

(Der Unterschied ist übrigens das Ausrufezeichen vor der member_of() Funktion.)

MfG ah