カテゴリー別アーカイブ: Tips(EC2)

EC-CUBE2.11.5からEC-CUBE2.12へのバージョンアップの検証

まず、EC-CUBE2.11.5をインストールします。
気がかりなのは、顧客情報のパスワードが変更になることなので、テストで顧客情報を入れます。

2.11系のデータをエクスポートする。プラグインがあるのでそれを利用する。

データエクスポートモジュール(2.11系)

ちょっと迷ったのだけど、エクスポートモジュールをインストール後、エクスポートするには「オーナーズストア」から「購入商品一覧」を表示し「購入商品一覧を取得する」ボタンをクリックし、表示された一覧から、エクスポートツールの「設定」をクリックする必要があります。

ec-cube-export

そして、データをエクスポート。

次に、違う領域に2.12.1をインストールしてみました。そして、

データ移行プラグイン(インポート)

をダウンロードして、プラグインとしてインストール。
2.11系はオーナーズストアから購入してからインストールだけど、2.12系からはプラグインなのですね。

そして、エクスポートしたデータを、インポートしました。このときに、パスワードが変わっちゃうから、管理者パスワードをすぐに登録しなおして!と言われるので、速攻再登録。

さて、肝心の顧客情報のパスワード。
ログインしましたが、やはりログインできませんでした。 続きを読む

EC-CUBEで海外からの注文を受ける時

とはいっても、多言語化とかいう話ではなくて、対象は

・日本語がバリバリ読める海外の人

です。

会員登録フォームに

(1)国を入れるようにしたい。
(2)郵便番号の処理をどうしようか。桁数をフリーにしたほうがいいかも。
(3)都道府県は必須だけど、ないから必須を外したい。
(4)電話番号の桁数もフリーにしたい。国番号をいれてもらえるようにしたい。

というようなご要望。

この(1)から(3)のご要望は、EC-CUBE側で準備してくれています。

「管理画面」>「システム設定」>「パラメーター設定」で、

FORM_COUNTRY_ENABLE を false にする。

これだけです。

これで
ec-cube-before

ec-cube-after

あ、「海外の方はこちらへの記入は・・・」とか「日本の方はこちらへの記入は・・・」とかは、後でテンプレート(frontparts>form_input_parsonal.tpl)に追加しました。

このパラメータは、Smartyで「$smarty.const.FORM_COUNTRY_ENABLE」で呼び出せるので、

<!--{if $smarty.const.FORM_COUNTRY_ENABLE}--><br /><span class="mini">日本の方はこちらへの記入は不要です。</span><!--{/if}-->

という風にしてやると、パラメータの変更と連動します。

【メモ】EC-CUBEで海外向けオンラインショップを作る参考ページリンク

まずは、EC-CUBEの多言語
海外向けショッピングサイトも制作可能! EC-CUBEに多言語対応版が登場!!
【公式サイト】EC-CUBE英語版

Paypalのことが気になって。やっぱりPaypalがいいのかな
EC-Cube Paypal決済カスタマイズ⑥
EC-CUBE、ペイパル決済プラグインにより海外決済に対応

商品発送は、国際郵便(EMS)とか?
国際郵便【郵便局】

EMSに対応したプラグインがあるらしいけど、バージョンが止まってる?便利そうなのに。
EMS配送に対応したEC-CUBEをインストール提供いたします!

講演とかもあるのね。早く知ってたら行きたかったな。
越境EC経験者が語るEC-CUBE海外支援セミナー

とりあえず、今日調べた分。
また、何か調べたら追加しますー。

 

というか、こういうのをまとめNAVERで作ればいいのだよね……きっと。
また考えよ。

【EC-CUBE2.11.5】商品別送料の計算を変更する。

前に記事で書いた「商品別送料の計算を変更する」の続編というか…仕様変更。

送料無料の商品A と 送料無料でない商品Bがある。また、送料は一律1000円とする。

この場合、以下の様な送料計算にしたい。

A)送料無料商品Aのみを買った場合(複数でも) → 送料無料
B)送料無料商品Aと送料無料でない商品B(複数でも)を買った場合 → 送料0円
C)送料無料でない商品Bを買った場合(複数でも)ツꀀ→ 送料1000円

赤字のところが変わりました。

商品登録時の「商品送料」を0円に設定して、あとは、「商品別送料の計算を変更する」のプログラム変更後、以下のように付け足します。

data/class/SC_Cartsession.php のL.700あたりからです。

//商品送料無料の商品買ったかのフラグを準備。
$deliv_free_flag = 0;

// 商品ごとの送料を加算
if (OPTION_PRODUCT_DELIV_FEE == 1) {
$cartItems = $this->getCartList($productTypeId);
$deliv_fee_cn = 0;
foreach ($cartItems as $item) {
if($item[‘productsClass’][‘deliv_fee’] != null){
$results[‘deliv_fee’] += $item[‘productsClass’][‘deliv_fee’] * $item[‘quantity’];

//個別送料が0円の商品があればフラグを立てる
if($item[‘productsClass’][‘deliv_fee’] == “0”){
$deliv_free_flag = 1;
}

}else{
$deliv_fee_cn++;
}
}
}

// 配送業者の送料を加算
if (OPTION_DELIV_FEE == 1
&& $deliv_fee_cn != 0
&& !SC_Utils_Ex::isBlank($deliv_pref)
&& !SC_Utils_Ex::isBlank($deliv_id)) {
$results[‘deliv_fee’] += $objDb->sfGetDelivFee($deliv_pref, $deliv_id);
}

//個別送料が0円の商品を一つでも買っていれば、送料無料
if ($deliv_free_flag == 1) {
$results[‘deliv_fee’] = 0;
}

赤字を追加しました。

複数送り先のプログラム部分にも同様に追加します。

0円商品買ったらなんでもかんでも送料無料、という仕様です。
商品送料を別に指定していても(500円とかしてても)0円が優先されます。

【EC-CUBE】会員種別で表示・非表示になる商品カテゴリーを作成する。

会員に「本会員(status:2)」が既にありますが、これに「A会員(status:3)」「B会員(status:4)」を追加して、「A会員」や「B会員」にしか買えないカテゴリーを作りたい。

0.「A会員(status:3)」「B会員(status:4)」の人がログインできるように修正します。
data\class\SC_Customer.phpのL44に

$sql = “SELECT * FROM dtb_customer WHERE (email = ?” . $sql_mobile . “) AND del_flg = 0 AND (status = 2 || status = 3 || status = 4)”;

という風に、statusを追加する必要があります。

1.カテゴリーテーブルに「taiou_status」のカラムを追加します。
2.カテゴリー登録ページに「taiou_status」を登録できるようなカスタマイズをします。

data\class\pages\admin\products\LC_Page_Admin_Products_Category.php
function init() {
の中に

       $masterData = new SC_DB_MasterData_Ex();#add グループ判定のため
        $this->arrCUST = $masterData->getMasterData("mtb_customer_status");#add グループ判定のため

を追加して、グループ(会員種別)を取得する

L238あたりの「 function doPreEdit(&$objFormParam) 」に

       // 編集対象のカテゴリ名をDBより取得する
        $where = "category_id = ?";
        $category_name = $objQuery->get("category_name", "dtb_category", $where, array($category_id));
        $taiou_status = $objQuery->get("taiou_status", "dtb_category", $where, array($category_id));#add グループ判定のため

という風に「$taiou_status」を追加。

        // 対応グループを取得#add グループ判定のため
        $this->arrForm['taiou_status']   = $taiou_status;#add グループ判定のため

も「$this->arrForm[‘category_id’]」の下に追加

L266 あたりの「function doEdit(&$objFormParam) {」に

            $this->arrForm['category_name'] = $objFormParam->getValue('category_name');
            $this->arrForm['taiou_status'] = $objFormParam->getValue('taiou_status');#add グループ判定のため

という風に
「function doEdit」の中で、

this->arrForm['category_name'] = $objFormParam->getValue('category_name');

となっているところの次の行にとにかくつける。(3か所)

続きを読む

【EC-CUBE】で税込と税別の値段を同時に表示する。

※(2013.03.13追記)基本的に2.11.5を想定して書いてましたが、2.12.1にバージョンアップしたテストのときに2.12.1についても一部追加。2.13以降はまだテストしてませんが、もし変更があったりテストすることがあれば後日追記します。

税込と税別の値段を同時に表示させる。
最初はテンプレートで
税別

<!--{$arrProduct.price01_min|number_format}-->

税込

<!--{$arrProduct.price01_min|sfCalcIncTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}-->

というふうに変更するだけでよいと簡単に思っていました。

そう。規格のことを忘れていました。

詳細ページでは、規格を変更するとこの値段の部分が変更されます。

product.jsで制御しているようだったのですが、ここで扱っているのが「税込」の値段のみです。

最初は
product.jsの

$price02_dynamic.text(classcat2['price02']).show();

という部分で

$price02_dynamic.text("税込価格"+classcat2['price02']+"円(税別価格:").show();

なんて、一気に書いてしまって、税別も税込も同時に表示入れ替えをしようと思っていたのですが、
税別の価格を取ってこれていないことに気づきます。表示部分と同じ計算をさせたほうがよいので、javascript上で1.05で割るなんて恐ろしいことしたくないし。と、考えていて……。

このclasscat2[‘price02’]は、商品詳細ページのheader部分に埋め込まれている

<![CDATA[
    classCategories =

以下のデータを読み込んでいるようです。

このデータはどこで作られているかというと
data/class/SC_Product.php の L232あたり
function setProductsClassByProductIds
以下。

ここに
2.11.5まで

// 価格 税抜価格を表示させるために追加 start
$classCats2['price011']
   = strlen($productsClass['price01'])
   ? number_format($productsClass['price01'])
   : '';

$classCats2['price021']
   = strlen($productsClass['price02'])
   ? number_format($productsClass['price02'])
   : '';
//end

2.12.1以降(追記:2014.03.13)

//  税抜価格を表示させるために追加 start
 $arrClassCats2['price011']
       = strlen($arrProductsClass['price01'])
        ? number_format($arrProductsClass['price01'])
       : '';

$arrClassCats2['price021']
       = strlen($arrProductsClass['price02'])
       ? number_format($arrProductsClass['price02'])
       : '';
 //end

を追加します。

そして、product.js(html>jsの中の)を

// 販売価格
    var $price02_default = $form.find('[id^=price02_default]');
    var $price02_dynamic = $form.find('[id^=price02_dynamic]');
    var $price021_default = $form.find('[id^=price021_default]');//add 税抜
    var $price021_dynamic = $form.find('[id^=price021_dynamic]');//add 税抜
    if (classcat2
        && typeof classcat2['price02'] != 'undefined'
        && String(classcat2['price02']).length >= 1) {

        $price02_dynamic.text(classcat2['price02']).show();
        $price021_dynamic.text(classcat2['price021']).show();//add 税抜
        $price02_default.hide();
        $price021_default.hide();//add 税抜(2013.03.13追記。addを入れるの忘れてた)
    } else {
        $price02_dynamic.hide();
        $price02_default.show();
        $price021_dynamic.hide();//add 税抜
        $price021_default.show();//add 税抜
    }

という風に各種追加。とりあえず、販売価格だけ書いてますが、通常価格も必要なら同じように改造を・・・。

テンプレートの方を

<!--★販売価格★-->
        価格:
        <!--{strip}-->
         <strong>
            <span id="price021_default"><!--{$arrProduct.price02_min|number_format}--></span><span id="price021_dynamic"></span>円</strong>
            (税込価格:<span id="price02_default"><!--{$arrProduct.price02_min|sfCalcIncTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|number_format}--></span><span id="price02_dynamic"></span>円)
        <!--{/strip}-->

としました。

発送日の日数指定について

発送日の指定が「1~2日」「3~4日」とレンジを持たせているが、実際のプログラムでは「2日後」と「4日後」である。
なら、「2日後」と「4日後」でいいんじゃないかと思って、言葉を変更するのは、管理画面のマスターデータ管理でできた。
でも実際3日後とかはどうしたらいいんだろう?マスターデータ管理で増やせるけど、実際の計算する「3」という数字はどこに登録するのだ?

と調べたら、

data/class/helper/SC_Helper_Purchase.php に発見しました。

んー。でも、やっぱりデータベースだけでは解決しないんだなぁ。プログラムを触る必要があるのか……。

配達日(発送日)の選択表示を営業○日後から始めたい。

EC-CUBEは商品のお届け目安日を設定でき、その設定をお客様の注文時の発送日指定に反映することができます。
が、ここには曜日で指定された定休日・管理画面で指定した定休日は反映されません。
たとえば、3日後お届け可としたときに、土日が定休日の場合。
月曜日に注文が入った場合3日後の木曜日にお届け可かもしれませんが、金曜日に注文が入った場合に月曜日お届けは1日もなくて不可能です。
この3日後お届け可を、3営業日後お届け可にしたいなぁと思いまして、カスタマイズしてみました。

・3営業日後以降が選べる。
・3営業日以降の選択の中で、定休日が含まれている(別に発送の手続きは休み前にするのだから、お届け日が定休日でも問題はない)

2.11.0系 商品購入手続き画面のお届け日に定休日を反映させる

を参考にさせていただきました。

まずは、

/data/class/helper/SC_Helper_Purchase.php

に以下を追加します。 続きを読む

定休日の設定を引き、発送日の選択表示を営業○日後に

とりあえず。実装する前に調べたページをメモとして残します。

どっちも2.4系

http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=4464&forum=11

http://takenet.jp/takeblo/2009/11/eccube_3.html

http://d.hatena.ne.jp/AI-615/20110408/1302233325

お届希望日の指定のプルダウンの日付一覧から定休日を取り除くんではなくて、お届け希望日の最初の日を3営業日後にしたいんですねー。
1)今日から3日以降からお届け希望日の指定が可能。
2)今日から3営業日以降からお届け希望日の指定が可能。
では違うじゃないですか。

例えば、土日が定休日のお店の場合、今日が1日(金) なら、

1)の場合は、4日(月)以降可能。
2)の場合は、6日(水)以降可能。となります。

2)がしたい。その後、9日(土)が含まれていようが、10日(日)が含まれていようが問題ない。

というのを、考えてみます。  続く。

 

【EC-CUBE2.11.1】商品別送料の計算を変更する。(20111031追記・20110811追記・再投稿)

(2011.5.17に投稿文)
送料無料の商品A と 送料無料でない商品Bがある。また、送料は一律1000円とする。

この場合、以下の様な送料計算にしたい。

A)送料無料商品Aのみを買った場合(複数でも) → 送料無料
B)送料無料商品Aと送料無料でない商品B(複数でも)を買った場合 → 送料1000円
C)送料無料でない商品Bを買った場合(複数でも)ツꀀ→ 送料1000円

つまり、送料無料の商品のみの場合は送料無料。そこに送料無料でない商品Bを買った場合は、送料はちゃんと取る。というようなことをしたいのです。

2.11.1で、商品別送料の計算をonにした場合、どのパターンも商品別送料に+送料1000円が加算されます。

そこで以下のように変更しました。
続きを読む