質問 > フロント機能 > 商品コードで送料を操作するには? |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
popo |
投稿日時: 2009/8/14 19:15
対応状況: −−−
|
長老 登録日: 2008/10/1 居住地: 投稿: 189 |
商品コードで送料を操作するには? EC-CUBEバージョン 2.3.0
PHPバージョン PHP 4.4.9 DBバージョン PostgreSQL 7.3.4 お世話になっております。 別の記事でも少し触れているのですが、EC-CUBEで簡易的なネットモールにできないか考えていました。 お店は大カテゴリーで分類すればクリアできます。 問題は、複数のお店から商品を購入した時の送料計算です。 そこで思い付いたのが、基本送料は0円にしておき、カゴに入っている商品コードの種類の数を元に、基本送料を決定するのはどうでしょうか。 正式版2.4.0では、商品毎に送料を決める事ができるようになっているみたいなので、商品コードを店鋪事に統一しておけば、商品コードの種類だけ基本送料を決めておけば、あとは同一店鋪の商品は同梱すれば良いので、商品毎に設定された送料を加算していけば、複数の店鋪から商品を購入しても、上手く送料計算ができると考えました。 例えば、A店の商品コードは「AA」、B店の商品コードは「BB」として、送料の最低料金が500円とすると、A店だけの商品を購入した場合は、「最低料金500円+商品毎に設定した送料」になります。 A店とB店の商品を購入した場合は、「(A店)最低料金500円+商品毎に設定した送料」+「(B店)最低料金500円+商品毎に設定した送料」が送料合計になります。 店鋪毎に決済して行けば送料も難しく考える必要もないのですが、店鋪をカテゴリーで区別した場合は、カテゴリをまたいで商品をカートに入れて注文できた方が便利なので、商品コードの種類の数だけ送料を設定する事はできないでしょううか? 管理画面で設定しなくても、直接送料計算に必要なファイルに書込む方法でも良いと思います。 注文商品の商品コードに「AA」が1つ以上含まれていたら、送料に500円プラス。商品コード「AA」「BB」の商品が含まれていたら、500*2=1000円を送料にプラスすると言った具合に。 店鋪数ば増えると、その都度ファイルを修正しなければなりませんが、この方法が可能であれば簡易的なショッピングモールの運営もできると思います。(決済はサイト管理者が行う必要がありますが) 私には上記のようなカスタマイズをする知識も技術もないので、何をどうすれば良いのか分からないですが、もし知識がある方が見て、上記のようなカスタマイズが難しくないようであれば、お力を貸して頂けると助かります。 この送料の問題がクリアできれば、簡易的なモールの構築へ大きく前進する事ができそうです。 よろしくお願い致します。 |
kishik |
投稿日時: 2009/8/14 21:01
対応状況: −−−
|
仙人 登録日: 2009/4/3 居住地: 東京 投稿: 382 |
Re: 商品コードで送料を操作するには? /data/class/helper/SC_Helper_DB.php
の"sfTotalConfirm"関数をカスタマイズすればいいと思いますよ。 ----- カスタマイズ承ります http://ec-cube-mall.jp/ http://ec-cube.ec-orange2.jp/ http://wiki.ec-orange2.jp/ |
popo |
投稿日時: 2009/8/15 6:54
対応状況: −−−
|
長老 登録日: 2008/10/1 居住地: 投稿: 189 |
Re: 商品コードで送料を操作するには? ご回答ありがとうございます。
/data/class/helper/SC_Helper_DB.php このファイルを触れば良いというのは、別記事の「合計金額に応じた手数料〜」を見て何となく分かってはいたのですが、何を記述したら良いのか分かりません。 if文を使うのは素人ながら予想は付くのですが、「含む」「含まない」の判別方法も分かりません。 アイディアは浮かんだものの、知識も技術も無いため他力本願になってしまうのですが、ご教授頂けると助かります。 何卒、よろしくお願い致します。 |
seasoft |
投稿日時: 2009/8/16 6:16
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品コードで送料を操作するには? > 「含む」「含まない」の判別方法も分かりません。
いくつか方法はあります。 たとえば、「先頭の2文字で判定する」といった単純なものならば、 http://www.php.net/manual/ja/function.substr.php が使えます。 もう少し複雑な条件で判定したいならば、 http://www.php.net/manual/ja/function.preg-match.php 辺りが便利かと思います。 最初は EC-CUBE を抜きにした、単純な PHP コードを書いて、動作を確認すると良いと思います。
|
popo |
投稿日時: 2009/8/16 8:49
対応状況: −−−
|
長老 登録日: 2008/10/1 居住地: 投稿: 189 |
Re: 商品コードで送料を操作するには? いろいろと試しては見たのですが、上手く動作しませんでした。
商品コードはメールテンプレートのファイルを見て「product_code」だと分かりました。 そこで、下記のような記述を送料計算をしているあたりに、SC_Helper_DB.phpに記述してみました。 引用:
結果は、商品コードは「ab」であってもなくても、送料に1000円が加算されてしまいました。 ここでもう1つ問題が発生してしまいました。 それは、お客さんが商品コード「ab」の商品を複数購入した場合でも、加算する送料は1000円だけにしなければならない事。 また商品コード「ab」や「cd」の商品を複数購入した場合は、2種類の商品コードを購入しているので、2000円を送料に加算するようにしなければなりません。 と言う事は、まずはカートに入っている商品コードの種類と商品数をカウントしなければならない気がします。 カート内の商品に「ab」が1個以上含まれていれば「ab_fee = 1000」、1つも含まれていなければ「ab_fee = 0」。 同じく「cd」が1つ以上含まれていれば「cd_fee = 1000」、「cd_fee = 0」。 そして、送料の計算は「deliv_fee = ab_free + cd_fee」と言う感じになると思います。 理論的には上記のような感じになると思いますが、これを実際に機能させようとすると、どのような記述をして良いのか分かりません。 if文を利用する事は分かるのですが、商品コードの有無を判別するのにも「 if($arrData['product_code'] = "ab") 」ではダメでした。 ご教授を頂けると助かります。 何卒、よろしくお願い致します。 |
seasoft |
投稿日時: 2009/8/16 10:11
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品コードで送料を操作するには? VB 系の言語のご経験がおありですかね?
PHP での等価の比較は「==」です。 http://www.php.net/manual/ja/language.operators.comparison.php
|
popo |
投稿日時: 2009/8/16 18:28
対応状況: −−−
|
長老 登録日: 2008/10/1 居住地: 投稿: 189 |
Re: 商品コードで送料を操作するには? アドバイスありがとうございます。
VB系の言語の知識は皆無です。 perlのif分をちょっと触れる程度しか知識がありません。 今度は、商品詳細ページを参考にして、「$arrData['product_code']」ではなく「$arrProductCode["product_code"]」にしてみましたが、やはりダメでした。 その他にも「$arrProducts[cnt].product_code」「$arrProducts.product_code」や「$arrProductsClass[cnt].product_code」「$arrProductsClass.product_code」も試して見ましたが、ダメでした。 どうやって商品コードを取得するのか、さっぱり分からない状態です。 商品コードの種類の数により送料を加算するには、if文を加えるだけ実現できるレベルではないと言う事でしょうか。 もう数時間も格闘していて、お手上げ状態になっています。 助け舟を頂けると嬉しく思います。 よろしくお願い致します。 |
seasoft |
投稿日時: 2009/8/17 0:19
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 商品コードで送料を操作するには? perl ですと「eq」だったと思います。
当該箇所(スコープ)において、変数がどのような内容を保持しているかを調査するには、var_dump 関数が有効です。 http://www.php.net/manual/ja/function.var-dump.php もしも、当該箇所で必要な情報を保持していない場合、保持している別のスコープから内容を引き継ぐか、DBに問い合わせるなどが必要になるかと思います。 組み合わせパターンにも依存するので、常にとは断言はできませんが、基本的に if 文での対応は可能です。ただし、商品コードの判定と、送料の加算の2段階の判定(if文)が最低限必要かと思います。
|
toshi-t |
投稿日時: 2009/8/17 0:45
対応状況: −−−
|
新米 登録日: 2009/8/6 居住地: 投稿: 6 |
Re: 商品コードで送料を操作するには? sfTotalConfirm内なら、
$objPage->arrProductsClass[0]['product_code']で商品コード $objPage->arrProductsClass[0]['quantity']で数量が取得できます。[0]の部分は、1つ目の商品ということです。 複数ある時は、$objPage->arrProductsClass[1](2つ目の商品),$objPage->arrProductsClass[2](3つ目の商品)となります。 |
popo |
投稿日時: 2009/8/17 16:44
対応状況: −−−
|
長老 登録日: 2008/10/1 居住地: 投稿: 189 |
Re: 商品コードで送料を操作するには? ご回答ありがとうございます。
下記の通りにしたら、1つ目の商品を判別して送料を追加する事ができるようになりました。 一歩前進しました(^-^) if($objPage->arrProductsClass[0]['product_code'] == "ab") { $arrData['deliv_fee']+= 1000; } else { $arrData['deliv_fee']+= 0; } 次に、カートの中に入っている商品の中から、商品コードが「ab」の商品がいくつあるのかカウントしなければなりません。 「count()」と言う関数があるみたいですが、何だかこれだけではダメなようで、その他のカウント方法が必要な気がします。 カートの中に複数入っている商品の中で、商品コード「ab」が1つ以上あれば送料に1000円を追加。 同じく「cd」が1つ以上あれば1000円追加。などのように、商品コードの種類の数だけカウントして爽涼に追加したいと思っています。 「arrProductsClass[0]['product_code'] == "ab"」の中の[0]を[1],[2],[3]などと1つ1つ数を増やして書いていくのも、またスマートではなく複雑になってしないますので、何か良いアイディアはないでしょうか。 御教授をお願い一足します。 |
(1) 2 3 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |