<!-- IF S_ --> Variabeln selbst erstellen.

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
chris1278
Mitglied
Beiträge: 3843
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

<!-- IF S_ --> Variabeln selbst erstellen.

Beitrag von chris1278 »

Hier eine Anleitung wie man sich abfrage Variable für templates erstellt.

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);
setze davor:

Code: Alles auswählen

include($phpbb_root_path . 'includes/functions_user.' . $phpEx);  
somit wird die geforderte Datei immer mit geladen.

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.
// 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);
}
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.

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
// 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);
}
nun folgende stelle in der index.ph suchen und den code davor einfügen:

Code: Alles auswählen

// Output page
page_header($user->lang['INDEX']);

$template->set_filenames(array(

so sieht der code aus ohne anmerkunden
$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
}
Wenn du dann diesen Code jetzt nehmen würdest so wie ich den hier getextet habe würdest du zwei Variablen haben Nämlich
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 -->  
Somit würde der Mod Nr.: 1 nur gehen wenn du der benutzergruppe mit der id 5 angehörst in unserem beispiel hier der gruppe Administratoren

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.
Zuletzt geändert von chris1278 am 09.01.2009 06:42, insgesamt 2-mal geändert.
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17473
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: <!-- IF S_ --> Variabeln selbst erstellen.

Beitrag von Dr.Death »

Naja,

um auf "Admin" oder "Gast" zu prüfen braucht man diese Anleitung nicht.... unbedingt ;-)

Einen Admin erkennt man an den Adminrechten...
Sobald ein User irgendein Adminrecht hat ist U_ACP true.

Code: Alles auswählen

<!-- IF U_ACP -->
 hier steht der Code für einen Admin
<!-- ENDIF --> 
Das gleiche gilt für Moderatoren:

Code: Alles auswählen

<!-- IF U_MCP -->
 hier steht der Code für einen Moderator
<!-- ENDIF --> 
Gäste werden so ermittelt:

Code: Alles auswählen

<!-- IF not S_USER_LOGGED_IN and not S_IS_BOT -->
 Hier steht der Code nur für Gäste ( Nicht eingeloggte User )
 Auch Suchmaschienen finden diese Stelle nicht
<!-- ENDIF --> 
Benutzeravatar
chris1278
Mitglied
Beiträge: 3843
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: <!-- IF S_ --> Variabeln selbst erstellen.

Beitrag von chris1278 »

das ist ja nur als beispiel gedacht. man kan nach der anleitung aber z.b. ne gruppe neu erstellen und mit bzw. für diese grupe ne variable machen. dafür ist das gedacht
jimmartens
Mitglied
Beiträge: 369
Registriert: 28.11.2008 20:04
Wohnort: Hamburg
Kontaktdaten:

Re: <!-- IF S_ --> Variabeln selbst erstellen.

Beitrag von jimmartens »

Hast aber was wichtiges vergessen: Vor dem folgenden Code kommt noch "if ($is_in_group == true)".

Code: Alles auswählen

{
$template->assign_var('S_ADMIN', true);
}
Ohne die if-Funktion übermittelt das Skript die Variable nicht und somit würde eine Eingabe im Template nur als Kommentar gewertet werden.
Um es für die Supporter einfacher zu machen: Hier meine Forums-Adresse: Mein Eisenbahn-Forum
Doktor Smile
Gesperrt
Beiträge: 56
Registriert: 08.01.2009 14:53

Re: <!-- IF S_ --> Variabeln selbst erstellen.

Beitrag von Doktor Smile »

Dr. Death hat da natürlich recht, was diese Gruppen betrifft.

Aber mir z.B. hat es sehr geholfen, da ich mit dieser Sache hier echt immer Probleme hatte.

Ich habs zwar noch nicht getestet,
allerdings habe ich bei diesem Codeschnippsel oder was das war nicht einmal den Code verstanden. :grin:

Vielen dank!

Könntest du evtl. auch nochmal so ein tolles Tutorial machen, wie man Gruppen zur Teamseite hinzufügt? Da habe ich den Code leider auch nicht verstanden.

herzliche Grüße
Doktor :)
herzliche Grüße
Dr. :)

Die Wahrheit über phpBB.de:
Wacht auf!

http://www.phpbb.de/community/viewtopic ... 0#p1072780
jimmartens
Mitglied
Beiträge: 369
Registriert: 28.11.2008 20:04
Wohnort: Hamburg
Kontaktdaten:

Re: <!-- IF S_ --> Variabeln selbst erstellen.

Beitrag von jimmartens »

Ich bin zwar ein anderer aber im Grunde genommen ganz einfach. Kommt allerdings darauf an welche Seite du meinst. Meinst du, dass wenn man auf dem Portal links auf Team klickt deine Gruppe angezeigt wird? Wenn ja, dann vergiss es, denn dort werden nur die Mitglieder der Administratoren und Moderatoren gezeigt. Wobei unter Administratoren alle gezeigt werden, die über irgendeinen Weg Admin-Rechte haben. Das gleiche gilt für die Moderatoren, nur halt dort auf Moderatorenrechte bezogen. Wenn du möchtest, dass deine Gruppe als Systemgruppe angezeigt wird, musst du unter "/language/<sprache>/common.php" den Eintrag

Code: Alles auswählen

'G_GLOBAL_MODERATORS'		=> 'Globale Moderatoren',
suchen und darunter den Gruppenname, den die Gruppe in der Datenbank hat, hinschreiben und lediglich "G_" davorsetzen, damit sie als Systemgruppe erkannt wird. Auf der rechten Seite musst du logischerweise die Übersetzung in der jeweiligen Sprache hinschreiben. Wenn du dann ins Admin-Menü gehst, müsstest du deine Gruppe unter Systemgruppen sehen.

Solltest du dagegen eine voreingestellte Teamseite brauchen, wo alle Gruppen aufgelistet werden, dann bastel dir selbst eine oder lade dir auf meiner Seite, nicht vom Titel irritieren lassen, meine Teamseite herunter. Soweit ich weiß gibt es von phpBB3 noch keine komplette Teamseite.

Wegen des Downloads: So ungefähr eine halbe Stunde ab Schreibdatum des Beitrags musst du noch warten, vorher ist der Download nicht sichtbar.

Zu der Einrichtung: Einfach die groups.php ins root-Verzeichnis des Forums laden, die lang_groups.php ins deutsche Sprachpaket und die groups_template.html einfach in den template-Ordner von prosilver, bzw. subsilver2.
Um es für die Supporter einfacher zu machen: Hier meine Forums-Adresse: Mein Eisenbahn-Forum
godmod23
Mitglied
Beiträge: 174
Registriert: 30.04.2008 22:20

Re: <!-- IF S_ --> Variabeln selbst erstellen.

Beitrag von godmod23 »

Zum Thema "Neue Gruppe auf der Teampage" gibt es einen (verlassenen) Mod von NV, nämlich den hier: http://www.flying-bits.org/viewtopic.php?f=24&t=89 Dieser wurde allerdings nur für 3.0.0 getestet, ob er auch im 3.0.4 läuft weiß ich nicht...
Greetings, godmod
Doktor Smile
Gesperrt
Beiträge: 56
Registriert: 08.01.2009 14:53

Re: <!-- IF S_ --> Variabeln selbst erstellen.

Beitrag von Doktor Smile »

godmod23 hat geschrieben:Zum Thema "Neue Gruppe auf der Teampage" gibt es einen (verlassenen) Mod von NV, nämlich den hier: http://www.flying-bits.org/viewtopic.php?f=24&t=89 Dieser wurde allerdings nur für 3.0.0 getestet, ob er auch im 3.0.4 läuft weiß ich nicht...
Ich weiß,
den habe ich auch bereits getestet, jedoch geht der nur für eine Gruppe.
D.h. ich kann letztendlich nur eine Gruppe hinzufügen.

Desweiteren gab es danach das Problem:
Es war alles durcheinander. Unter anderem stand in der Spalte "Moderator" ein Administrator drin,
der aber in keinster weise irgendwo als Moderator drin war. In der Admingruppe wurde der nicht angezeigt.

Dieser MOD machte mir nur Probleme. Daher fragte ich.

Es geht um memberlist?mode=leaders

Da habe ich noch 2 Gruppen, die sollen darein.
Einmal "Staff" und einmal "Supporter".
herzliche Grüße
Dr. :)

Die Wahrheit über phpBB.de:
Wacht auf!

http://www.phpbb.de/community/viewtopic ... 0#p1072780
jimmartens
Mitglied
Beiträge: 369
Registriert: 28.11.2008 20:04
Wohnort: Hamburg
Kontaktdaten:

Re: <!-- IF S_ --> Variabeln selbst erstellen.

Beitrag von jimmartens »

Habe jetzt das Grundgerüst fertig. Einfach bei neuen Gruppen in der language-Datei diese mit Link angeben. In der Skriptdatei einfach dann die entsprechenden Variablen an das Template übergeben und im Template einsetzen. Mit dabei sind Templatevariablen, um z.B. nur Administratoren den Zugriff zu erlauben. Runtergeladen werden kann es hier: Teamseite für phpBB3 Bei Fragen, bitte im Forum posten. Sowohl hier als auch bei meinem.

Was vielleicht noch zu erwähnen ist. Der "MOD" ist nur deshalb so einfach, da keinerlei Funktionen gebraucht werden. Man muss halt lediglich die Gruppen-ID wissen und dann kann man in der language-Datei einfach einen vorhandenen Link nehmen und hinten die ID ändern. Aber genug der Vorrede, ihr werdet sehen, dass es ganz einfach ist.
Es geht um memberlist.php?mode=leaders
Einfach im ACP einer Gruppe oder einem User Admin-/Moderatorenrechte geben, schon erscheint sie/er auf der Seite. Dafür braucht man kein MOD.
Um es für die Supporter einfacher zu machen: Hier meine Forums-Adresse: Mein Eisenbahn-Forum
Doktor Smile
Gesperrt
Beiträge: 56
Registriert: 08.01.2009 14:53

Re: <!-- IF S_ --> Variabeln selbst erstellen.

Beitrag von Doktor Smile »

Achso, ja.

Nur sieht es natürlich komisch aus,
wenn bei Moderatoren auch die Supporter auftauchen :wink:

Aber trotzdem danke für deine Hilfe. Werde da selbst ein wenig probieren :)
herzliche Grüße
Dr. :)

Die Wahrheit über phpBB.de:
Wacht auf!

http://www.phpbb.de/community/viewtopic ... 0#p1072780
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“