バージョン選択

フォーラム

メニュー

オンライン状況

77 人のユーザが現在オンラインです。 (71 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 77
もっと...

サイト内検索

質問 > フロント機能 > 商品コードで送料を操作するには?

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
popo
投稿日時: 2009/9/24 4:33
対応状況: −−−
長老
登録日: 2008/10/1
居住地:
投稿: 189
Re: 商品コードで送料を操作するには?
takoyaki様

ご教授ありがとうございます。
まだ実装の予定はありませんが、takoyakiさんの実装メモがあれば将来的に送料設定に幅ができそうです。

ただtakoyakiさんの方が私より遥かに知識と技術がありますので、商品コードで送料を追加させるだけでもかなり悪戦苦闘した私には、実装できるか分かりませんが、もし実装する際にできなかった場合は、またこのスレを掘り起こしてしまうかもしれません(-_-;

その際は、再度ご教授頂ければ助かります。

このスレが、その他の方にも参考になれば良いと思います。
takoyaki
投稿日時: 2009/9/22 23:31
対応状況: −−−
一人前
登録日: 2008/1/26
居住地: 沖縄県
投稿: 111
Re: 商品コードで送料を操作するには?
popo様

私がこの送料設定を実装できましたのもpopoさんのスレがあったからできました。
私の方法はかなりチカラワザという感じで決してスマートなものではありませんが、参考程度に書かせていただきます。
ramrunさんのコードを基にして
$arrProductsFee = array();
foreach ($objPage->arrProductsClass as $item) {
    switch ($item['product_code']) {
        case 'ab':
            $arrProductsFee[$item['product_code']] = 1000;
            break;
        case 'cd':
            $arrProductsFee[$item['product_code']] = 900;
            break;
        default:
            $arrProductsFee[$item['product_code']] = 1100;
    }
}
$arrData['deliv_fee'] += array_sum($arrProductsFee);
にグローバル変数でカウンターを付けます。(都道府県別配送料金を設定する関数で使います)
        case 'ab':
            $arrProductsFee[$item['product_code']] = 1000;
            $ab_count += 1;
            break;
という感じです。
そして下記一行を削除します。
$arrData['deliv_fee'] += array_sum($arrProductsFee);

そして、$arrProductsFee[$item['product_code']]の部分をばらしてグローバル変数に格納します。
$deliv_fee_ab = $arrProductsFee['ab'];

ここまでは同じ関数内です。

次に、都道府県別配送料金を設定する関数内の作業に移ります。
$arrData['deliv_fee'] += $this->sfGetDelivFee($arrData);
の部分ですが、この地域別送料を新たな変数に格納します。たとえば$standard_deliv_feeのように。
$ab_countがNULLでなければ$standard_deliv_feeに先の関数のグローバル変数に追加した金額をプラス。という感じです。
参考になりますでしょうか。もっとスマートな方法はあると思います。
あ〜、文章って難しいですね。
popo
投稿日時: 2009/9/22 18:22
対応状況: −−−
長老
登録日: 2008/10/1
居住地:
投稿: 189
Re: 商品コードで送料を操作するには?
takoyaki 様

スレ主のpopoです。
現在商品コードで送料のプラスを実装して運営しておりますが、takoyakiさんが実装された方法もお教え頂ければ嬉しく思います。

標準で送料について、もっときめ細かに設定できるようになっていれば良いのですが、商品コードで送料をプラスするなどの方法が、いろいろとあれば運営の幅も広がりますよね。

差し支えなければ、同じように送料のカスタマイズをしたい方も多いと思いますので、ご教授頂ければと思います。
takoyaki
投稿日時: 2009/9/22 14:24
対応状況: −−−
一人前
登録日: 2008/1/26
居住地: 沖縄県
投稿: 111
Re: 商品コードで送料を操作するには?
おかげさまでなんとか実装することができました。

seasoft 様、いつもいいヒントをいただきありがとうございます。
takoyaki
投稿日時: 2009/9/22 10:36
対応状況: −−−
一人前
登録日: 2008/1/26
居住地: 沖縄県
投稿: 111
Re: 商品コードで送料を操作するには?
Seasoft 様

いつもありがとうございます。
その方向でがんばってみます。
seasoft
投稿日時: 2009/9/22 4:36
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7365
Re: 商品コードで送料を操作するには?
荒っぽい実装方法だとは思いますが、$arrProductsFee の内容(または要素数)をグローバル変数として持たせて、地域別送料を算出できる階層でそのグローバル変数を利用して乗算しては?


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

takoyaki
投稿日時: 2009/9/22 4:26
対応状況: −−−
一人前
登録日: 2008/1/26
居住地: 沖縄県
投稿: 111
Re: 商品コードで送料を操作するには?
地域別に配送料を設定していて、商品コードによって送料をプラスアルファしたいと考えています。

$arrProductsFee = array();
foreach ($objPage->arrProductsClass as $item) {
    switch ($item['product_code']) {
        case 'ab':
            $arrProductsFee[$item['product_code']] = 200;
            break;
        case 'cd':
            $arrProductsFee[$item['product_code']] = 400;
            break;
        default:
            $arrProductsFee[$item['product_code']] = 0;
    }
}
$arrData['deliv_fee'] += array_sum($arrProductsFee);
を実装し、ab cd の商品を購入した場合、

    function lfAddDelivFee(&$arrData) {
        $arrData['deliv_fee'] += $this->sfGetDelivFee($arrData);
    }

の $arrData['deliv_fee'] には地域別送料+600 が計上されますが、
地域別送料+200+地域別送料+400 としたいのです。

foreach 文の直後の$arrData['deliv_fee'] に地域別送料を取得できれば何とかなりそうなのですがご教示いただけませんでしょうか。

よろしくお願いいたします。
claps
投稿日時: 2009/8/22 15:35
対応状況: −−−
新米
登録日: 2009/8/22
居住地:
投稿: 1
Re: 商品コードで送料を操作するには?
ramrunさんのコードをSC_Helper_DB.phpに実装したところ、動作確認しました。
ちょうど同じ問題で悩んでおり、大変助かりました。
有難うございました。

EC-CUBEバージョン 2.4.0
PHPバージョン PHP 5.1.6
DBバージョン MySQL 5.0.45
ramrun
投稿日時: 2009/8/18 21:19
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: 商品コードで送料を操作するには?
全種類統一で1,000円なら下記でいけるかと。
$arrProductsFee = array();
foreach ($objPage->arrProductsClass as $item)
    $arrProductsFee[$item['product_code']] = 1000;
$arrData['deliv_fee'] += array_sum($arrProductsFee);


種類で金額が変わってくるようならこんな感じでしょうか。
$arrProductsFee = array();
foreach ($objPage->arrProductsClass as $item) {
    switch ($item['product_code']) {
        case 'ab':
            $arrProductsFee[$item['product_code']] = 1000;
            break;
        case 'cd':
            $arrProductsFee[$item['product_code']] = 900;
            break;
        default:
            $arrProductsFee[$item['product_code']] = 1100;
    }
}
$arrData['deliv_fee'] += array_sum($arrProductsFee);


まぁEC-CUBEの質問というか、PHPのコードの書き方的質問なので、あとはご自分でなんとかするのがよろしいかと。
ecbg
投稿日時: 2009/8/18 14:42
対応状況: −−−
仙人
登録日: 2009/2/25
居住地: 東京
投稿: 387
Re: 商品コードで送料を操作するには?
ざっと見ただけで、「$abfee」「$cdfee」と振り分けていたのに気付きませんでした。

ただどちらにしても、全て$arrData['deliv_fee']に足されるのであれば、以下と変わらない気もするのですが、以下か問題なく動いているのであれば元のままでも店舗数くらいの条件分岐ならありかと思います。

引用:

for($i = 0; $i <= $total_quantity; $i++)
{
if($objPage->arrProductsClass[$i]['product_code'] == "ab"){
$abcount += 1;
}
}
if($abcount > 0)
{
$abfee = 1000;
}else{
$abfee= 0;
}

for($i = 0; $i <= $total_quantity; $i++)
{
if($objPage->arrProductsClass[$i]['product_code'] == "cd"){
$cdcount += 1;
}
}
if($cdcount > 0)
{
$cdfee = 1000;
}else{
$cdfee= 0;
}

$arrData['deliv_fee'] += $abfee;
$arrData['deliv_fee'] += $cdfee;

(1) 2 3 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,299名です
総投稿数は109,692件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.