ブラウザに戻る前にページ全体をレンダリングする方法はありますか?ページ全体(<html>
から</html>
まで)を取得し、いくつかの疑似変数を置き換えて、ユーザーが変更したバージョンに再実行します。 index.phpを使用してこれを行うことができますが、見た目は醜いです。
「ページがレンダリングされた後」のようなコールバックがあるのでしょうか?
HTML出力全体を直接編集するには、onAfterRender
イベントを使用してシステムプラグインを作成します。アプリケーションのgetBody()
メソッドを使用してコンテンツを取得し、setBody()
を使用して変更されたコンテンツを保存します。
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);
}
}
ただし、置換するコンテンツがコンテンツアイテムの内部のみである場合(記事のショートコードなど)、onContentPrepare
イベントを使用してコンテンツプラグインを作成し、記事のテキストのみを変更します。