バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
seasoft
投稿日時: 2009/8/17 16:54
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7365
Re: 商品コードで送料を操作するには?
他で同様の変数を処理している所を参考にすると良いと思います。

たしか for 文を使っていたと思います。
(個人的には foreach を使うほうがスマートな気はしますが、まずは既存の真似をするのが確実だと思います。)


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

popo
投稿日時: 2009/8/17 18:55
対応状況: −−−
長老
登録日: 2008/10/1
居住地:
投稿: 189
Re: 商品コードで送料を操作するには?
ご回答ありがとうございます。

悪戦苦闘した結果、何とかできたような気がします(^-^;
小学生6年生が中学3年生の数学の問題を解いたような感じです。
公式も分からないレベルだと、ちょっとした応用問題を解くのも一苦労と言う感じですね(苦笑)

私がやってみた方法についてですが、アドバイスを頂いたようにfor文を使ってみました。
商品コードの数だけ、このfor文とif分を書き加えて行かなければならないのですが、もっとスマートな記述方法はあるでしょうか?
一応答えがでたので、後はもっとスマートな解き方があれば、ご教授頂けると助かります。
引用:

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;

ecbg
投稿日時: 2009/8/17 19:28
対応状況: −−−
仙人
登録日: 2009/2/25
居住地: 東京
投稿: 387
Re: 商品コードで送料を操作するには?
条件によって行うことが同じなら、まとめることができるかと。


for($i = 0; $i <= $total_quantity; $i++)
{
if($objPage->arrProductsClass[$i]['product_code'] == "ab" or $objPage->arrProductsClass[$i]['product_code'] == "cd"
){
$cdcount += 1;
}
}
if($cdcount > 0)
{
$cdfee = 1000;
}else{
$cdfee= 0;
}
popo
投稿日時: 2009/8/17 20:11
対応状況: −−−
長老
登録日: 2008/10/1
居住地:
投稿: 189
Re: 商品コードで送料を操作するには?
ご回答ありがとうございます。

引用:

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


教えて頂いた方法だと、商品コード「ab」もしくは「cd」が1つ以上があれば送料に1000円をプラスすると言った感じですよね。
カートの中に、商品コード「ab」が1つあれば1000円プラス。「cd」があれば1000円プラス。
「ab」と「cd」の両方が含まれていれば、2000円プラスになります。

簡単に言えば、カートに入っている商品の中の商品コードの種類の数だけ、1000円をプラスしていくことになります。
1種類であれば、1000円。2種類であれば2000円。5種類であれば5000円を送料にプラスする事になります。

アドバイスをお願い致します。
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;

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のコードの書き方的質問なので、あとはご自分でなんとかするのがよろしいかと。
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
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'] に地域別送料を取得できれば何とかなりそうなのですがご教示いただけませんでしょうか。

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


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

takoyaki
投稿日時: 2009/9/22 10:36
対応状況: −−−
一人前
登録日: 2008/1/26
居住地: 沖縄県
投稿: 111
Re: 商品コードで送料を操作するには?
Seasoft 様

いつもありがとうございます。
その方向でがんばってみます。
« 1 (2) 3 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
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.