Button nur bei bestimmtem User anzeigen

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.
Antworten
MaxK
Mitglied
Beiträge: 2
Registriert: 18.11.2009 15:45

Button nur bei bestimmtem User anzeigen

Beitrag von MaxK »

Hi,

ich möchte einen weiteren Button in der viewtopic-Ansicht hinzufügen.
Bei meinem Style (subsilver2) befindet sich unten ein "ändern"-Button. Dorthin möchte ich auch den neuen Button setzen.
Dieser soll allerdings nur bei einem bestimmten User (Themenstarter) angezeigt werden. Ich habe das soweit alles zuende gedacht und auch schon zum Test in viewtopic.php die Abfrage, ob der aktuelle User Themenstarter ist eingebaut. Soweit alles bestens.

Die Einbindung des Buttons findet (wie beim ändern-Button) in der Template Datei statt. Vor dem änder-Button steht dort: "<!-- IF postrow.U_EDIT -->". Ich glaube, dass das dazu dient, den Button nur anzuzeigen, wenn eine bestimmte Bedingung erfüllt ist.
Dieses U_EDIT ist in viewtopic.php im array "postrow" wie folgt definiert:

Code: Alles auswählen

'U_EDIT'			=> (!$user->data['is_registered']) ? '' : ((($user->data['user_id'] == $poster_id && $auth->acl_get('f_edit', $forum_id) && ($row['post_time'] > time() - ($config['edit_time'] * 60) || !$config['edit_time'])) || $auth->acl_get('m_edit', $forum_id)) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=edit&f=$forum_id&p={$row['post_id']}") : ''),
Ich verstehe allerdings nicht, wie ich das auf meinen Button übertragen soll. Ich habe eine Variable, die entweder "true" oder "false" enthält, je nachdem, ob der User den Button sehen soll oder nicht.

Ich habe nun in der template-Datei vor meinen Button den Code "<!-- IF postrow.U_MEINBUTTON -->" gesetzt (dahinter natürlich auch das endif).

Was muss ich nun im postrow-array bei 'U_MEINBUTTON =>' schreiben, damit der Button nur angezeigt wird, wenn meine boolean-Variable "true" enthält?


Schonmal im Voraus danke für Antworten!

MaxK
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Button nur bei bestimmtem User anzeigen

Beitrag von gn#36 »

Der Editbutton wird anhand des Vorhandenseins einer URL eingebunden (U_EDIT). In der von dir angegebenen Stelle wird im PHP Teil der Link an das Template weitergegeben der vom Editbutton aufgerufen werden soll. Soll es keinen Editbutton geben, ist dieser Link leer und durch den Switch im Template wird das ganze nicht angezeigt.

Du kannst das ganze im Prinzip genauso machen. Du prüfst ob in deiner Variable true steht (oder was auch immer wenn der Link angezeigt werden soll), wenn ja gibst du dem Template die URL die du aufrufen möchtest (mit append_url wenn der User auf der Folgeseite eingeloggt bleiben soll). Im Template baust du auch so einen Switch und dein Button wird sich ganz genau so verhalten wie der Editbutton.

Also im php Teil etwas ähnliches wie das hier:

Code: Alles auswählen

'U_MEINBUTTON' => $meinevariable ? append_url('link.php') : '',
und im Template dann eben sowas:

Code: Alles auswählen

<!-- IF postrow.U_MEINBUTTON --><a href="{postrow.U_MEINBUTTON}">{L_MEINBUTTON}</a><!-- ENDIF -->
Die Sprachvariable müsstest du noch füllen, das kannst du mit einer eigenen Datei im language/de/mods/ Verzeichnis erledigen, oder du bindest den Text in einer passenden Sprachdatei die es schon gibt mit ein. Spezielle Namen bei Dateien im mods Unterverzeichnis werden übrigens erkannt und automatisch eingebunden, nämlich die Präfixe info_ und permissions_. Es ist bei größeren Datenmengen die zusätzlich in Sprachdateien landen sollen aber zu empfehlen dass die Dateien stattdessen nur da eingebunden werden wo sie notwendig sind, also per $user->add_lang();
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Antworten

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