it-swarm.com.de

Soll ich JResponse :: setBody oder onContentPrepare zum Ersetzen von Zeichenfolgen verwenden?

Ich entwickle ein Shortcodes-Plugin, das Joomla-Inhalte durchsucht und HTML-Ausgaben aus dem übereinstimmenden String erstellt.

Zur Zeit benutze ich das

   public function onContentPrepare($context, &$row, &$params, $page = 0){

        if ($this->run_plg != 1)return;
        require_once 'shortcodes.php';
        $row->text = shortcodes($row->text);

        return true;
    }

Und es funktioniert sehr gut. Wie Sie sehen können, durchläuft dies im Grunde jeden Joomla-Inhalt, einschließlich der Module (Sie sind sich nicht sicher über Virtuemart oder einige andere Erweiterungen von Drittanbietern). Aber wenn Sie den Shortcode in Ihren Vorlagendateien verwenden würden, würde er ihn nicht finden.

Daher überlege ich mir, die Funktion in onAfterRender so zu platzieren:

function onAfterRender() {
    require_once 'shortcodes.php';
    $body        = JResponse::getBody();
    $body       = shortcodes($body);
    JResponse::setBody($body);
}

Dies würde mit der Zeichenfolge überall auf der Site übereinstimmen. Mein Anliegen ist die Leistung. Hier ist ein einfaches Beispiel für eine Kurzwahlfunktion.

https://eval.in/141437

das Original wird mit PREG_SET_ORDER verfeinert und nur ausgeführt, wenn der String aus $ shortcode ['type'] gefunden wird.

Die Frage ist also, was würden Sie empfehlen und warum, wenn Sie Zeit für Erklärungen haben.

Danke und Glückwunsch :)

5
Dan

Wie bei meiner andere Antwort auf die Plugin-Leistung ist der beste Weg, dies herauszufinden, zu testen .

Schauen Sie sich die andere Antwort für Details an, aber es sollte einfach sein, Zeitprotokollierungsanweisungen mit der JLog-Klasse hinzuzufügen, um die Timing-Ergebnisse jeder Methode zu vergleichen.

Das heißt, wenn Sie den Shortcode überall auf der Site abfangen müssen, dann ist onAfterRender der schnelle, einfache und vielleicht einzige Weg (mit Plugins).

1
codinghands

onContentPrepare ist mehr oder weniger für die Ausgabe von Erweiterungen gedacht. Meiner Meinung nach sollte es keinen Ort geben, an dem ein Suchen/Ersetzen bei Belastung hinzugefügt werden sollte. Der Grund, warum ich das sage, ist sicherzustellen, dass Joomla mit seinen Methoden konsistent bleibt.

Wenn also eine Art Suchen/Ersetzen erforderlich ist, kann es am besten sein, es stattdessen in ein benutzerdefiniertes HTML-Modul einzufügen (Sie können auch ein benutzerdefiniertes Layout für dieses Modul und dergleichen erstellen). Auf diese Weise analysieren Inhalts-Plugins weiterhin Ihre Inhalte und lassen Ihre System-Plugins Umgebungseinstellungen und dergleichen anpassen oder zusätzliche Bibliotheken laden (im Grunde genommen den Kern von Joomla anpassen und erweitern).

Schauen Sie sich die Erweiterungen an, die keine Nummern sind, hauptsächlich den erweiterten Modulmanager, mit dem Sie Module mit vielen weiteren Einstellungen auswählen können. Auch wenn es Ihnen möglicherweise nicht hilft, kann die Kontrolle, die sie Ihnen geben, zu alternativen Lösungen führen, an die Sie sonst nicht denken würden. http://www.nonumber.nl/

1
Jordan Ramstad