EC-CUBEのディレクトリ構造をPerlで暴く
今月は、割とEC-CUBEを触ってみている。
EC-CUBEはSmartyというPHPのテンプレートエンジンをベースに作られている。
MVCモデル的だ。
ショップ用に作られているため、
カート・メルマガ・売上管理・顧客管理機能が標準で付いている。
まー、過剰な気もするけど。
MVCは、ModelとViewとControllerが分離していて、
作業の分担がキレイにできたり、相乗り部分が少ないため管理がしやすい
というのが売りのようだ。
話を聞く限りでは、確かに便利そうだ。
が、一人で全部修正する場合どうなんだろうとやってみて思った。
管理画面から登録できる商品項目を増やすために、
DBのカラムを増やし、増やした項目がEC-CUBE内の配列として読み込まれるように追記し、
管理画面の入力と確認のテンプレートを修正し、サブクエリー表示できるように追記。
で、やっとSmarty的な
とかいう変数が使えるようになった。
{$arrProduct.hoge|nl2br}
慣れの問題もあるけど、
「めんどくせぇ」
というのが正直な感想だった。
まー、でもこの程度の作業でカスタマイズができると考えれば
便利なんだろうなーと強引に納得。
そんなEC-CUBEたん、ディレクトリ構造の複雑さが半端ねぇんです。
Smarty勉強する前なんて
「templatesディレクトリ」と「templates_cディレクトリ」は、
ユーザを惑わせるための開発者の嫌がらせかと感じたくらいだったから。
まー、そんなこんなでEC-CUBEで見た目を触るときに
修正すべきファイル名はわかってるけどファイルの場所がわからん。
という事態に直面し、「ここはいっちょう、Perlで解決してやろうじゃないか!」
と思ったわけです。
コマンドプロンプトのtreeコマンドでは不満でした。
そのマシンの持つ純粋なポテンシャルを引き出すことこそが最大の喜び。
なーんて、オーバーレブに登場していた「ノーマルの狼」みたいなことを
言ってみましたが、自分の考えはそっち寄りです。
プログラミングにしても、システム構築にしても最も適した道具を選択し、
その道具のポテンシャルを使い切るのが良いなーと思ってます。
まー、実際使い切る所まではいかないわけですがw
そんな思想から、今回のEC-CUBEのディレクトリ構造解明も
はじめは、コマンドプロンプトで済ませようと考えてました。
tree /a /f > eccube_tree.txt
みたいに。
でも、出力結果が
6.php | |||
6.phps | |||
7.php | |||
7.phps | |||
8.php | |||
8.phps | |||
9.php | |||
9.phps | |||
index.html | |||
+---Engine | |||
Interface.php | |||
PearDate.php | |||
UnixTS.php | |||
+---Month | |||
Weekdays.php | |||
Weeks.php | |||
+---Table |
こんな感じになってしまって、
親ディレクトリまで辿るのにマウスホイールどんだけ回さなきゃなんだ!
と思いPerlでの解決に移りました。
File::FindモジュールでEC-CUBEのディレクトリ構造攻略
#! usr/bin/perluse strict;
use warnings;
use File::Find;open my $save, '>', './findName.txt' ;
find(\&fileProc, '.');
sub fileProc {
print $save "$File::Find::name\n";
}close $save;
こんなスクリプトを書いた出力結果が以下の通り
(この上は略)
./data/Smarty/templates/default/mypage/index.tpl
./data/Smarty/templates/default/mypage/login.tpl
./data/Smarty/templates/default/mypage/navi.tpl
./data/Smarty/templates/default/mypage/reading.tpl
./data/Smarty/templates/default/mypage/refusal.tpl
./data/Smarty/templates/default/mypage/refusal_complete.tpl
./data/Smarty/templates/default/mypage/refusal_confirm.tpl
./data/Smarty/templates/default/order
./data/Smarty/templates/default/order/index.tpl
./data/Smarty/templates/default/products
./data/Smarty/templates/default/products/customer_favorite_products.tpl
./data/Smarty/templates/default/products/detail_image.tpl
./data/Smarty/templates/default/products/review.tpl
./data/Smarty/templates/default/products/review_complete.tpl
./data/Smarty/templates/default/products/review_confirm.tpl
./data/Smarty/templates/default/regist
./data/Smarty/templates/default/regist/complete.tpl
./data/Smarty/templates/default/rss
./data/Smarty/templates/default/rss/index.tpl
./data/Smarty/templates/default/rss/product.tpl
./data/Smarty/templates/default/shopping
./data/Smarty/templates/default/shopping/card.tpl
./data/Smarty/templates/default/shopping/complete.tpl
./data/Smarty/templates/default/shopping/confirm.tpl
./data/Smarty/templates/default/shopping/convenience.tpl
./data/Smarty/templates/default/shopping/deliv.tpl
./data/Smarty/templates/default/shopping/index.tpl
./data/Smarty/templates/default/shopping/nonmember_input.tpl
./data/Smarty/templates/default/shopping/payment.tpl
./data/Smarty/templates_c
(この下も略)
これで、ファイル探しが楽になったー。