Legacy_AbstractBlockProcedure
Description
Legacy_Controller
はXoosModue
インスタンスと同様にXoopsBlock
インスタンスを直接使用しません。
ブロックプロセスでは、Legacy_Controller
はLegacy_AbstractBlockProcedure
クラス系を使用します。
これとLegacy_AbstractModule
は同じ概念です。
Legacy_AbstractModule
を理解していないなら、このエントリを読んでください。
モジュールがクラス使用を宣言しない場合では、Legacy_Controlle
はアダプターのクラスとしてLegacy_BlockProdecureAdapterを使用します。
このクラスはXOOPS2
仕様を完全に模倣します。
Legacy_AbstractModule
とは異なり、Legacy_Controller
は明示宣言なしではブロックのクラスを見つけようとしません。
したがって、モジュール開発者はそれを望むならxoops_version.php
でのブロックのクラス名を定義する必要があります。
How to create instance
- $modversion['blocks'][x]['class'] = '{Class}';
を xoops_version.php で定義します
- $modversion['blocks'][x]['file']で指定されたファイルに
Legacy_BlockProcedure のサブクラスとして {Dirname}_{Class}
クラスを定義します
- メソッドを実装します
開発者はこれを何のために使いますか?
Legacy_Controller
が正しくアダプターのクラスを使用するので、多くの場合、モジュール開発者はこのメカニズムを使用する必要はありません。
しかし、いくつかのケースでは、XOOPS2 JP
仕様は十分ではありません。
それに対して、このメカニズムは役に立ちます。
XoopsBlockへのアクセス
XOOPS2 JP
によって呼ばれたブロックショー関数は、この関数のシグニチャがXoopsBlock
インスタンスを含んでいないので、XoopsBlock
インスタンスにアクセスすることができません。Legacy_Controller
は、Legacy_BlockProcedure::execute()
をブロックショー関数の代わりにコールします。したがって、モジュール開発者は$this->_mBlock
にアクセスできます。
XoopsBlock解釈の変更
たとえば、piCal
はブロックのタイトルを変えるためにcommon.php
が使用した大域変数にアクセスします。
それはすばらしく、かつ、正統でないアプローチです。
しかし、XOOPS Cube Legacy
はそのような場合のための正統のアプローチを提供します。
クラスを作成してください、そして、getTitle()
をオーバーライドしてください。
ヒドゥンブロック
仮想のcron
としてブロックキャッシュつきブロックを使用するのを望んでいるなら、isDisplay()
をオーバーライドしてください。
isDislay()
がfalse
を戻す場合、Legacy
はブロックディスプレイなしでキャッシュを作成しようとします。
描画プロセスの変更
common.php
がブロックを描画するため、XOOPS2
JP
ブロックはレンダリングプロセスを変えることができません。
しかし、XOOPS Cube Legacy
では、Legacy_BlockProcedure
がそれ自身の結果をレンダリングしようとします。
したがって、モジュール開発者はテンプレートファイルや依存レンダーシステムを変更することが出来ます。
Note
もし
$modverison['block'][x]['class']
が定義済みであるなら、モジュールインストーラは
$modversion['block'][x]['show_func']
を無視します。
実例
β
の
stdCache
モジュールを見てください。