MyBB.de Forum

Normale Version: Hooks
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
Hallo Smile

Erst einmal muss ich sagen, dass ich das Plugin super finde, auch das Patches-Plugin wird schon ausgiebig genutzt.

Nachdem also die Patches so gut funktionieren, wollte ich also die Hooks testen. Habe dafür auch erstmal nur ein wenig Test-Code verwendet, um nicht zu viele Unbekannte zu haben, die Probleme auslösen könnten.

Es handelt sich um eine Ausgabe im Thread. Dort soll im Profil des Users später ein Link angezeigt werden, jetzt zu Testzwecken ist es der String "Hallo Welt."
Dafür habe ich den Hook "postbit" verwendet (wenn das der Richtige ist?)

Meine Funktion sieht jetzt so aus

PHP-Code:
global $prelas$post$mybb;

if (
$mybb->user['uid'] != $post['uid']){
$uid $post['uid'];
$prelas "Hallo Welt.";


ich habe die Variable
PHP-Code:
$prelas 
im Template postbit_classic deklariert, in den Einstellungen verwende ich auch dieses Template für die Thread-Ansicht.

Leider wird mir nichts angezeigt. Mit einer Test-Echo-Ausgabe habe ich geprüft, ob die If-Anweisung korrekt ausgeführt wird, da klappt alles. Ich habe aber nun keine Idee mehr, was die Ursache sein könnte. Vielleicht kann mir jemand weiterhelfen?

Viele Grüße!
Hast Du deine Variable für das Template in geschweifte Klammern gesetzt ?
Versuch mal, statt eine eigene Variable zu definieren, ein neues Argument von $post zu verwenden, also $post['prelas'] statt $prelas.
Danke für die schnelle Hilfe!

@MrBrechreiz: Die Variable habe ich im Template in geschweifte Klammern gesetzt, daran lag es leider nicht

@waldo: ich habe meine Variable durch $post['prelas'] ersetzt, im Template und im Hook, aber auch das hat leider nichts gebracht.

Eine andere Frage: ich bin mir nicht sicher, ich habe bei Argument nichts stehen in dem Hook. Sollte da etwas rein? Ich habe es jetzt mit post probiert, das hat leider auch nichts gebracht.

Hier nochmal mein Code mit der Änderung der Variable

PHP-Code:
global $post$mybb$templates;

if (
$mybb->user['uid'] != $post['uid']){
$uid $post['uid'];
$post['prelas'] = "Hallo Welt.";

Habe es gerade mal getestet. Es sollte funktionieren, wenn du post als Argument einträgst und dann als Code:

PHP-Code:
global $mybb;

if (
$mybb->user['uid'] != $post['uid']){
$uid $post['uid'];
$post['prelas'] = "Hallo Welt.";

(du musst aus dem vorherigen Code $post hinter global entfernen)

Dann kannst du {$post['prelas']} in den Templates postbit und postbit_classic verwenden und es wird auch angezeigt.
Eben Local auch getestet. So wie es waldo schreibt gehts. Ich habe da aber noch eine Variante, in der brauchst Du gar keine Einträge ins Template machen.

PHP-Code:
global $mybb$templates;

if (
$mybb->user['uid'] != $post['uid']){
$uid $post['uid'];
$post['prelas'] = "Hallo Welt.";

$post['user_details'] = "{$post['user_details']}<br />{$post['prelas']}";


Als Such Pattern habe ich $post['user_details'] genommen, welche in beiden Templates (postbit & postbit_classic) vorkommt.
Tausend Dank! Beide Varianten funktionieren einwandfrei! Danke für die schnelle und unkomplizierte Hilfe! Smile
Seiten: 1 2 3 4