BBCodes für eigenen Hack

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Sanchez17
Mitglied
Beiträge: 913
Registriert: 10.12.2005 22:21
Wohnort: Moers / Sevilla
Kontaktdaten:

BBCodes für eigenen Hack

Beitrag von Sanchez17 »

Hola an alle,

mal wieder habe ich eine Frage, und weiß nicht weiter.

Ich entwerfe gerade ein Hack für mein Forum. Dort sollen Benutzer Artikel schreiben können.
Nun möchte ich, das die Benutzer aber nicht auf HTML zurückgreifen müssen (und dürfen) , sondern die BBcodes benutzen.

Ich habe dies hier, als Vorlage benutz: klich mich

Das Artikel schreiben usw. funktioniert bereits. Ich möchte nur wissen, was ich alles noch ergänzen muss, damit BBcodes benutz werden können.

Ich denke mal, die bbcode.php muss includet werden, sowie die Daten aus der posting_body.tpl für die BBcodes.
Was aber noch?Da habe ich leider nichts mehr richtig gefunden....kann mir jemand helfen?

hasta luego,
Miguel
Viva el betís, mi amor :-)
Wir gehn voran, als euer zwölfter Mann, scheiß egal wie weit, ob Sturm oder Schnee, MSV Duisburg oé
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Um bbCodes zu nutzen, müssen diese von 2 Funktionen präpariert werden, welche sich beide in der bbcode.php Datei finden. Ich vermute allerdings dass es Sinn macht, wenn du die Artikel gleich durch den Standardprozess jagst, den auch normale Posts gehen. Hierzu benötigst du die functions_post.php und zwar die Funktion prepare_message oder wenn du willst auch sowas wie prepare_post, aber wenn es sich lediglich um einen Text handelt dann reicht auch prepare_message. In dieser Funktion wird mit bbencode_first_pass die Funktion aufgerufen, welche den Text nach bbCodes durchsucht und die korrekt verwendeten markiert. Hierzu wird ein bbcode_uid benötigt, welches die Funktion erhalten muss was mittels

Code: Alles auswählen

$bbcode_uid = ($bbcode_on) ? make_bbcode_uid() : '';
generiert werden kann. Wichtig ist, dass dieser Code auch in der Datenbank landet, denn er stellt die Markierung der korrekten Tags dar.
Der zurückgelieferte Text sollte für die Eintragung in die Datenbank fertig sein.

Bei der Darstellung benötigst du dann bbencode_second_pass() um den Text tatsächlich darzustellen.

Eigentlich also nicht besonders schwierig.
Erst mit make_bbcode_uid eine uid machen, dann den Text durch die functions_post.php Funktion "prepare_message" jagen, dann speichern und mit "bbencode_second_pass" in der bbcode.php wieder ausgeben.
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.
Benutzeravatar
Sanchez17
Mitglied
Beiträge: 913
Registriert: 10.12.2005 22:21
Wohnort: Moers / Sevilla
Kontaktdaten:

Beitrag von Sanchez17 »

Hi,

vielen Dank.

Ich werde dies mal versuchen, und mich dann melden. :P

hasta luego,
Miguel
Viva el betís, mi amor :-)
Wir gehn voran, als euer zwölfter Mann, scheiß egal wie weit, ob Sturm oder Schnee, MSV Duisburg oé
Benutzeravatar
Sanchez17
Mitglied
Beiträge: 913
Registriert: 10.12.2005 22:21
Wohnort: Moers / Sevilla
Kontaktdaten:

Beitrag von Sanchez17 »

Hola....

gut, die Antwort kommt ein bisschen spät :roll: :P

Hat aber super geklappt. Nur vor ein Problem stehe ich:
Wenn ich einen Artikel editieren will, wird der Code leider nicht korrekt angezeigt....

Statt das gewöhnliche:

Code: Alles auswählen

[b] text [/b]
Bekomm ich ohne diesen Code...
$text = bbencode_second_pass($text, $bbcode_uid);
.. den BBocde mit der UID angezeigt. Wenn ich den aber einfüge, kommt der reine HTML Code.

Ich denke, irgendeinen Funktion sorgt dafür, das die UID sichtlich verschwindet. Aber welche? Hab keinen gefunden.

Kann mir jmd. helfen?

hasta luego,
Miguel


Edit:
Habs nun doch gefunden :P

Code: Alles auswählen

			$message = preg_replace('/\:(([a-z0-9]:)?)' . $post_info['bbcode_uid'] . '/s', '', $message);
Viva el betís, mi amor :-)
Wir gehn voran, als euer zwölfter Mann, scheiß egal wie weit, ob Sturm oder Schnee, MSV Duisburg oé
Antworten

Zurück zu „Coding & Technik“