''このページの内容は, 2007年時点のもので, 大変古いです...'' = カスタマイズと移行の手引(v2.0) = EC-CUBE 2.0 では, 以前のバージョンより, 大幅なアーキテクトの変更を行いました.[[BR]] これは主に, アップグレード時のマージ作業緩和, 自動アップデート機能実装のためと, より柔軟なカスタマイズを可能にするためです. == 主な変更点 == 1. ディレクトリ構成 * ディレクトリ構成が大きく変わりました. * [wiki:ディレクトリ構成(v2.0)] * ''data/lib'', ''data/include'' 以下の関数群は, '''data/class/util''', '''data/class/helper''' 以下のクラスへ移動しました. * '''data/class/util''' 以下のクラスは, スタティック参照するユーティリティ系のクラスです. * '''data/class/helper''' 以下のクラスは, 内部で他クラスのインスタンスを生成するヘルパークラスです. * 以前のバージョンにおいて, html 以下のファイルに存在していた LC_Page クラスは, '''data/class/pages/LC_Page.php''' の '''LC_Page''' クラスを基底クラスとし, LC_Page クラスを継承して使用するようになりました. * html 以下のファイルは, LC_Page クラスの '''init()''', '''process()''', '''destroy()''' を順に実行するのみの内容となりました. 1. '''init()''' - 主にクラスの初期化をする関数 2. '''process()''' - ページのメインロジック 3. '''destroy()''' - デストラクタ. ページ処理の終了時に自動的に呼ばれる 2. 定数, マスタデータの DB化 * 以前のバージョンで, conf.php に存在していた, ほとんどの定数や, マスタデータ系のグローバル配列は, データベースの mtb_*** テーブルに移行しました. * DB化に伴う DBアクセス低減のため, これらのデータは, '''data/cache''' 以下にキャッシュされ, 実行時に使用されます. * これらの定数, マスタデータは, 管理画面から修正可能です. 修正時に, '''data/cache''' 以下のキャッシュが更新されます. * 定数は, '''data/cache/mtb_constants.php''' に生成されます. このファイルに生成される定数群は, DB アクセスする際に必要になるため, このファイルが削除されると DB アクセスもできなくなってしまいます.[[BR]] DB アクセスができなくなると, mtb_constants.php 自身も生成できないため, '''data/mtb_constants_init.php''' が '''data/cache/mtb_constants.php''' にコピーされます.[[BR]] このため, '''一時的に定数群がセットアップ時の値に初期化''' されてしまいますので, 管理画面のパラメータ設定から, データを登録し直して下さい. '''data/cache/mtb_constants.php''' が DB に保存されたデータに更新され, 元通り使用することができます. 3. テンプレート機能の改善 * 従来のフロント画面のみならず, モバイル, 管理画面等, 「すべて」の画面のカスタムテンプレート作成が可能になりました. == カスタマイズの手引 == EC-CUBE 2.0 からは, 以前のバージョンでの課題であった, バージョンアップ時におけるマージ作業が大幅に緩和されます.[[BR]] また, 「自動アップデート」機能により, 配信サーバーによる自動的なバグフィックスや, バージョンアップが可能となりました.[[BR]] 是非, 以下の方法でカスタマイズを実施して下さい! * '''data/class_extends''' 以下にカスタマイズ用のクラス群があります. * 関数をカスタマイズする場合は, 必ず '''***_extends''' 以下のクラスで継承し, オーバーライドしてカスタマイズして下さい. * EC-CUBE がバージョンアップした場合でも, これらのファイルは '''更新されない''' ため, 煩わしいマージ作業から開放されます. 1. html 以下のファイルを修正したい場合は, '''data/class/pages''' 以下を見て下さい. 2. html と同じ階層構造になっており, '''LC_Page_ディレクトリ名_ファイル名.php''' というようなクラスファイルがあり, この中にロジックが詰まっています. しかし, '''このクラスをカスタマイズしてはいけません.''' 3. '''data/class_extends/page_extends''' に, 同様の階層構造があります. '''LC_Page_ディレクトリ名_ファイル名_Ex.php''' というクラスファイルがあり, これらは '''data/class/pages''' のクラス群を継承しています. 4. このクラスの, '''init()''', '''process()''', '''destroy()''' という関数をカスタマイズすることにより html 以下のファイルの動作を修正できます. * index.php に対応するクラスのみ, '''LC_Page_ディレクトリ名_Ex.php''' というように, ファイル名及びクラス名が省略されています. * ''EC-CUBE 2.0 では, 以前のバージョンのロジックを「ほぼそのまま」移植しているため, リファクタリングが不十分です. これは新規バージョンで徐々に改善していく予定です'' * すべてのページの基底クラスである '''LC_Page''' クラスには, EC-CUBE の開発を行う上で, 有用な関数が多数含まれています. * これらの関数は, '''LC_Page''' クラスを継承したクラスでのみ使用して下さい. * '''sendRedirect(), getLocation(), getToken(), isValidToken()''' など, セキュリティを高めるための関数を積極的に使用して下さい. * 詳しくは, '''data/class/pages/LC_Page.php''' の ''phpDoc'' コメントを見て下さい. === テンプレート機能の改善 === EC-CUBE 2.0 からは, モバイル, 管理ページ を含む, すべての画面において, カスタムテンプレートが作成可能となりました.[[BR]] * デフォルトのテンプレートは以下へ配置 * アップデート機能は, これらのファイルも上書きする {{{ html/user_data/templates/default/js html/user_data/templates/default/css html/user_data/templates/default/img data/Smarty/templates/default -> メイン, ヘッダ/フッタ, その他 data/Smarty/templates/default/bloc -> ブロック data/Smarty/templates/default/campaign -> キャンペーン用 メイン, ヘッダ/フッタ data/Smarty/templates/default/campaign/bloc -> キャンペーン用 ブロック }}} * 管理画面から修正可能なテンプレート, CSS * これらのファイルは, アップデート機能はアクセスしない * 管理画面から修正した場合のみ, 下記のファイルを参照する(common.css を除く) * 下記のファイルを削除すると, default テンプレート or カスタムテン プレートのファイルを参照する. {{{ html/user_data/css/common.css -> CSS編集 html/user_data/include/bloc/*.tpl -> ブロック編集 html/user_data/include/*.tpl -> ヘッダ/フッタ編集 html/user_data/templates/*.tpl -> メイン編集 html/user_data/*.php -> 新規ページ作成 html/user_data/*.tpl -> 新規ページテンプレート }}} * カスタムテンプレートを作成する場合は, default の部分を他の名前に変更する. * アップデート機能はカスタムテンプレートを上書きしない * テンプレートの切り替えは, 定数の値を変更することで対応する[[BR]] 例) default -> custom * 管理画面から変更可能 * html/user_data/css/common.css は手作業で修正する必要あり.