カスタマイズ講座

ホーム > カスタマイズ講座 > 【初級】カスタマイズ > EC-CUBEカスタマイズ、ちょっとその前に・・・ファイルの位置関係を把握しよう。

EC-CUBEカスタマイズ、ちょっとその前に・・・ファイルの位置関係を把握しよう。

【初級】カスタマイズ2
2008.10.09 (更新日: 2009.06.05)

【用意するもの】
EC-CUBE(ver2系)のソース × 1


EC-CUBEをちょっくら料理してやろう!と思って、いざ始めようとすると一番最初の壁は「はて、どのファイルを料理すりゃいいの?」ということでしょう。

EC-CUBE1系の時のソースは、全てではありませんが大概は

「WEBブラウザでアクセスしているPHPファイル」=「カスタマイズ対象のPHPファイル」

というような感じだったので、PHPの経験が浅い人でも、比較的容易に目的のファイルへ辿りつくことができました。


しかし、2系になるとちょっとLVが上がります。どのくらいかというと、そうですね・・・サランラップがこれまできれいに切れなかったのが、きれいに切れるようになるくらいです(わからんですね)。


ともかく、料理してやろうにもたどり着けないんじゃ、自分の頭のノーミソが沸騰して料理されちゃうので、EC-CUBEのディレクトリ(フォルダ)とファイルの位置関係を一度押さえましょう!


(2ページへ続く)

2008年10月現在で、最新版であるEC-CUBE2.3.0(正式版)を基に御説明します。EC-CUBEのダウンロードページからEC-CUBEをダウンロードしたら、圧縮形式になっているので解凍します。

すると、以下のように「data」「html」というディレクトリと「COPYING」というファイルが出現します。



COPYINGというファイルはテキストデータで、GPLライセンスの説明が記述されています。全部英語なので、解読はいつか現れるであろう英語の先生に全て託すことにします。お願いします。


さて、EC-CUBEは皆さんのサーバー環境などによってもどのようにインストールされるかという環境が異なりますので、ここでは一般的な話をします。
まず、ざっくりと説明すると、「data」ディレクトリはEC-CUBEの心臓ともいえるプログラム群が格納されています。「html」ディレクトリにはブラウザから直接アクセスされる、インターフェース的な役割のファイルが格納されています。

上記のような理由から、「data」フォルダ以下のファイルはWEBブラウザからはアクセスできない上位階層に配置し、「html」内のファイルWEBブラウザからアクセスできる、サーバー側の「httpdocs」や「public_html」直下に配置するのが一般的です。


(3ページへ続く)

「data」ディレクトリを開いてみましょう。すると下図のような構成になっています。



----------------------
「cache」ディレクトリ
ここには、管理画面の「基本情報管理」の左側メニューにある「パラメータ設定」「マスタデータ管理」で登録した内容がキャッシュ(PHPファイル)として保存されます。本来はデータベースに保持されているデータですが、サイト全体に関係する設定値なのでデータベースに負荷がかかり過ぎないように配慮されている仕組みです。

編集時には一時的にデータベースから設定値が「パラメータ設定」または「マスタデータ管理」の画面に読み込まれ、設定を保存するとキャッシュとデータベース両方が更新されます。サイト全体のPHPはこのキャッシュファイルから設定値を読み込みます。

----------------------
「class」ディレクトリ
EC-CUBEの心臓ともいえるプログラムが格納されています。ここにあるファイルを闇雲に料理するのはやめましょう。どうしても設定を変更したい場合は、次に説明する「class_extends」の中にあるファイルを調整します。

2008年10月時点ではサービスが無くなってしまったようですが、「EC-CUBE自動アップデート」などのサービスを利用していると、この「class」ディレクトリ内のファイルが上書きされる恐れがあるので注意です。そういった理由からも、ここにあるファイルはカスタマイズの参考にはしますが、カスタマイズ対象にはしない方が無難です。

----------------------
「class_extends」ディレクトリ
「class」ディレクトリとほぼ同じような構造をしていて、PHP初心者の方やカスタマイズを今から挑戦しようとするひとにとっては「何がどう違うの?」と混乱するところです。

「class」ディレクトリ内のファイルは、先ほど説明したようにEC-CUBE公式のアップデートなどで上書きしなければならないような事が発生した場合、これまで一生懸命カスタマイズした内容が消えるか、考慮しながらアップデートしなければならないので非常にめんどうです。

そこで、この「class_extends」の登場です!中にあるPHPをみると、なんだかほとんど中身がないようなファイルばかりですが、これはPHPの「継承」という仕組みを利用しているからです。「extend」という言葉は「拡張」だとか「延長」という意味なので、つまりは「classディレクトリの拡張ディレクトリ」みたいな感じです(どうやって拡張するのか?という疑問があるかと思いますが、それはこの家庭科を通して覚えていきましょう)。

----------------------
「downloads」ディレクトリ
バックアップファイルやオーナーズストア経由で習得するモジュール群が格納されます。郵便番号のデータである「KEN_ALL.CSV」もここにあります。もし郵便番号のデータが古ければ、このファイルを差し替えて管理画面の「郵便番号DB登録」しましょう。文字コードに注意して下さい(UTF-8に変更する必要があります)。
>> 詳しくは 「家庭科レシピ4 郵便番号のデータを最新のものにアップデートする」にて。


----------------------
「font」ディレクトリ
なんかに使うフォントが入ってます。たぶん売上集計のグラフとかに使っているんでしょう。

----------------------
「include」ディレクトリ
モバイル用の絵文字コードなどのファイルが格納されています。

----------------------
「logs」ディレクトリ
EC-CUBEの簡易なアクセスログ、データベースログ、オーナーズストアログなどが格納されます。一生懸命カスタマイズした結果、「システムのエラーです。管理者になんとか云々」とか言われてしまって泣きそうになったときは、「責任者出て来い!」という前に、とりあえずこの中にある「site.log」を見ると原因が発覚します。ちなみに画面が真っ白になる場合は大概PHPのエラーなので、apacheのエラーログを見ると原因が発覚するでしょう。

----------------------
「module」ディレクトリ
PHPの各種モジュールファイルが入っています。基本的にカスタマイズの対象にはならないでしょう。

----------------------
「pdf」ディレクトリ
何かで使われるはずだったようなPDFファイルと、PHPファイルが格納されています。納品書生成機能で利用しているFPDFライブラリもここにあるようです。それと納品書生成機能で利用しているPDFテンプレートも「template_nouhin01.pdf」という名前で格納されているので、気に入らない場合は入れ替えるといいかもしれません(但し、あくまでもテンプレートなので、レイアウトを変える場合はPHPプログラムを調整する必要があります)。

----------------------
「script」ディレクトリ
空メール登録で利用するPHPファイルが格納されています。・・・といいながら、空メール登録機能を一度も使ったことがないので、どう使うのかはよくわかりません。そのうち明らかになるでしょう。

----------------------
「Smarty」「smarty_extends」ディレクトリ
Smarty(スマーティ)とは、PHPのテンプレートエンジンです。PHPは本来、プログラムとHTMLを混在して容易にプログラムを作れるのが特徴でしたが、プログラムとHTMLが混ざってしまうとメンテナンス性に欠けてしまいます。そこで、こういったテンプレートエンジンを使うことで、HTMLソース(テンプレート)とPHP(プログラム)を分離でき、デザイナーとプログラマが同時に開発を進められ、プログラムの可視性が良くなるメリットがあります。キャッシュも作られるので、至れり尽くせりですね!

----------------------
「install.php」ファイル
今の状態では全く意味のないファイルですが、サーバーにインストールするとここにデータベースのID・パスワード、サイトの基本URLなど非常に重要なデータが記述されます。このファイルが「data」ディレクトリにあるので、「data」フォルダ以下はWEBブラウザからアクセスされないようにするべきです。

----------------------
「mtb_constants_init.php」ディレクトリ
インストール時に1回だけ利用される「パラメータ設定」の初期値が記載されています。パラメータ設定値を変えるまでは、このファイルに記載されているPHP定数がサイト全体で読み込まれます。

----------------------
「require_base.php」「require_plugin.php」
2.2.0beta以前には存在しないファイルだったので、2.3.0-RC1あたりから導入されたファイルかもしれません。EC-CUBEでは数多くの共有ファイルを読み込んでいますが、その設定がされているファイルです。


(4ページに続く)

ハァ、、ハァ、、
3ページの「data」ディレクトリの説明をしたら、疲れてしまいました。。
次は「html」ディレクトリの説明です。


最初に述べたように、「html」以下のファイルは、基本的にインターフェースの役割をするものです。アクセスがあったら、「data」ディレクトリに格納されている「class_extends」 -> 「class」という順序でファイルを読み込み、ページを表示します(PHPの継承を利用している場合)。

なので、基本的に「html」以下のPHPファイルはカスタマイズすることはないです。とりあえずここではディレクトリ構造の説明だけします。



うげっ・・・「data」より多いっ・・・・!巻きでいきます!


----------------------
「abouts」ディレクトリ
「当サイトについて」のページです。会社概要みたいな感じ。

----------------------
「admin」ディレクトリ
EC-CUBEの管理画面です。ブラウザに「http://ドメイン/admin/」とか入れるとログイン画面が出ます。

----------------------
「campaign」ディレクトリ
キャンペーン関連ディレクトリです。

----------------------
「cart」ディレクトリ
「カートの中」ページです。

----------------------
「contact」ディレクトリ
「お問合わせ」ページです。

----------------------
「cp」ディレクトリ
たぶん未使用です。

----------------------
「entry」ディレクトリ
会員登録時の会員規約や入力フォームです。

----------------------
「forgot」ディレクトリ
パスワードリマインダのページです。つまりは単純に「パスワードを忘れた方はこちら」のページなのさ~。

----------------------
「frontparts」ディレクトリ
ログインチェックと、機能的なブロック(カテゴリ、ニュースなど)のPHPが格納されています。

----------------------
「inquiry」ディレクトリ
アンケート関連のディレクトリです。


----------------------
「install」ディレクトリ
EC-CUBEをインストール際に利用するディレクトリ。インストールが正常に完了したら、この中にあるindex.phpを削除しなければなりません。しかし、インストール後にindex.php以外は残しているけど、残している意味があるかどうかは不明です。

----------------------
「misc」ディレクトリ
画像が入っていますが、どこでどう利用しているのか、見えない管理画面があるのか、そこには何か違う文明が発達しているのか・・・まったくもって不明です。

----------------------
「mobile」ディレクトリ
PCサイトと同じURLに携帯電話からアクセスがあると、このフォルダ以下に転送されます。まぁ、なんて便利!

----------------------
「mypage」ディレクトリ
その名の通り、「マイページ」です。誰が何と言おうと、私のページなのです。

----------------------
「order」ディレクトリ
「特定商取引法に基づく表記」のページです。ECをする場合はちゃんと記述しましょう。カード決済の審査対象です。どうでもいい話ですが、夜中2時34分くらいに連呼すると、なんか出てきそうなページ名ですよね。「トクテイショウトリヒキホウニモトヅクヒョウキトクテイショウトリヒキホウニモトヅクヒョウキ・・・」

----------------------
「preview」ディレクトリ
管理画面からプレビュー時に利用される?

----------------------
「products」ディレクトリ
商品一覧、商品詳細のページがあります。

----------------------
「regist」ディレクトリ
EC-CUBEの設定で、「会員登録時に、一旦仮会員になってから、本会員にする」という設定にしているとき、メールに記載されているURLにアクセスするとここに飛ぶようです。

----------------------
「rss」ディレクトリ
巷で流行ってるRSSです。新着情報のフィードと、商品情報のフィードがあります。

----------------------
「shopping」ディレクトリ
「cart」で「カートの中」にある商品を購入手続きにもっていくとアクセスするディレクトリです。つまり、支払方法やお届け先指定、購入完了までこのディレクトリ内で行われます。

----------------------
「tb」ディレクトリ
トラックバック関連ディレクトリです。きっと。

----------------------
「upgrade」ディレクトリ
よくわかりません。

----------------------
「upload」ディレクトリ
商品を登録する際にアップロードする商品画像などが格納されます。

----------------------
「user_data」ディレクトリ
デザインパッケージなどが格納されます。デザインテンプレートは通常「data/Smarty」以下に格納されますが、画像データやCSSファイル、デザイン管理から編集できる「ヘッダー・フッター」、「トップ」「商品一覧ページ」「商品詳細ページ」などのテンプレートはこっちに格納されます。ここ以下のファイルには管理画面の「コンテンツ管理」 -> 「ファイル管理」からもアクセスできます。

----------------------
「.htaccess」ファイル
このファイルが使えるサーバーでは、いろんなことができます。EC-CUBEに初めから入っている.htaccessファイルには、PHPの扱えるファイルサイズなどの設定が描かれているだけですが、その他にもベーシック認証をかけたり、動的URLを静的URLに変更するテクニックにも使えます。

----------------------
「_default.php」ファイル
管理画面のデザイン管理から「ページの新規作成」をした時にコピーされるPHPファイル。

----------------------
「define.php」ファイル
「data」ディレクトリと「html」ディレクトリの相対関係(パス)を記述したファイル。もし「html」ディレクトリ以下に「data」ディレクトリを格納しなければならないようなときは、このファイルの設定変更を忘れずに。

----------------------
「index.php」ファイル
言わずと知れたトップページ。

----------------------
「input_zip」ファイル
管理画面で郵便番号DB登録をする時に利用されるらしい。

----------------------
「load_module.php」ファイル
PHPで利用できる決済モジュールなどから入金有りなどの返事があった時に受け口になるファイルっぽい。

----------------------
「require.php」ファイル
どこかで見たような名前ですが、要するに共有ファイルを一括で読み込んでいるファイル。たぶん「リクワイル」とか呼ぶ。たぶんだよ。ウソでした。「リクワイアー」ですね(takさん、ありがとう!)。「要求する」とか「必要とする」っていう意味。

----------------------
「resize_image.php」ファイル
すっごい便利なファイル。大きな画像を横縦比維持したままリサイズしてくれます。

<!--{$smarty.const.SITE_URL}-->resize_image.php?
image=<!--{$image_path|sfRmDupSlash}-->
&width=100&height=100" alt="<!--{$arrProducts[cnt].name|escape}-->

見たいな感じで呼び出します(画面幅の都合で改行してますが実際は1行です)。

----------------------
「sitemap.php」ファイル
サイトマップとはいっても、GoogleやYahoo!の検索エンジン向けのサイトマップです。Googleのウェブマスターツールでこのファイルを指定すると、幸せになれるかもしれませんね。


(5ページに続く)

長かったですね・・・、誰もこの記事読まなかったら泣いてしまいそうです。
あんまり深いところまで説明できませんでしたが、それぞれのカスタマイズの時に深い話はするので、今回は割愛させて頂きます!

まとめると・・・


  1. 「data」ディレクトリ以下は、原則としてWEBブラウザでアクセスできるところに晒すな!

  2. 「data/class」ディレクトリはEC-CUBEの心臓部!カスタマイズするときは「data/class_extends」のファイルに修正するプログラムを記述すること!

  3. デザインテンプレートは「data/Smarty」以下に格納されるが、「html/user_data/packages/パッケージ名」の中にも存在するので注意。tplファイルはデザイン管理から管理できるが、CSSや画像ファイルはコンテンツ管理のファイル管理からか、FTP経由でアップロードする必要あり!

  4. 「html」ディレクトリ以下のPHPファイルは、基本的にインターフェースの役割で、裏で「data/class_extends」等の心臓部を呼び出している。



なんとなくこの辺がわかっていれば、カスタマイズでそう苦労することはないです。あとは実践あるのみ!一緒に頑張りましょう!

このページを見ている人は、以下のページも参照しているようです・・・!

>> EC-CUBEの学校のページ参照は、レコメンドエンジン「楽レコ」でレコメンデーションしています!

レビュー

レビューによるご意見・ご質問は会員登録された方のみとなっております。
  • ★★★★★ とってもわかりやすかったです 2008/10/16
    レビュアー:suzuki

    「誰もこの記事を読まなかったら…」とご心配なようなのでレビューさせていただきました。
    とてもわかりやすくて為になりましたよ。
    これからも新しい講習楽しみにしています。

  • ありがとうございます。 2008/10/20
    レビュアー:aratana

    suzuki様、お気使いありがとうございます。
    趣味のような形で更新しておりますので更新速度はあまり期待されない方が良いかと思いますが、お役立て頂けるようなサイトにしていきたいと思います。

    今後もよろしくお願いいたします。

  • ★★★★★ わかりやすいというか、必須!!! 2008/10/21
    レビュアー:tak

    こういった大事なことがどこにもないので、
    不安に思いながら追いかけてました。
    で、あまりのrequire(たぶん、リクワイアーです
    ^^)の多さに追いかけるのをやめて
    しばらく絶望、、しかたなくもう一度
    ひとつずつって感じでしたけど。

    これこそ、公式マニュアル本に必要な
    解説なんじゃないのかーーーーっ!!!
    ともかく感謝です。

  • ★★★★★ 読みました。 2009/04/17
    レビュアー:jotaku

    読みながらノートに書きました。
    授業ですから^^;
    ありがとうございます。

この記事を見た人はこの記事も見ています

この記事に対するトラックバック

この記事のトラックバック先URL

ECの「勝ち組」だけが知っている 売り上げUPの秘密はこちら