今日はEC-CUBEのページクラスの構造について見ていきたいと思います。
ページクラスと呼んでいるのはLC_Page_…と名前のついているクラスの事です。
たとえばトップページに対応するページクラスはLC_Page_Index.php内のLC_Page_Indexになります。
では早速見ていきましょう。
まずは単純なクラスがいいのでここではLC_Page_Index、つまりトップページの処理について見ていきます。
LC_Page_Indexクラスは以下のようになっています。
[php]
<pre>class LC_Page_Index extends LC_Page {
// }}}
// {{{ functions
/**
* Page を初期化する.
*
* @return void
*/
function init() {
parent::init();
$this->tpl_mainpage = ‘top.tpl’;
$this->tpl_column_num = 3;
}
/**
* モバイルページを初期化する.
*
* @return void
*/
function mobileInit() {
$this->tpl_mainpage = ‘top.tpl’;
}
/**
* Page のプロセス.
*
* @return void
*/
function process() {
$objView = new SC_SiteView();
// レイアウトデザインを取得
$layout = new SC_Helper_PageLayout_Ex();
$layout->sfGetPageLayout($this, false, "index.php");
$objView->assignobj($this);
$objView->display(SITE_FRAME);
}
/**
* Page のプロセス(モバイル).
*
* @return void
*/
function mobileProcess() {
$conn = new SC_DBConn();
$objCustomer = new SC_Customer();
$objView = new SC_MobileView();
$objView->assign("isLogin", $objCustomer->isLoginSuccess(true));
$objView->assignobj($this);
$objView->display(SITE_FRAME);
}
/**
* デストラクタ.
*
* @return void
*/
function destroy() {
parent::destroy();
}
}</pre>
[/php]
まず
[php]class LC_Page_Index extends LC_Page {[/php]
この部分からページクラスはLC_Pageクラスを継承していることが分かります。
LC_Pageクラスがページクラスの大元になっているということですね。
LC_Pageクラスについてはまた後日解説していこうと思います。
[php]
<pre>function init() {
parent::init();
$this->tpl_mainpage = ‘top.tpl’;
$this->tpl_column_num = 3;
}
[/php]
これは初期化関数です。これまでにもお話してきましたように、 このinit関数が最初にコールされ、次にprocess関数がコールされる仕組みになっています。 この初期化関数内ではテンプレートファイルの指定とレイアウトのコラム数を指定しています。ここではtop.tplというテンプレートファイルが指定され、コラム数は3ということになります。 他にはマスターデータのセットなどもこのinit関数内で行う慣習となっているようです。
[php]
<pre>function process() {
$objView = new SC_SiteView();
// レイアウトデザインを取得
$layout = new SC_Helper_PageLayout_Ex();
$layout->sfGetPageLayout($this, false, "index.php");
$objView->assignobj($this);
$objView->display(SITE_FRAME);
}</pre>
[/php]
処理関数です。SC_SiteViewというクラスのインスタンスが生成されていますが、 これは主にSmartyをラッピングするような働きをしています。 指定されたテンプレートを設定して、変数を割り当てていったりします。 とりあえず、こういう仕組みになっているんだということが分かれば十分かと思います。 途中にある
[php]
<pre>// レイアウトデザインを取得
$layout = new SC_Helper_PageLayout_Ex();
$layout->sfGetPageLayout($this, false, "index.php");</pre>
[/php]
この部分ですが、ここではレイアウトに関する処理を行っています。 EC-CUBEはブロックをページごとに自由に配置したりできますが、 これらを管理し、管理画面で設定された通りのレイアウトにしていきます。
これがページクラスの基本的な構造です。
mobilInitとmobileProcessという関数がありますが、これは携帯用の処理関数です。
これを読まれている方で自分が見ているのと構造が違うという方がいらっしゃるかもしれません。
おそらくそれは最新版の2.11系になるかと思います。
実は2.11系はこのあたりの構造も変わっています。
今回は2.4系でのお話をさせて頂きましたが、次回は同じ内容で2.11系の方にも触れてみたいと思います。