it-swarm.com.de

Wie wird eine ganze Seite gerendert, bevor zum Browser zurückgekehrt wird?

Gibt es eine Möglichkeit, eine vollständig gerenderte Seite zu erhalten, bevor Sie zum Browser zurückkehren? Ich möchte eine vollständige Seite erhalten (von <html> bis </html>), ersetzen Sie einige Pseudovariablen und führen Sie den Vorgang erneut aus, um eine vom Benutzer geänderte Verletzung zu erhalten. Ich kann das mit index.php machen, aber ich sehe hässlich aus.

Vielleicht gibt es einen Rückruf wie "Auf nach Seite gerendert"?

Um die gesamte HTML-Ausgabe direkt zu bearbeiten, erstellen Sie ein System-Plugin mit dem Ereignis onAfterRender. Verwenden Sie die getBody() -Methode der Anwendung, um den Inhalt abzurufen, und setBody(), um den geänderten Inhalt zu speichern.

defined('_JEXEC') or die;

plgSystemExample
{
    protected $app;

    public function onAfterRender()
    {
        if ($this->app->getDocument()->type !== 'html')
        {
            return;
        }

        $body = $this->app->getBody();

        //do modifications to $body here

        $this->app->setBody($body);
    }
}

Wenn sich der zu ersetzende Inhalt jedoch nur innerhalb von Inhaltselementen befindet (z. B. Shortcodes in Artikeln), erstellen Sie ein Inhalts-Plugin mit dem Ereignis onContentPrepare und ändern Sie nur den Artikeltext.

4
Sharky