> フロント機能 > カートに入っている商品種別IDを参照し、商品種別毎に送料無料設定 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
bysk |
投稿日時: 2016/10/5 20:19
対応状況: −−−
|
半人前 登録日: 2016/5/26 居住地: 投稿: 22 |
カートに入っている商品種別IDを参照し、商品種別毎に送料無料設定 [EC-CUBE] 3.0.9
[レンタルサーバ] AWS [OS] Mac OS X Yosemite 10.10.5 [PHP] PHP 5.3.29 [データベース] MySQL 5.5.40 [ブラウザ] GoogleChrome [導入プラグインの有無] GmoPaymentGateway、おすすめ商品管理プラグイン、商品お問い合わせ、商品レビュープラグイン、売上ランキング、最近チェックした商品、SEO管理プラグイン どうもお世話になっております、下記の件で困っております。 どうぞ宜しくお願い致します。 [やりたい事] 現在カートに入っている商品種別IDを参照して、商品種別毎に送料無料条件を変更したい。 送料無料設定をしているメソッドはこちらのフォーラムのおかげで理解できたのですが、 $Ordeから商品種別IDの呼び方がわからず行き詰まっております.. $productTypesあたりかなと思っているのですがうまく機能してくれません。 【対象ファイル】 /src/Eccube/Service/ShoppingService.php 【対象ソース】 public function setDeliveryFreeAmount(Order $Order) { // 配送料無料条件(合計金額) $deliveryFreeAmount = $this->BaseInfo->getDeliveryFreeAmount(); if (!is_null($deliveryFreeAmount)) { // 合計金額が設定金額以上であれば送料無料 if ($Order->getSubTotal() >= $deliveryFreeAmount) { $Order->setDeliveryFeeTotal(0); 下記の様なイメージです。 【例】 カートに入っている商品種別IDが1の場合→10,000円以上で送料無料 カートに入っている商品種別IDが2の場合→5,000円以上で送料無料 どうかお力をお貸し頂ければ幸いです。 何卒、宜しくお願い致します。 |
umebius |
投稿日時: 2016/10/5 20:51
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: カートに入っている商品種別IDを参照し、商品種別毎に送料無料設定 ShoppingServiceから呼ぶなら
$this->cartService->getProductTypes();でProductTypeとれないですかね?
|
bysk |
投稿日時: 2016/10/5 21:16
対応状況: −−−
|
半人前 登録日: 2016/5/26 居住地: 投稿: 22 |
Re: カートに入っている商品種別IDを参照し、商品種別毎に送料無料設定 umebius様
お世話になっております、度々ありがとうございます。 下記の通り記述して商品種別IDが1で1000円以上の商品をカートに入れてみましたが送料は0になりませんでした。 /** * 配送料無料条件(合計金額)の条件を満たしていれば配送料金を0に設定 * * @param Order $Order */ public function setDeliveryFreeAmount(Order $Order) { // 配送料無料条件(合計金額) $productTypeId = $this->cartService->getProductTypes(); if ($productTypeId == 1) { $deliveryFreeAmount = 1000; } if (!is_null($deliveryFreeAmount)) { // 合計金額が設定金額以上であれば送料無料 if ($Order->getSubTotal() >= $deliveryFreeAmount) { $Order->setDeliveryFeeTotal(0); // お届け先情報の配送料も0にセット $shippings = $Order->getShippings(); foreach ($shippings as $Shipping) { $Shipping->setShippingDeliveryFee(0); } } } } お手数ですがご教示頂ければ幸いです。 何卒、宜しくお願い致します。 |
umebius |
投稿日時: 2016/10/5 21:43
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: カートに入っている商品種別IDを参照し、商品種別毎に送料無料設定 $productTypeId = $this->cartService->getProductTypes();
と書かれていますが、getProductTypesの戻り値は配列です。 中身は\Eccube\Entity\Master\ProductTypeというオブジェクトです。 なのでif ($productTypeId == 1) {はfalseになりますね。 すみません、ちょっと今他の部分は確認できてないです。 |
bysk |
投稿日時: 2016/10/5 22:16
対応状況: −−−
|
半人前 登録日: 2016/5/26 居住地: 投稿: 22 |
Re: カートに入っている商品種別IDを参照し、商品種別毎に送料無料設定 ご返信ありがとうございます。
商品種別IDを$productTypeIdに代入して下記のif文の様に、 商品種別IDが1だった場合$deliveryFreeAmountに1000を代入したいのすが.. if ($productTypeId == 1) { $deliveryFreeAmount = 1000; } php初心者でして1から10まで聞いてしまい申し訳ございません。 可能であれば引き続きご教示頂ければ幸いです。 宜しくお願い致します。 |
umebius |
投稿日時: 2016/10/5 22:35
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: カートに入っている商品種別IDを参照し、商品種別毎に送料無料設定 こんな感じでしょうか
$productTypes = $this->cartService->getProductTypes(); if (count($productTypes)) { foreach($productTypes as $ProductType){ if($ProductType->getId()==1){ $deliveryFreeAmount = 1000; break; } } } |
bysk |
投稿日時: 2016/10/5 22:51
対応状況: −−−
|
半人前 登録日: 2016/5/26 居住地: 投稿: 22 |
Re: カートに入っている商品種別IDを参照し、商品種別毎に送料無料設定 umebius様
出来ました! 大変助かりました、誠にありがとうございます! ちなみに複数条件設定したい場合は下記の様に、同じ記述を続けるしかないでしょうか? $productTypes = $this->cartService->getProductTypes(); if (count($productTypes)) { foreach($productTypes as $ProductType){ if($ProductType->getId()==1){ $deliveryFreeAmount = 1000; break; } } } if (count($productTypes)) { foreach($productTypes as $ProductType){ if($ProductType->getId()==2){ $deliveryFreeAmount = 2000; break; } } } if (count($productTypes)) { foreach($productTypes as $ProductType){ if($ProductType->getId()==3){ $deliveryFreeAmount = 800; break; } } } |
umebius |
投稿日時: 2016/10/5 23:10
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: カートに入っている商品種別IDを参照し、商品種別毎に送料無料設定 こんな感じでしょうか?
$productTypes = $this->cartService->getProductTypes(); $freeAmountArr = array( 1 => 1000, 2 => 2000, 3 => 800, ); if (count($productTypes)) { foreach($productTypes as $ProductType){ if(array_key_exists($ProductType->getId(), $freeAmountArr)){ $deliveryFreeAmount = $freeAmountArr[$ProductType->getId()]; break; } } } |
bysk |
投稿日時: 2016/10/6 10:57
対応状況: 解決済
|
半人前 登録日: 2016/5/26 居住地: 投稿: 22 |
Re: カートに入っている商品種別IDを参照し、商品種別毎に送料無料設定 umebius様
お世話になっております。 頂いたソースで希望通りの設定が完了しました。 お陰様で大変助かりました。 誠にありがとうございます! |
umebius |
投稿日時: 2016/10/6 11:59
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: カートに入っている商品種別IDを参照し、商品種別毎に送料無料設定 よかったです!
フレームワーク使ってるので独特なオブジェクトがでてきてけっこう悩みますよね。
|
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |