Speicherung von html in der Datenbank als BB-Code und dessen Rückwandlung

  • Hallo,

    ich hänge gerade ein bissle fest.

    Beim Aufruf eines Beitrags aus der Datenbank, verändere einen Teil des Inhalts und möchte die geänderte Passage als BBcode wieder in den Inhalt zurückgeben.

    Anschließend soll dann die reguläre Verarbeitung durch die ganzen BBCodes ablaufen.

    Ich hänge nun am zusammenstellen des BB-Codes und weiß nicht wie ich zum Attribut data-attributes komme.

    Sie sieht es beim BBCode für die Medien aus:

    Wenn ich ein Bild aus der Mediensammlung einfügen und die Größe und die Ausrichtung festlege, dann ist der html-Code wie folgt:

    Code
    <p><img class="woltlabSuiteMedia messageFloatObjectRight" src="http://localhost:100/wsc5.3/index.php?media/3/&amp;thumbnail=medium" data-media-id="3" data-media-size="medium"></p>

    In der Datenbank steht dann folgendes drin.

    Code
    <woltlab-metacode data-name="wsm" data-attributes="WzMsIm1lZGl1bSIsInJpZ2h0Il0="></woltlab-metacode>

    Und jetzt suche ich die Stelle wo aus den ganzen Attributen das data-attributes erstellt wird und wie ich dann trotzdem am Ende in der BBCode-Klasse auf die einzelnen Attribute zugriff habe.

  • Per Event-Listener auf beforeProcess@wcf\system\html\output\node\HtmlOutputNodeProcessor hast du per $eventObj->getDocument() Zugriff auf das aktuelle DOMDocument. Über $eventObj->getHtmlProcessor()->getContext() kannst du herausfinden, ob es sich auch tatsächlich um einen Beitrag handelt.

    Wenn du dir dann die Element aus dem DOM holst, kannst du mit $element->getAttribute('data-attributes') auf den Inhalt zugreifen. Bei diesem handelt es sich um base64-kodiertes JSON.

    Alexander Ebert
    Senior Developer WoltLab® GmbH

  • Danke für den Tip bezüglihc base64-kodiertes JSON.

    Ich hab jetzt im github eine Stelle gefunden, wo es verwendet wird

    Damit bekomme ich in der BBCode-Klasse mit wcfdebug($openingTag) auch die Daten ausgegeben

    Danke, damit komme ich weiter

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!