Content vom Artikel vor der Ausgabe bearbeiten

  • Hallo,

    ich arbeite derzeit an einer Erweiterung, die unter gewissen Bedingungen (z.B. wenn der User ein Recht nicht hat), den Content vom Artikel kürzen soll. Zuerst hatte ich dies mit einem Template-Code umgesetzt, den der User selbst in die article.tpl einfügen muss. Da dies viel zu umständlich war, habe ich es anschließen über eine eigene Template-Gruppe mit eigenem Template für die Artikel umgesetzt. Problem an der Umsetzung war, dass es nicht nur unschön gelöst war, sondern auch Unpraktisch. Ein Beispiel dazu: Der User nutzt einen eigenen Stil mit eigener Template-Gruppe und kann dann entweder die Erweiterung oder seinen Stil nicht ohne Anpassungen nutzen.

    Morik hatte dann den Vorschlag dies über einen EL auf beforeProcess@HtmlOutputNodeProcessor umzusetzen. Allerdings stocke ich jetzt hier etwas. Über mein Event-Objekt müsste ich ja theoretisch an die ID des Artikels kommen und über diese dann mit ViewableArticle::getArticle($articleID) an den gewünschten Artikel.

    Jetzt zu meiner Frage bzw. dem Punkt wo ich stocke. Wir kann ich den Content des Artikels verändern und ihn für die weitere Verarbeitung weitergeben.
    Was ich bis dato gefunden hatte, waren eher Lösungen/Ansätze bzgl. dem bearbeiten von z.B. a-Tags zu Custom-Tags.


    Grüße
    Titus

  • PHP
    1. $context = $eventObj->getHtmlProcessor()->getContext();
    2. // $context ist ein Array: ['objectType' => '…', 'objectTypeID' => 123, 'objectID' => 123]
    3. $doc = $eventObj->getDocument();
    4. // $doc ist ein \DOMDocument

    Damit erhälst du alle Informationen dazu, um welchen Text es sich handelt und kannst nach belieben das DOM verändern. Falls du die DOM-API von JavaScript bereits kennst: Sehr gut, es funktioniert in PHP praktisch genauso.