NSproduceZencartカスタマイズページトップです。

お問い合わせはこちら

Zencartカスタマイズ カテゴリー一覧ページの説明文追加

先日からbigmouseさんで提供されている「Zencart v1.3.8a(日本語)」でショッピングサイトを構築中です。

タイトルとは余談ですが、本家で提供されている1.3.0系に比べ、断然使い勝手がよい感じがします。さすが、ヴァージョンアップされているだけあります。

それで、忘れないうちに記録として残しておきたいのが、カテゴリー一覧ページで説明文を表記する方法です。

なぜか、デフォルトではカテゴリーの名前とアイコンのみがここには表示されるようになっていますが、説明文が表示されないんですよね。

方法としてはけっこう簡単です。(ちなみにV1.3.x系での方法です。)

まず、いじるファイルは、「xxx.com/ゼンカート/includes/module/pages/index/main_template_vars.php」です。
下記、コードをファイルから検索してみてください。

$categories_query = "SELECT c.categories_id, cd.categories_name, c.categories_image, c.parent_id

上記のコードはファイル内に2箇所あります。

このコードのすぐ後ろに、

, categories_description

を2箇所に追加します。

$categories_query = "SELECT c.categories_id, cd.categories_name, c.categories_image, c.parent_id, categories_description

次にモジュールファイル「category_row.php」を編集します。(includes/module/category_row.php)

説明文を入れたい箇所に、

$categories->fields['categories_description']

を入れます。

これでカテゴリー一覧ページにも説明文を表示することができますので、試してみてください。

Zencartカスタマイズ 日付や曜日が英語になってしまう(ゼンカート)

久々のゼンカートネタです。

ゼンカートを使用していて、たまに「日付や曜日部分が日本語にならない」ということが起きます。

言語ファイルを確認して、いじってみても直らない…そんなこともあります。

この原因として考えられるのが、「サーバのロケール」の問題です。

ゼンカートの場合、日付部分をstrftime関数で処理しています。

%mや%BなどMovableTypeでも見かけたことがあると思いますが、これで日付をどう表示するかカスタマイズすることもできます。

ロケール…というのは正直詳しく説明できないのですが、言語をどう処理するかを示すものだと思います。

言語ファイル(includes/language/japanese.php)内に、

@setlocale(LC_TIME, 'ja_JP.EUC-JP');

という記述があります。

この記述の上に、各サーバOSの場合どうすればよいかのコメントアウトが書かれています。(しかし英語…)

一応それを試してみて、ダメな場合は直接ロケールを指定します。

新着商品を表示するモジュールは、デフォルトの場合、「○月の新着商品」の用に表示されるはずです。

しかし、ロケールの問題が発生している場合、この○月の部分がAprilやMayになったりします。

そういう場合、この新着商品の場合はmodule/whats_new.phpで先ほどの%Bのような表記があるstrftime関数部分がありますので、その直前あたりで、

setlocale(LC_ALL, 'ja_JP.EUC-JP');

を記述すると直る場合があります。

どのサーバでも通用するかわからないのですが、もしお困りの場合は試してみる価値はあると思います。

Zencartカスタマイズ 配送料の地域別設定と料金別代引き設定

今回はZencartの機能拡張として、配送料の地域別設定と料金別代引き設定について触れたいと思います。
上記2つは特に需要があるように思いますので、覚えておくと便利だと思います。
まず、配送料金の詳細設定ですが、まずデフォルトで既に入っている配送料定額モジュールを見てみます。

flat.phpが配送料定額モジュールのファイルです。includes/modules/shipping/flat.phpです。
デフォルトでは定額なので、どの地域でも同じ配送料になってしまいます。そのため、地域ごとに料金の設定をする仕組みが必要になります。
そこで、このflat.phpファイルを利用します。例えば北海道、東北・関東・甲信越、東海・中部・関西、中国・四国、九州、沖縄と6地域で料金を別にしたいとすれば、flat.phpファイルを6つ用意します。(複製&バックアップ)

そして何でもよいのですが、ファイル名を変更します。flat○○.phpにしておくとわかりやすいでしょう。もちろん同じフォルダに保存してください。(場所はincludes/modules/shipping/)

次に、各flat○○.phpファイルを開き次の文字列を変更します。
flat → flat○○(小文字・大文字全て&変更しているファイル名)
これでOKです。

これを各ファイルにも適用したら、サーバにアップします。
すると配送モジュールの中に先ほど上げたflat_○○の項目が増えているはずです。変化がない場合は一度画面を更新してください。それでもダメな場合は違うところに上げている可能性が高いので確認してください。エラーが出る場合は、ファイルの記述に間違いがないか確かめてください。

次に地域税の設定が必要になります。(税といってもこの場合は配送地域を明確にする設定です)

地域税の設定を選ぶと、デフォルトではfloridaと入っているはずです。まずこれを削除します。(しなくてもよいです)
削除するためには税率を先に消さなければならないので注意してください。

スッキリしたところで、各地域の設定をします。例として東北地域を作るとします。まず、挿入で地域フォルダを作ります。名前は東北でいいでしょう。
次に詳細を選びます。ここで東北6県を挿入していきます。挿入から、国をjapanに、地域を6県1つずつ選択し作成していきます。
6県全て入れ終わったら、地域フォルダに戻ります。すると東北の項目の地域数が6となっているはずです。同じように他の地域も設定していきましょう。

地域税の設定が終わったら、先ほどの配送モジュールに戻ります。先に作っておいたflat○○.phpを編集していきます。

配送料金はその地域の該当する料金を入れます。次の税種別は消費税を含ませる場合は消費税を選んでください。そして、配送地域ですがここで先ほど作った地域税の設定が活かされていれば選択できるようになっているはずなので、該当地域を選択。よければ、更新を押すと設定完了です。これを他の料金設定にも適用します。

これで地域別の配送料金システムが完成です!

続いて、料金別代引き設定に移ります。
モジュールから支払いモジュールを見てみましょう。

デフォルトで既に代金引換モジュールが入っています。ただこのままでは定額なため例えば10000円未満は315円、30000円未満は420円…といった設定はできません。
とりあえずこのままにして、次に注文合計モジュールを見てみます。

ここにもデフォルトで代金引換手数料のモジュールが入っています。実際にはここで料金を設定していくわけですが、デフォルトでは国コード別…すなわち日本国内では全く無意味な設定しかできません。よって定額のままです。
そこで、この国コード別の設定ではなく地域&料金別に仕組みを変えれば言い訳です。

代金引換手数料モジュールファイル、ot_cod_fee.phpファイルを開き改変します。(必ずバックアップ)ファイルはincludes/modules/order_total/ot_cod_fee.phpにあります。
ファイルを開いたら、まず配送モジュールを複製したflatという文字列に注目します。該当する文字列を複製したファイル分作成します。(もちろん名前も変更します)

if (substr_count($_SESSION['shipping']['id'], 'flat') !=0) $cod_zones = split("[:,]", MODULE_ORDER_TOTAL_COD_FEE_FLAT); 'MODULE_ORDER_TOTAL_COD_FEE_FLAT', $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('COD Fee for FLAT', 'MODULE_ORDER_TOTAL_COD_FEE_FLAT', 'AT:3.00,DE:3.58,00:9.99', 'FLAT: :, .... 00 as country code applies for all countries. If country code is 00, it must be the last statement. If no 00:9.99 appears, COD shipping in foreign countries is not calculated (not possible)', '6', '3', now())");

この3つの文字列が該当します。

それぞれ複製し終わり名前だけを全て変更したら次に国コードを合計料金に加算するための変更を行います。

for ($i = 0; $i < count($cod_zones); $i++) { if ($cod_zones[$i] == $order->delivery['country']['iso_code_2'])

for ($i = 0; $i < count($cod_zones); $i++) { //if ($cod_zones[$i] == $order->delivery['country']['iso_code_2']) { if ($cod_zones[$i] >= $order->info['total'])

に変更します。

これだけです。

変更し終わったらサーバにアップして確認します。
代金引換手数料のモジュールを一度アンインストールしインストールし直すと、複製した地域分の代引料金の設定ができるようになっているはずです。(COD Fee for FLAT○○という項目です)
設定方法は例えば10000円未満の場合は315円、30000円未満を420円としたい場合は
10000:315,30000:420…
と入力します。

他の地域に関しても同様に入力してください。(地域によって料金を変えることができます)
もし配送料無料オプションを付けている場合は、COD Fee for Free-Options Shipping Moduleの項目にも同様の方法で設定してください。(他各モジュールで同様の設定が可能です)
最後に支払いモジュールから代金引換モジュールをインストール(し直して)して完成です。

これで料金別代引手数料設定も完了です。この方法だと、合計金額にも反映されますので非常に便利です。
ちなみに地域設定が不必要な場合は国コードから合計金額を反映させる仕組みに変える方法だけでOKです。
長々となってしまいましたが、ぜひお役立てください。

Zencartカスタマイズ ECサイトはじめるなら

インターネット上に店舗を構えて商売するECサイトが当たり前になってきてる現在、誰しも一度はインターネットショッピングを利用したことがあると思います。

自宅にいながら商品を自分のペースで選べて届けてもらえるのは非常に便利です。

商売をする側にとっても実際に店舗を構えるよりも低コストで始められます。また、実際に店舗があってもそこまでいくのに遠いお客様も、インターネットを利用すればそういたお客様にも提供ができるため集客もできますし、宣伝にもなります。

楽天やYahooなどに出店するのもいいけれど、独自のアカウント(URL)で自由なショッピングサイトを持ちたいという方に、このゼンカート導入をお勧めしています。

ゼンカートはECサイト構築パッケージとして広く認知されています。

利用者も多く、機能も充実しているため導入されている店舗も多いです。

ただ、ゼンカートだけではなく日本発のECサイト構築パッケージであるEC-CUBEもあります。

こちらはゼンカートに比べ新しいですが、最近注目されているパッケージで日本の開発チームが作っているため非常にわかりやすく使いやすいのが特徴です。

多少機能面でゼンカートに劣る部分がありますが、既に導入されているサイトも多くこれからますます期待されるパッケージです。

どちらもフリーでダウンロードできます。

主にゼンカートのカスタマイズについて触れていきたいと思いますが、EC-CUBEについても触れていきたいと思っていますのでよろしくお願いいたします。

トップページへ

新着情報

カテゴリー一覧ページの説明文追加

08.11.27

先日からbigmouseさんで提供されている「Zencart v1.3.8a(日…

日付や曜日が英語になってしまう(ゼンカート)

08.05.24

久々のゼンカートネタです。 ゼンカートを使用していて、たまに「日付や曜日部分が日…

配送料の地域別設定と料金別代引き設定

07.12.06

今回はZencartの機能拡張として、配送料の地域別設定と料金別代引き設定につい…

ECサイトはじめるなら

07.12.06

インターネット上に店舗を構えて商売するECサイトが当たり前になってきてる現在、誰…

Copyright (c) 2009- NSproduce All Rights Reserved.

このページ先頭へ