Frage zur Einbindung von eigenem BBCode
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.
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.
-
- Mitglied
- Beiträge: 9
- Registriert: 08.04.2009 16:53
- Wohnort: Bietigheim-Bissingen
- Kontaktdaten:
Frage zur Einbindung von eigenem BBCode
Hallo,
ich habe folgedes Problem:
Ich möchte gerne einen eigenen BBCode einführen. Beim Anzeigen des Post soll der Inhalt durch eine PHP-Klasse geschleift und der result ausgegeben werden.
Der Rückgabewert der Klasse ist ein DIV in dem sowohl Text als auch Bilder enthalten sind.
Die Syntax des BBCodes soll so aussehen:
[MyCode]"hier der Inhalt"[/MyCode]
Um es etwas genauer zu erläutern kurz der Hintergrund:
zwischen [MyCode] und [/MyCode] soll später ein VorlagenCode stehen, wie er zum Beispiel von GuildWars erstellt wird. Die PHP-Klasse wandelt diesen Code in eine kurze Beschreibung gefolgt von den 8 Fertigkeitssymbolen(jpeg) um.
Ich möchte hiermit den User ermöglichen Fertigkeitsvorlagen grafisch mit anderen zu tauschen.
Das wäre auch alles kein Problem, wenn ich verstehen würde, wie ich den BBCode parse.
Wäre super, wenn mir jemand helfen kann.
Dank und Gruß
Anes
ich habe folgedes Problem:
Ich möchte gerne einen eigenen BBCode einführen. Beim Anzeigen des Post soll der Inhalt durch eine PHP-Klasse geschleift und der result ausgegeben werden.
Der Rückgabewert der Klasse ist ein DIV in dem sowohl Text als auch Bilder enthalten sind.
Die Syntax des BBCodes soll so aussehen:
[MyCode]"hier der Inhalt"[/MyCode]
Um es etwas genauer zu erläutern kurz der Hintergrund:
zwischen [MyCode] und [/MyCode] soll später ein VorlagenCode stehen, wie er zum Beispiel von GuildWars erstellt wird. Die PHP-Klasse wandelt diesen Code in eine kurze Beschreibung gefolgt von den 8 Fertigkeitssymbolen(jpeg) um.
Ich möchte hiermit den User ermöglichen Fertigkeitsvorlagen grafisch mit anderen zu tauschen.
Das wäre auch alles kein Problem, wenn ich verstehen würde, wie ich den BBCode parse.
Wäre super, wenn mir jemand helfen kann.
Dank und Gruß
Anes
Don´t fear the penguin
Re: Frage zur Einbindung von eigenem BBCode
Bei der Implementierung unserer KB:quicklinks2 habe ich mich nach diversen anderen getesteten Ansätzen dafür entschieden, den von phpBB generierten Erintrag in der phpbb_bbcodes Tabelle nachträglich mit dem PCRE e-Modifier (execute php) auszustatten.
Beispiel: Aus dem BBCode [kb]{TEXT}[/kb] -> {TEXT} generiert phpBB folgenden DB-Eintrag:
Dann ergänzt du beim second_pass_match ein 'e' und fügst deinen PHP-Code in second_pass_replace ein:
Beispiel: Aus dem BBCode [kb]{TEXT}[/kb] -> {TEXT} generiert phpBB folgenden DB-Eintrag:
Code: Alles auswählen
first_pass_match = !\[kb\](.*?)\[/kb\]!ies
first_pass_replace = '[kb:$uid]'.str_replace(array("\r\n", '\"', '\'', '(', ')'), array("\n", '"', ''', '(', ')'), trim('${1}')).'[/kb:$uid]'
second_pass_match = !\[kb:$uid\](.*?)\[/kb:$uid\]!s
second_pass_replace = ${2}
Code: Alles auswählen
second_pass_match = !\[kb:$uid\](.*?)\[/kb:$uid\]!se
second_pass_replace = do_something('${2}')
KB:knigge
-
- Mitglied
- Beiträge: 9
- Registriert: 08.04.2009 16:53
- Wohnort: Bietigheim-Bissingen
- Kontaktdaten:
Re: Frage zur Einbindung von eigenem BBCode
Danke erst mal für die schnelle Antwort.
Ich muss die Änderungen in der Datenbank vornehmen, wenn ich das richtig verstanden habe ... nur wo includiere ich dann meine PHP-Klasse?
Gruß
Anes
Ich muss die Änderungen in der Datenbank vornehmen, wenn ich das richtig verstanden habe ... nur wo includiere ich dann meine PHP-Klasse?
Gruß
Anes
Don´t fear the penguin
Re: Frage zur Einbindung von eigenem BBCode
Ja.MrAnes hat geschrieben:Ich muss die Änderungen in der Datenbank vornehmen, wenn ich das richtig verstanden habe
Irgendwo, wo sie für alle phpBB-Seiten sichtbar ist (z.B. in includes/functions.php)MrAnes hat geschrieben:nur wo includiere ich dann meine PHP-Klasse?
KB:knigge
-
- Mitglied
- Beiträge: 9
- Registriert: 08.04.2009 16:53
- Wohnort: Bietigheim-Bissingen
- Kontaktdaten:
Re: Frage zur Einbindung von eigenem BBCode
OK, ich hab jetzt folgendes in der DB:
in der functinos.php hab ich :
und die gwbbcode.php liegt im Verzeichnis "includes/".
Das ganze will ich dann in meinem Post mit:
aufrufen. Als Ausgabe bekomme ich leider nur:
Warum ignoriert er meinen PHP-Code?
Gruß
Anes
Code: Alles auswählen
bbcode_match = [kb]{TEXT}[/kb]
bbcode_tpl = {TEXT}
first_pass_match = !\[kb\](.*?)\[/kb\]!ies
first_pass_replace = '[kb:$uid]'.str_replace(array("\r\n", '\"', '\'', '(', ')'), array("\n", '"', ''', '(', ')'), trim('${1}')).'[/kb:$uid]'
second_pass_match = !\[kb:$uid\](.*?)\[/kb:$uid\]!se
second_pass_replace = encodeGW('${1}')
Code: Alles auswählen
include ('gwbbcode.php');
function encodeGW($code)
{
$myGW = new GWEnCode();
$mytemplate = $myGW->encode($code);
return $mytemplate;
}
Das ganze will ich dann in meinem Post mit:
Code: Alles auswählen
[kb]OwUTMw3C3JiUP0i3Vhg8AgoPAA[/kb]
Code: Alles auswählen
OwUTMw3C3JiUP0i3Vhg8AgoPAA
Gruß
Anes
Don´t fear the penguin
-
- Mitglied
- Beiträge: 9
- Registriert: 08.04.2009 16:53
- Wohnort: Bietigheim-Bissingen
- Kontaktdaten:
Re: Frage zur Einbindung von eigenem BBCode
KORREKTUR
Ich erhalte nach dem zweiten Versuch den Post zu senden nur noch eine weise Seite, habe seither KEINE Änderungen gemacht ...
Ich erhalte nach dem zweiten Versuch den Post zu senden nur noch eine weise Seite, habe seither KEINE Änderungen gemacht ...
Don´t fear the penguin
Re: Frage zur Einbindung von eigenem BBCode
Ersetze doch mal die Funktion encodeGW durch eine ganze simple, z.B.
Wenn das funktioniert, liegt der Fehler irgendwo in deinem Modul.
Code: Alles auswählen
function encodeGW($input) {
return ($input == '1') ? 'Eins' : 'was anderes';
}
KB:knigge
-
- Mitglied
- Beiträge: 9
- Registriert: 08.04.2009 16:53
- Wohnort: Bietigheim-Bissingen
- Kontaktdaten:
Re: Frage zur Einbindung von eigenem BBCode
OK, hab ich getestet.
Die Ausgabe bleibt gleich. Ich hab das Gefühl der kürzt den Fundktionsnamen weg und gibt nur den übergebenen Wert wieder aus.
Allerdings hab ich keinerlei logische Begründung dafür.
Hast noch ne Idee?
Gruß
Anes
P. S. die Ausgabe kommt wieder
Die Ausgabe bleibt gleich. Ich hab das Gefühl der kürzt den Fundktionsnamen weg und gibt nur den übergebenen Wert wieder aus.
Allerdings hab ich keinerlei logische Begründung dafür.
Hast noch ne Idee?
Gruß
Anes
P. S. die Ausgabe kommt wieder
Code: Alles auswählen
OwUTMw3C3JiUP0i3Vhg8AgoPAA
Don´t fear the penguin
-
- Mitglied
- Beiträge: 9
- Registriert: 08.04.2009 16:53
- Wohnort: Bietigheim-Bissingen
- Kontaktdaten:
Re: Frage zur Einbindung von eigenem BBCode
Hab jetzt deine Testfunktion
in die functions_posting.php eingefügt.
Jetzt bekomm ich immer ne weise Seite. Wenn ichs wieder lösche bekomm ich die gewohnte Ausgabe.
Code: Alles auswählen
function encodeGW($input) {
return ($input == '1') ? 'Eins' : 'was anderes';
}
Jetzt bekomm ich immer ne weise Seite. Wenn ichs wieder lösche bekomm ich die gewohnte Ausgabe.
Don´t fear the penguin
Re: Frage zur Einbindung von eigenem BBCode
Ich habe es gerade nochmal genauso wie hier beschrieben lokal getestet und es hat auf Anhieb funktioniert. Evtl. hilft es ja, wenn du nochmal den kompletten Cache leerst?
Beachte übrigens, dass du den direkt in der Datenbank manipulierten BBCode danach nicht mehr im ACP bearbeiten darfst - damit würdest du deine Änderungen wieder überschreiben.
Beachte übrigens, dass du den direkt in der Datenbank manipulierten BBCode danach nicht mehr im ACP bearbeiten darfst - damit würdest du deine Änderungen wieder überschreiben.
KB:knigge