SOY Shopプラグインの解説 パーツモジュールとHTMLTemplatePageについて
前回、カレンダープラグインの公開側表示はパーツモジュールを利用している
という内容を記載しました。
SOY Shopプラグインの解説 公開側ページの全ページで表示
今回はcalender_displayというモジュールに記載されていた内容を見ていきます。
/soyshop/webapp/src/module/site/common/calendar_display.php
を開くと一行目に
$obj = $page->create("soyshop_calendar_display", "HTMLTemplatePage", array( "arguments" => array("soyshop_calendar_display", $html) ));
$pageにはページのオブジェクトが格納されており、create関数の第二引数にHTMLTemplateと指定して呼び出すと
すでに読み込まれているHTMLファイルにcreateAdd関数でsoy:idを追加できます。
SOY App開発の説明 管理画面側に一覧ページを作成する。
$pageにはトップページでは、_home_pageオブジェクトが格納されています。
_home_pageオブジェクトのファイルは/サイトID/.page/_home_page.phpにあります。
今までの連載の内容だと、
IndexPage.class.phpとIndexPage.htmlという同名の対のファイルを作成して、
IndexPageクラスはWebPageクラスを継承する。
WebPageのcreateAdd関数でsoy:idを作成するという手順でした。
今回はHTMLTemplatePageを使う理由ですが、
$htmlに格納されているHTMLの記述には表示に関するさまざまな処理をされており、
今回のモジュールで初めて読み込まれるわけではありません。
そこで、
HTMLTemplatePageで新たな処理を追加するということになります。
HTMLは第三引数に入れる配列の第二引数に入れ、
createの第一引数と第三引数に入れた配列の第一引数のsoyshop_calendar_displayですが、
ここには処理が分かりやすい文字列を入れてください。
createにより取得したオブジェクトからcreateAddを行うと、
公開側のHTMLで独自のsoy:idを使えるようになります。
$obj->addLabel("current_calendar", array( "soy2prefix" => SOYSHOP_SITE_PREFIX, "html" => $currentCalendar ));
今回のHTMLTemplatePageはモジュールだけでなく、プラグインでも良く使いますので、次はプラグインでの例を説明したいと思います。