久々のゼンカートネタです。
ゼンカートを使用していて、たまに「日付や曜日部分が日本語にならない」ということが起きます。
言語ファイルを確認して、いじってみても直らない…そんなこともあります。
この原因として考えられるのが、「サーバのロケール」の問題です。
ゼンカートの場合、日付部分を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');
を記述すると直る場合があります。
どのサーバでも通用するかわからないのですが、もしお困りの場合は試してみる価値はあると思います。
当サイトをMT4.1にバージョンアップしました。
一通り画像を載せますが、まずエントリー新規作成画面のレイアウトが変わりました。
従来までの縦長な感じから横幅を活かして、情報を一目で見やすくなっています。
そして、アイテム管理画面も少し洗練されたように感じます。
これらからよりユーザーでにとって使いやすくなったと言えると思います。
そして、今回から標準搭載されたカスタムフィールドとグローバルテンプレート機能が追加されました。
カスタムフィールドは、エントリー本文、続き、概要、キーワード、タグなどの記事作成時の項目に、さらに任意の項目を追加することの出来る機能です。
今まで項目が自由にふやせたらいいのに、というWEBマスター側の要望も叶えられる素晴らしい機能ですね。
そしてもう1つ、グローバルテンプレートですが、これは同じシステム内に複数ブログを運営している場合に、それらのブログで同一のテンプレートを扱うことが出来る機能です。
当サイトのように、サイト全体と中ページ(ブログ)でMTを使っていて、同じテンプレートで統一感を出したい場合などに利用できると思います。
進化を遂げているMTは、ますます魅力的ですよ!
MovableTypeのオープンソースのβ版が公開されました。
英語なのでわからなかったですが、今年中に正式公開されるのではないでしょうか。
今のところ何となくゼンカート的な感じでスタートしてますが、日本語対応されるのもすぐでしょう。
こちらのMovableType備忘録というサイトで、MovableType内でページランキングを作成できるスクリプトが公開されていました。
実際に試してみたが、ファイルの自動生成で失敗したため断念しました。(このサイトではなく別サイトでテスト)
公開サイトにも書かれていましたが、ロリポップとテスト環境だったXREAでは上記の問題でこのスクリプトは使えないようです。
ただ、ヴァージョン4でも動くようです。エラー表示は出たものの反応があったので恐らく。
今回は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です。
長々となってしまいましたが、ぜひお役立てください。