EC-CUBE カスタマイズ 商品のリスト表示の挙動
ソース読みある記/2.3/商品リストの表示を追う
トップページの表示を理解したので、
次はトップページに表示されている「商品カテゴリー」からの
商品のリスト表示の挙動を追ってみます。
デフォルトでは「食品」のはずです。
このURLが指しているのは
/html/products/list.php?category_id=1
なので
list.php
に
category_id=1
を渡しています。
では、/html/products/list.phpを見てみると
コメントなどを除くと以下の6行だけ。
require_once("../require.php");
require_once(CLASS_EX_PATH . "page_extends/products/LC_Page_Products_List_Ex.php");
$objPage = new LC_Page_Products_List_Ex();
register_shutdown_function(array($objPage, "destroy"));
$objPage->init();
$objPage->process();
■まず1行目はいつものおまじない。
この後のPHP文を動作させるのに必要な環境を整えています。
(詳しくは「ソース読みある記/2.3/ページの表示を追う」を参照して下さい)
■2行目もいつものパターンで、
LC_Page_Products_List_Ex.phpに記述されている
LC_Page_Products_List_Exクラスを読みに行ってます。
これはやはり
LC_Page_Products_Listクラスを親に持つだけの単純な子クラスです。
親クラスから何も変更されていません。
さらにこのLC_Page_Products_Listクラスは当然、
他のページとも共通する動作を書いてあるLC_Pageクラスを親に持っていますが、
ここでは商品リスト表示に絞るということで割愛します。
■3行目
$objPageにLC_Page_Products_List_Exインスタンスを代入しています。
実質機能的にはLC_Page_Products_Listのものなので、
以下ではそちらの中身を追います。
■4行目
処理終了時に実行される関数を登録しています。
destroy()はEC-CUBEでは空の関数で、特に何もしません。
■5行目
ここは初期化処理。
LC_Page_Products_List->init()
は以下のように定義されています。
function init() {
parent::init();
$masterData = new SC_DB_MasterData_Ex();
$this->arrSTATUS = $masterData->getMasterData("mtb_status");
$this->arrSTATUS_IMAGE = $masterData->getMasterData("mtb_status_image");
$this->arrDELIVERYDATE = $masterData->getMasterData("mtb_delivery_date");
$this->arrPRODUCTLISTMAX = $masterData->getMasterData("mtb_product_list_max");
$this->tpl_class_name1 = array();
$this->tpl_class_name2 = array();
$this->allowClientCache();
}
■1行目
これは親クラスのinit()が空なので何もしません。
■2行目
SC_DB_MasterData_ExもSC_DB_MasterDataもコンストラクタでは何もしません。
■3行目
getMasterData("mtb_status")
とすると、
[MASTER_DATA_DIR]/mtb_status.php
を@include_onceしようとします。
(@が付いているので失敗してもエラーは吐きません)
もし読み込みに成功すれば
$_mtb_status_master
という変数に
'1' => 'NEW',
'2' => '残りわずか',
'3' => 'ポイント2倍',
'4' => 'オススメ',
'5' => '限定品'
といった配列データが入っているはずです。
(2009/04/09 書きかけ by kishimoto)
EC-CUBEのソースや、ECサイトの開発・構築でお困りなら、
ネットショップ構築パッケージEC-Orangeにお問い合わせください!
EC-CUBEのカスタマイズ・制作会社 強いネットショップ構築します|EC-Orange




