Perl楽しいから好き

Perlをはじめとしたプログラミング周りのあれこれについて。モダーンなPerlを楽しんでいます。

EC-CUBEのディレクトリ構造をPerlで暴く

今月は、割とEC-CUBEを触ってみている。


EC-CUBESmartyという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/perl

use 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
(この下も略)

これで、ファイル探しが楽になったー。