Nur für bestimmte Gruppen anzeigen

In diesem moderierten Forum werden Code-Schnipsel, die zu klein sind, um richtige Mods zu sein, abgelegt.
Bei Fragen oder Problemen benutze bitte das Forum phpBB 2.0: Mod Support.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Nur für bestimmte Gruppen anzeigen

Beitrag 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 -->
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag 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
Antworten

Zurück zu „phpBB 2.0: Snippets“