wiki:カスタマイズと移行の手引(v2.0)

Version 1 (modified by nanasess, 17 years ago) (diff)

カスタマイズと移行の手引(v1.5) から移行

このページは書きかけです...

カスタマイズと移行の手引(v1.5)

EC-CUBE 1.5 では, 以前のバージョンより, 大幅なアーキテクトの変更を行いました.
これは主に, アップグレード時のマージ作業緩和, 自動アップデート機能実装のためと, より柔軟なカスタマイズを可能にするためです.

主な変更点

  1. ディレクトリ構成
    • ディレクトリ構成が大きく変わりました.
      • ディレクトリ構成(v1.5)?
      • data/lib, data/include 以下の関数群は, data/class/util, data/class/helper 以下のクラスへ移動しました.
        • data/class/util 以下のクラスは, スタティック参照するユーティリティ系のクラスです.
        • data/class/helper 以下のクラスは, 内部で他クラスのインスタンスを生成するヘルパークラスです.
      • 以前のバージョンにおいて, html 以下のファイルに存在していた LC_Page クラスは, data/class/pages/LC_Page.phpLC_Page クラスを基底クラスとし, LC_Page クラスを継承して使用するようになりました.
        • html 以下のファイルは, LC_Page クラスの init(), process(), destroy() を順に実行するのみの内容となりました.
          1. init() - 主にクラスの初期化をする関数
          2. process() - ページのメインロジック
          3. destroy() - デストラクタ. ページ処理の終了時に自動的に呼ばれる
  2. 定数, マスタデータの DB化
    • 以前のバージョンで, conf.php に存在していた, ほとんどの定数や, マスタデータ系のグローバル配列は, データベースの mtb_* テーブルに移行しました.
    • DB化に伴う DBアクセス低減のため, これらのデータは, data/conf/cache 以下にキャッシュされ, 実行時に使用されます.
    • これらの定数, マスタデータは, 管理画面から修正可能です. 修正時に, data/conf/cache 以下のキャッシュが更新されます.

カスタマイズの手引

EC-CUBE 1.5 からは, 以前のバージョンでの課題であった, バージョンアップ時におけるマージ作業が大幅に緩和されます.
また, 「自動アップデート」機能により, 配信サーバーによる自動的なバグフィックスや, バージョンアップが可能となりました.
是非, 以下の方法でカスタマイズを実施して下さい!

  • data/class 以下に *_extends というディレクトリがあります. この中にカスタマイズ用のクラス群があります.
    • 関数をカスタマイズする場合は, 必ず *_extends 以下のクラスで継承し, オーバーライドしてカスタマイズして下さい.
      • EC-CUBE がバージョンアップした場合でも, これらのファイルは 更新されない ため, 煩わしいマージ作業から開放されます.
  1. html 以下のファイルを修正したい場合は, data/class/pages 以下を見て下さい.
  2. html と同じ階層構造になっており, LC_Page_ディレクトリ名_ファイル名.php というようなクラスファイルがあり, この中にロジックが詰まっています. しかし, このクラスをカスタマイズしてはいけません.
  3. data/class/page_extends に, 同様の階層構造があります. LC_Page_ディレクトリ名_ファイル名_Ex.php というクラスファイルがあり, これらは data/class/pages のクラス群を継承しています.
  4. このクラスの, init(), process(), destroy() という関数をカスタマイズすることにより html 以下のファイルの動作を修正できます.
    • index.php に対応するクラスのみ, LC_Page_ディレクトリ名_Ex.php というように, ファイル名及びクラス名が省略されています.
    • EC-CUBE 1.5 では, 以前のバージョンのロジックを「ほぼそのまま」移植しているため, リファクタリングが不十分です. これは新規バージョンで徐々に改善していく予定です