EC-CUBE EC-CUBEのカスタマイズ・制作会社 強いネットショップ構築します|EC-Orange

EC-Orange とは

EC-CUBE カスタマイズ

EC-CUBEインストール

EC-CUBE 環境構築ノウハウ

EC-CUBE 基本構成理解

ソースコード読解

EC-CUBE カスタマイズ:初歩

EC-CUBE カスタマイズ:基礎

EC-CUBE カスタマイズ:応用

EC-CUBE 機能拡張ノウハウ

EC-CUBE カスタマイズ    商品のリスト表示の挙動

    EC-CUBE カスタマイズ  >  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にお問い合わせください!