EC-CUBEをカスタマイズしてボリュームディスカウント機能を追加。EC-CUBEをカスタマイズしてボリュームディスカウント機能を追加。2010-07-26EC-CUBEをカスタマイズしてボリュームディスカウント機能を追加。CMS同じ商品なら、1個よりもまとめて大量に購入して頂いた方が、ネットショップの運営者として嬉しいものです。まとめて購入してもらう利点は客単価の増加など多々ありますが、ネットショップの場合、何と言っても発送の手間が減る事ではないでしょうか?1つの商品を100カ所に送るより、100個の商品を1カ所に送った方が全然楽ですからね。そんな「まとめ買い」を促進する「ボリュームディスカウント機能」というものがあります。購入数量に応じて自動で商品単価を変え、より多く購入した方が、商品の単価が安くなってお客様がお得になるという機能です。最近、かなり急ぎの案件でそんなボリュームディスカウント機能をEC-CUBEをカスタマイズして実装したのでご紹介したいと思います。修正するファイルを出来るだけ少なく、標準の機能を活用する。今回の案件は非常に時間が無く、もの凄い短期間で仕上げなければならなかったので、可能な限り変更するファイル数を減らす事を考えました。購入数量に応じて単価を変化させるには、商品情報が数量に応じた単価を情報として持っている必要があります。EC-CUBEではそんな情報は持っていませんが、「規格」という機能を使って、ひとつの商品IDに対して複数の価格情報を持たせる事が出来ます。「AというTシャツのブルーのLサイズ」といった商品指定が出来るのですが、今回はここに数量毎の単価を入れてしまいます。その為に、まずは「割引」という特別な規格を登録します。この「割引」規格の規格IDを特別な規格として、適当な名前を付けてデータベースのmtb_constantsというテーブルに登録します。このmtb_constantsは、登録した情報がEC-CUBEの中でPHPファイルやテンプレートの中で定数として使える便利なテーブルです。*1次に、この割引規格の規格分類として、「3個以上」「6個以上」を登録します。これらの規格分類はclasscategoryとしてデータベースに登録されます。ついでにこの特別な規格分類もmtb_constantsに登録しておきましょう。各商品の3個未満の時の価格は通常価格として商品登録時に設定したものを、そのまま使います。しないと、ボリュームディスカウントが無い商品など、商品登録等の作業が面倒になりますし、ボリュームディスカウント機能の実装自体も複雑になります。カートに入れるタイミングで単価を決める。次に、実際にフロント画面で購入数量に応じて単価を変える部分をカスタマイズします。EC-CUBEでカートに商品を入れる処理は、モバイルサイトでもPCサイトでもSC_CartSessionというクラスのaddProductというメソッドで行うのでココを変えちゃいます。addProductには引数として、product_id(商品ID)、classcategory_1(規格1)、classcategory_2(規格2)、quantity(数量)を渡してあげます。ここで数量がボリュームディスカウント対象の数量だったらdtb_products_classというテーブルを検索して、その数量の単価、classcategoryを使います。割引:3個以上」と表示され、割引された価格で表示されます。カート画面で数量の変更をした場合も自動で単価が変わる様に、SC_CartSessionのupQuantityとdownQuantityにも同じ処理を追加してあげます。これで、PCサイトでもモバイルサイトでもちゃんと購入数量に応じたボリュームディスカウントがいい感じで実装されました。実はカスタマイズしてグループディスカウント機能も足しました。「この商品とこの商品の中から3個以上買ったら割引」の様なグループディスカウント機能もカスタマイズして追加したのでもう少し複雑だったんですが、ほぼSC_CartSessionしかいじらずに済みました。効率良くEC-CUBEをカスタマイズする為には、EC-CUBEの細かい仕組みや、データベースのテーブル構造等を深く理解しておく必要があります。深くEC-CUBEを理解する為には、まず全ての機能を使ってみる事です。その機能がどう動いているのか、ソースコードを読み、データベースに登録される情報を確認します。EC-CUBEのカスタマイズの幅も広がると思いますので、是非一度やってみてください。*1:管理画面から値を設定する度にキャッシュファイルが生成されるので、サイトを表示させる度に定数を取得する為にデータベースにアクセスする様な事はありません。00:00EC-CUBEをカスタマイズしてボリュームディスカウント機能を追加。先日、EC-CUBE高速化カスタマイズサービスがEC-CUBEのパートナ...2010-02-02開封率90%以上!のメールを有効活用していますか?ネットショップを運営している方なら、どなたでもメルマガは発...2009-10-07EC-CUBEカスタマイズデモサイトにカテゴリテンプレート機能を追加しました。CUBEのEC-CUBEカスタマイズデモサイトに、商品一覧画面か...2009-09-01EC-CUBEカスタマイズデモサイトをバージョンアップしました。グルーポン系サイト乱立に乗っかってみる。(2)はてなブログをはじめよう!xross-cubeさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。