it-swarm.dev

Joomla 3.xプラグインへのビュー/ tmplの追加

Joomla 3.xシステムプラグインにいくつかの異なるビュー/ tmplを追加する方法についてアドバイスが必要です。 Joomla 3.xオフラインページを置き換える単純なプラグインを作成しましたが、そのプラグインにいくつかの異なるビュー(レイアウト)を追加したいと思います。ビューとtmplが混同されています。誰かが私にいくつかのガイダンスを与え、従うべき単純なディレクトリ構造を教えてくれませんか?.

このコードを使用して\ views\defaultview\view.html.phpをトリガーしますが、より多くの異なるビューを使用したいと思います。これは正しい方法ですか?

public function onBeforeRender(){
    // Get the application.
    $app = JFactory::getApplication('site');
    if (($app->getCfg('offline'))&&(!$app->isAdmin())) {
        // Get the document object.
        $doc = JFactory::getDocument();
        $view = 'defaultview';
        $basePath = __DIR__;
        $config = array( 'base_path'=>$basePath);
        require_once $basePath . DS . 'views'  . DS . $view . DS . 'view.html.php';
        JResponse::setHeader('Content-Type', 'text/html; charset=utf-8');
        JResponse::sendHeaders();       

        $app->close();
    }
}
3
n.h.

コードスニペットにはビューファイルが含まれるだけで、実行が停止します。 view.html.phpにクラスがある場合、何も出力されません(ビューのレンダリングを実行していません)。

プロセスを調べて、onBeforeRenderイベント内にビューを生成し、その後の処理を中止しようとしています。うまくいくかもしれませんが、通常の出力メソッドにリダイレクトするだけの方が良いです。

一方、SystemRedirectプラグインの動作を確認し、JError/customErrorPageを呼び出し、Urlにリダイレクトするか、JDocumentレンダリングを呼び出します(どちらの方法でもビューとテンプレートをオーバーライドできます)。

3
Anibal

テンプレート(レイアウト)の場合は、JLayoutを使用してテンプレートをレンダリングできます。プラグイン内に/layoutsフォルダを作成して、レイアウトのファイルを保存します。次に、プラグインで:

// Set base path
JLayoutHelper::$defaultBasePath = JPATH_PLUGINS . '/' . $this->_type . '/' . $this->_name . '/layouts';

// Render mylayout.php
$renderedLayout = JLayoutHelper::render('mylayout');

JLayoutでビューまたは拡張機能間でレイアウトを共有する

2
Dmitry Rekun