Dies ist getestet und funktioniert mit Phpbb 3.0.4
Diese Variablen sind dann an Gruppen (und deren id) Verbunden.
Zugrunde lege folgenden mod-snipet: Gruppenzugehörigkeiten eines Benutzers prüfen
dazu benötigt man wie in dem snipet beschrieben logischerweise die Funktion: group_memberships()
Um diese zu laden muss man die Datei functions_user.php laden die im Ordner includes liegt.
Also hier root/includes/functions_user.php
um diese Datei zu laden musst du die Index.php im root Verzeichnis deines Forums bearbeiten
Dafür suche:
Code: Alles auswählen
// Start session management
$user->session_begin();
$auth->acl($user->data);
Code: Alles auswählen
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
desweiteren Bediene ich mich dann aus dem vorliegende Snipet an dem Szenario 1. in dem wir das in einzelgruppen machen.
und zwar benutz man dafür am besten folgenden code:
Für eine Variable die im Template als <!-- IF S_ADMIN --> lautet ist hier das Bespiel die Gruppe 5 die im normal Fall nach der Installation des Phpbb Forums automatisch der Systemgruppe "Administrator" zugeordnet ist.
Wenn man jetzt zwei Variablen haben will mus man den Code so wie der oben ist einfach verdoppeln. allerdings mus die gruppen id und der Variable-Name dementsprechend angepasst werden.// zu überprüfende Gruppen ID ( Beispiel Gruppen ID 5 )
$gruppen_id = 5;
// zu überprüfender User ( Beispiel: Der User, der diese Seite aufgerufen hat )
$benutzer_id = $user->data['user_id'];
// Nun erfolgt die eigentliche Prüfung:
$is_in_group = group_memberships($gruppen_id, $benutzer_id , true);
if ($is_in_group == true)
{
//Hier kann man der Variable einen Namen geben in unserem beispiel hier S_ADMIN
$template->assign_var('S_ADMIN', true);
}
Hier das Beispiel dafür:
Wir nehmen wie oben die Gruppe des "Administrators" (Gruppen ID=5) und wir nehmen zusätzlich noch die Gruppe "Gäste" (Gruppen ID=1) dies sind beides Standard Gruppen die nach der Erstinstallation vorhanden sind und bis jetzt hatten die immer dieselbe Gruppen id gehabt. egal wie oft und wo ich die Forensoftware installiert hatte.
Hier auch farblich markiert
nun folgende stelle in der index.ph suchen und den code davor einfügen:// zu überprüfende Gruppen ID ( Beispiel Gruppen ID 5 )
$gruppen_id = 5;
// zu überprüfender User ( Beispiel: Der User, der diese Seite aufgerufen hat )
$benutzer_id = $user->data['user_id'];
// Nun erfolgt die eigentliche Prüfung:
$is_in_group = group_memberships($gruppen_id, $benutzer_id , true);
if ($is_in_group == true)
{
//Hier kann man der Variable einen Namen geben in unserem beispiel hier S_ADMIN
$template->assign_var('S_ADMIN', true);
}
// zu überprüfende Gruppen ID ( Beispiel Gruppen ID 2 )
$gruppen_id = 2;
// zu überprüfender User ( Beispiel: Der User, der diese Seite aufgerufen hat )
$benutzer_id = $user->data['user_id'];
// Nun erfolgt die eigentliche Prüfung:
$is_in_group = group_memberships($gruppen_id, $benutzer_id , true);
if ($is_in_group == true)
{
//Hier kann man der Variable einen Namen geben in unserem beispiel hier S_GAST
$template->assign_var('S_GAST', true);
}
Code: Alles auswählen
// Output page
page_header($user->lang['INDEX']);
$template->set_filenames(array(
so sieht der code aus ohne anmerkunden
Wenn du dann diesen Code jetzt nehmen würdest so wie ich den hier getextet habe würdest du zwei Variablen haben Nämlich$gruppen_id zahl= ;hier kommt die gruppen id hin
$benutzer_id = $user->data['user_id'];
$is_in_group = group_memberships($gruppen_id, $benutzer_id , true);
if ($is_in_group == true)
{
$template->assign_var('S_', true);hier mus eine variable name gewählt werden
}
1. <!-- S_ADMIN -->
2. <!-- S_GAST -->
Somit hättest du zwei Variablen für dein Template. Diese kann man dan z.B. einsetzen um verschiedene mods zu verschiedene gruppen zuzuordnen usw.
Somit könnet man jetzt z.B. den Aufrufbefehl von einem Mod den man eingebaut hat auf eine bestimmte Gruppe beschränken.
dafür mus man halt z.B. (meistens) in der index_bod.html den befehlscode des entsprechenden mods mit der Variable einbinden.
etwa so:
Code: Alles auswählen
<!-- S_ADMIN -->
Code von Mod Nr:1
<!-- ENDIF -->
<!-- S_GAST -->
Code von Mode Nr:2
<!-- ENDIF -->
und der Mod Nr. 2 würde nur gehen wenn du der GRuppe mit der id 2 Angehörst also der Gäste.
So im prinzip fehlt jetzt nur noch wie man die Gruppen ID herausfindet. dazu gehst du in den Admin-Bereich deines Forums auf Gruppen Verwalten dort nimmst du entweder eine Vorhandene Gruppe oder erstellst eine. Auf jeden fall gehts du auf die option "Einstellungen" der Gruppe die du benutzen willst und dann suchst du in der Adresszeile die dann in deinem Webbrowser erscheint den wert g= hier rot makiert:
die Zahl die hinter dem g= steht gibt die Gruppen ID an.
PS: ich weis in dem Snipet gibt es auch via array mit mehreren gruppen. dies hab ich allerdings nicht bzw. noch nicht zum laufen gebracht.