那須です
早いもので今年ももう8月に入りました。社会人としては数少ない長期休暇をとるチャンスですが、皆さんは予定などいかがでしょうか。僕自身はこの前テレビを見ていて、福島にある「アクアマリンふくしま」に行きたいと思い立ったものの、仕事上、休みのスケジュールが立っていません…東京から福島までは日帰りで行けないことはないけど、結構強行軍だし、悩ましいところです。
さて、今回はZenCartのデータベース(以下DB)についてみていこうと思います。ZenCartのDBはテーブル数がかなり多くなっています。日本語版ZenCartの最新版(8/1時点)であるzen-cart-v1.2.0-l10n-6で見てみると93テーブルあります。既に良質なDB設計書やER図があればいいのですが、過分にして見聞した事がありません(正確にはER図を見かけたことはあります。が、最近それがどこにいったのかわからなくなってしまいました)。そこで僕が仕事上、ZenCartのカスタマイズで機会の多いテーブルを中心に説明をしていきたいと思います。
まずZenCartのテーブル群ですが、数が多くここに載せる意味もあまりないので、テーブルを確認する手順だけで省略させて頂きます。まずMySQL上でしたら
show tables;
と打ってください。またWeb上でも
などから確認する事ができます。
※以前は
ココ
からZenCartのER図を見ることができたのですが、なくなっているみたいです。ER図のありかを知っている方は是非お教えください。
zen_configuration
概要
さて、今回は初回ということで、ZenCartが起動する際に一番初めに使われるテーブル:zen_configuration について見ていきたいと思います。zen_configurationは、その名の通り、ZenCartの設定がデータとして登録されています。例えば、ショップの名称や住所、メールアドレスから、1ページ辺りの商品の表示件数といった様々なものが登録されています。その数は400件以上にも及び、管理画面から変更できるようになっています。
テーブル構成
+---------------------------+--------------+
| Field | Type |
+---------------------------+--------------+
| configuration_id | int(11) |
| configuration_title | text |
| configuration_key | varchar(255) |
| configuration_value | text |
| configuration_description | text |
| configuration_group_id | int(11) |
| sort_order | int(5) |
| last_modified | datetime |
| date_added | datetime |
| use_function | text |
| set_function | text |
+---------------------------+--------------+
ZenCartのカスタマイズをする際に重要になるのは、configuration_keyとconfiguration_value です。これらは、includes/application_top.php の95行目辺りで使われる事になります。
$configuration = $db->Execute(
'select
configuration_key as cfgkey,
configuration_value as cfgvalue
from ' . TABLE_CONFIGURATION,
'',true, 150);
while (!$configuration->EOF) {
define(
$configuration->fields['cfgkey'],
$configuration->fields['cfgvalue']
);
}
※インデントや折り返しなどを適宜変更しています
ZenCartをカスタマイズしていると、数多くの定数と格闘する事になりますが、その一部はこのようにDBから定義が行われているのです。定数の定義文をgrepなどで探しても見つからない場合は、zen_configuration.configuration_key に定数名がないかを確認してみてください。