> プラグイン > 同じ商品をカートに入れた時、まとめずに分けて扱いたい |
プラグイン
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
hitomi2 |
投稿日時: 2017/1/30 11:31
対応状況: −−−
|
半人前 登録日: 2016/11/30 居住地: 投稿: 21 |
同じ商品をカートに入れた時、まとめずに分けて扱いたい 3.0.13です。
お世話になっております。 同じ商品を2個以上カートに入れると、それ以降は「数量:2〜」として扱われると思います。これを別商品のように区別して扱うにはどのような方法があるでしょうか。 商品ID以外に、カート内カート以降で個別に識別するプロパティは無いでしょうか。 Twigに渡される配列か変数か何かで識別できたら助かるのですが。 意図としましては、商品詳細ページにカスタム注文内容をテキスト入力させるフォームをプラグインで実現しようとしています。複数商品を一度にカートに投入した場合は全部同じ情報を付与していいのですが、1個ずつ違う注文内容を付与してカートに入れたときに、まとまってしまうところをどう処理するか悩んでいます。 初心者のため、まだフォームを設置できたばかりで、単品でもその入力内容をcart以降に渡す事さえできていないのですが・・・。 何かヒント、スマートな方法がありましたらご教授よろしくお願いいたします。 |
468 |
投稿日時: 2017/1/30 17:55
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 同じ商品をカートに入れた時、まとめずに分けて扱いたい /src/Eccube/Service/CartService.php内で色々とカートに関する処理が記述されていますので、
このソースを色々と書き換えていけば、カートに格納される単位を変更するのは実現できそうな気はしますが、 かなり大変なカスタマイズになりそうです。 (送料計算や在庫計算などもチェックしないといけないと思いますし、受注明細データへの影響もあるかと思います) 注文内容をカートに投入するよりも注文画面のお問い合わせ欄(dtb_order.message)に何か入力させるようにしたほうが良いのではないかと思います。 (少し工夫しないと購入者に使いづらいUIになってしまうかもしれませんが・・・)
|
hitomi2 |
投稿日時: 2017/2/1 0:12
対応状況: −−−
|
半人前 登録日: 2016/11/30 居住地: 投稿: 21 |
Re: 同じ商品をカートに入れた時、まとめずに分けて扱いたい シロハチ様
度々アドバイス頂きましてありがとうございます。 /src/Eccube/Service/CartService.php見てみました。 現Verでは複数配送先の機能があるので、もしかして最初から分割して取り出せる仕様かも!と期待しましたが、おっしゃるように私にはまだ難しいようでした。おっしゃるように、dtb_order.messageを利用したいと思います。 ただ、どうしても最初のほうに出してほしいと言われているので、 せめてカート画面でカートに出ている商品に対して その商品数分のフォームを出して、それから受け取った内容をdtb_order.messageにくっつけて送るようにしたいと思います。 それで、今カート内にある商品情報の取得したいのですが、 $Cart = $app['eccube.service.cart']->getCart(); $CartItems = $Cart->getCartItems(); まではわかったものの、その先の記述で躓いてしまいました。 $CartItems[int]['quantity']でその単品の個数など取得できましたが、 $CartItems[int]['Product']を入れてもnullですし、商品名や商品ID等を取得できません。 基本から理解が足りないみたいです。 すみませんが、カート内の商品のProductの情報を得る方法ご教授頂けないでしょうか。 よろしくお願い致します。 |
hitomi2 |
投稿日時: 2017/2/1 0:35
対応状況: −−−
|
半人前 登録日: 2016/11/30 居住地: 投稿: 21 |
Re: 同じ商品をカートに入れた時、まとめずに分けて扱いたい シロハチ様
vaer_dumpした情報をよく確認したら、これで取得することができました。 $app = $this->app; $Cart = $app['eccube.service.cart']->getCart(); $CartItems = $Cart->getCartItems(); foreach( $CartItems as $item){ echo $item['quantity']; //数量 echo $item['object']['Product']['id']; //ID echo $item['object']['Product']['name']; //商品名 } ありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |