バージョンアップに備えたEC-CUBE開発手法

#ECの知識

EC-CUBE公式アドバイザーに
ご相談いただけます

まずは相談する

独自のカスタマイズを盛り込んだECサイトを展開したいショップオーナー様にとってEC-CUBEは非常に魅力的なツールですが、気をつけなくてはいけないのが、セキュリティホールが見つかった場合やバージョンアップ時の対応です。

EC-CUBEのプログラムソースに手を加えてしまったがためにセキュリティパッチの対応が難しくなってしまった。という方もいるかと思います。

システムカスタマイズの話になりますが、今日はそんなモヤモヤを抱えてEC-CUBEを運用している方に【extends】の紹介をしたいと思います。

extendsとは

EC-CUBEには(というよりもPHPなどのオブジェクト指向プログラミング言語には)extends(継承)という機能が備わっており、この仕組みを利用すると大元のプログラムソースを残したまま、システムのカスタマイズをすることができます。

EC-CUBEでもこの仕組みを全体的に取り入れており、元のソースを改変することなく、システムのカスタマイズが出来るようになっています。

EC-CUBE公式アドバイザーが、ツール選びからサイト制作、マーケティング・セキュリティの領域までアドバイスいたします。ご相談窓口はこちら

どこにあるの?

EC-CUBEのプログラムが入っている「/data」ディレクトリを開くと大元のプログラム一式が格納されている「class」ディレクトリがあり、そのディレクトリと同じ階層に「class_extends」というディレクトリがあると思います。

このディレクトリ内には「class」に格納されているプログラム一式とそっくり同じ構成で、ファイル名に「_Ex」という文字を付加したプログラム一式が格納されています。EC-CUBEのシステムカスタマイズを行う場合は、この「_Ex」ファイルに修正を加えるようにすると、元のソースをそのまま残すことができ、セキュリティパッチやバージョンアップの対応時に改変したソースの場所を容易に特定することが出来るようになります。

簡単な実例

大元のプログラムである「/data/class/pages/mypage/LC_Page_Mypage.php」ではなく、それを継承した「/data/class_extends/page_extends/mypage/LC_Page_Mypage_Ex.php」に、以下のような追記をします。

function init() {
  parent::init();                    // 大元のinit()を実行

  //  フィーチャーホンの場合にのみ実行する処理
  if (SC_Display_Ex::detectDevice() === DEVICE_TYPE_MOBILE) {
    $this->tpl_subtitle = 'フィーチャーホン専用ページです!';
  }
}

このように、追加するプログラムソースを分離できる仕組みにより、自分で改変した部分も非常に分かりやすくなり、カスタマイズの仕様もプログラムソースから把握しやすくなります。

難点は追加するソースだけ継承ファイルに記述するために、直接大元のファイルを改変するよりも時間がかかってしまうことですが、今後、長い間そのシステムを運用していくのであれば、最初の段階でひと手間かけて管理をしやすくしておくことは非常に大事な事だと思います。

以上、駆け足でしたが、EC-CUBEカスタマイズのちょっとしたテクニックをご紹介させて頂きました。

それでは、また。

この記事を書いた人

株式会社イーシーキューブ

ECサイトを新しく立ち上げたい、ECサイトの運営について詳しく知りたい、そんな方にお役立ちする情報を分かりやすく解説し、発信しています。

#ECの知識

ECサイト制作に関するご希望やお悩み、
まずはEC-CUBE公式アドバイザーにご相談ください。

他の記事もご覧ください

記事一覧に戻る

EC-CUBE公式アドバイザー
ご相談窓口

  • 他社のASPやパッケージとの違いを知りたい
  • BtoCのサイトにBtoB機能を追加したい
  • 何から手をつければよいかわからない
  • 自社にマッチした制作会社を探したい
  • サイト制作だけでなく運営もサポートしてほしい

新規構築・リニューアル・取引先向けのWeb受発注システム(BtoB)や事業の拡大など、
今抱えている課題を解決する最適な業者探しを、アドバイザーがお手伝いします。