[EC-CUBE カスタマイズ日誌] 第 2 回 まずは EC-CUBE の全体像を把握しよう!

No Photo

こんにちは、inoueです。もつ煮込みを週末作ったり、牛すじクッパをランチで食べたりしてます。煮込み料理がおいしい季節バンザイ。

さて、『EC-CUBE カスタマイズ日誌』の2回目です。「次回からはカスタマイズの Tips をご紹介していきます。」とnakamuraから引き継ぎましたが、カスタマイズを始める前にもうちょっと。
EC-CUBE の全体像について説明したいと思います。
今回はそのうち、ディレクトリ構成についてお話します。

インストール時の設定などは[EC-CUBE カスタマイズ日誌] 第 1 回 EC-CUBE をインストール!と合わせていきますので、お読みでない方はこちらもぜひ目を通してくださいね。

ディレクトリ構成

インストールディレクトリの中は次のような構成になります。

(インストールディレクトリ)
   |
   +--- data/  : 実際のロジック部分を保存するディレクトリ(ドキュメントルートの外に置かれる)
   |
   +--- html/  : ここがドキュメントルート

html ディレクトリ内の構成

htmlディレクトリがこのサイトのドキュメントルートとなります。
サイトにアクセスがあると、このディレクトリのファイルにまずアクセスされます。

html/
   |
   +--- abouts/
   +--- admin/
   +--- campaign/
   +--- cart/
   +--- contact/
   |    ...
   +--- upload/
   +--- user_data/
   |
   |-- _default.php
   |-- define.php
   |-- index.php
   |-- input_zip.php
   |-- load_module.php
   |-- require.php
   |-- resize_image.php
   |-- sitemap.php

data ディレクトリ内の構成

dataディレクトリが実際のロジック部分を保存するディレクトリとなります。

data/
   |
   +--- cache              .... マスターデータのキャッシュを保存する。apache の書込権限が必要。
   +--- class              .... デフォルトのロジックのほとんどがこの下にある。
   +--- class_extends      .... class 以下のファイルを呼び出す。機能追加する場合はここに書く。
   +--- downloads
   +--- fonts
   +--- include
   +--- logs               .... プログラムのログが吐き出される。apache の書込権限が必要。
   +--- module
   +--- pdf
   +--- script
   +--- Smarty             .... Smarty ディレクトリ。
   +--- smarty_extends
   |
   |-- install.php                .... 最もコアな定数が記述されている。
   |-- mtb_constants_init.php     .... 管理画面で設定可能な『パラメータ』の初期値が記載されている。
   |-- require_base.php           .... ヘルパー等の各種部品をまとめて読み込む。
   |-- require_plugin.php

data/class/ ディレクトリ

data/class/ディレクトリ以下ににデフォルトの処理ロジックがあります。

その中でも、data/class/pages ディレクトリが実際の処理のほとんどを司る部分です。
MVCフレームワークでいうところのコントローラ部分になります。
data/class/pages ディレクトリ内は実際の URL と紐付いたディレクトリ構成になっています。(htmlディレクトリの構成と見比べてみてください)。

data/class/pages  
           |
           +--- abouts
           +--- admin
           +--- campaign
           +--- cart
           +--- contact
           +--- ....
           +--- unsupported
           +--- upgrade
           |
           |-- LC_Page_Index.php
           |-- ....
           |-- LC_Page.php   .... data/class/ 以下のファイル全てが継承するファイル。
                              全てのページで行う処理等が記載されている。

data/class_extends/page_extends/ ディレクトリ

一方、data/class_extends/page_extends/ ディレクトリはドキュメントルート下のファイルから呼び出されるファイル群となります。
こちらも実際の URL と紐付いたディレクトリ構成になっています。
data/class/ディレクトリ以下のファイルを呼び出すためのフィルターのような役割を担っています。
機能追加を記述するのは、このディレクトリ内のファイルになります。

data/class_extends/page_extends/   
                   |      
                   +--- abouts 
                   +--- admin
                   +--- campaign
                   +--- cart
                   +--- contact
                   +--- ....
                   +--- ....
                   +--- unsupported
                   +--- upgrade
                   |
                   |-- LC_Page_Index_Ex.php
                   |-- LC_Page_InputZip_Ex.php
                   |-- LC_Page_Redirect_Ex.php
                   |-- LC_Page_ResizeImage_Ex.php
                   |-- LC_Page_Sitemap_Ex.php
                   |-- LC_Page_Ex.php

data/Smartyディレクトリ

MVCでいうところのView部分は、EC-CUBEではSmartyテンプレートエンジンを活用しています。
こちらのテンプレートディレクトリの構成も実際のURLに沿った形となります。

Smarty
  |
  | -> config
  | -> templates
  |        |
  |        | -> default    .... 管理画面のパラメータ設定で変更可能。この下は実際の URL と紐付く形になっている。
  |                |
  |                | -> abouts
  |                | -> admin
  |                | -> bloc
  |                | -> campaign
  |                | -> cart
  |                | -> ....
  |                | -> ....
  |                | -> rss
  |                | -> shopping
  |                |
  |                | - conversion_tag.tpl
  |                | - detail.tpl
  |                | - ....
  |                | - ....
  |
  |
  | -> templates_c    .... コンパイル済テンプレートが保存される。apache の書込権限が必要。

おおまかな処理の流れ

サイトにアクセスがあった場合の処理の流れは次のようになります。
例: http://eccube.example.com/cart/index.php にアクセスがあった場合

  • ステップ1: html/cart/index.php
    (LC_Page_Cart_Ex クラスを読み込んで、init と process というメソッドを呼び出しているので...)
  • ステップ2: data/class_extends/page_extends/cart/LC_Page_Cart_Ex.php
    (LC_Page_Cart_Ex クラスは LC_Page_Cart クラス を継承しているので...)
  • ステップ3: data/class/pages/cart/LC_Page_Cart.php
    (ViewはSmartyを使っているので)
  • ステップ4: data/Smarty/templates/default/cart
  • ステップ5: ページ表示完了

URLに沿った形でファイルが配置されている箇所が連携していることが理解できるかと思います。。

参考情報

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ