###前提・実現したいこと
冷蔵便・冷凍便拡張プラグインDeliveryCoolにて
冷蔵便・冷凍便の商品に対して、購入ページにて
その冷蔵便・冷凍便がいくらなのか表示したい
当方phpは簡単な通販サイト構築程度の知識はありますが
silex,symphonyは理解しておりません。
ECCUBE3.0.13で上記に記載ある有料のプラグインをカスタマイズしようとしております。
プラグイン中のphpで冷凍便か冷蔵便の判断をし、フラグを付けたはいいものの、本体のtwigでその変数を判断するためにはどうすればいいのかわかりません。
###該当のソースコード
public function createTwig(TemplateEvent $event) { $app = $this->app; print "kook"; $parameters = $event->getParameters(); $Order = $parameters['Order']; $BaseInfo = $app['eccube.repository.base_info']->get(); $shippingDeliveryFeeTotal = 0; $productDeliveryFeeTotal = 0; $maxShippingFee = 0; $maxRegularFee = 0; $Shippings = $Order->getShippings(); foreach ($Shippings as $Shipping) { $checkDelivType = $app['eccube.deliverycool.service.util']->getShippingTypes($Shipping); foreach ($checkDelivType as $shippingType => $coolShipmentItems) { $shippingType = $app['eccube.deliverycool.service.util']->convertShippingType($shippingType); $deliveryFee = $Shipping->getDeliveryFee(); $fee = 0; if($deliveryFee){ $fee = $deliveryFee->getFee(); } $addFee = 0; if($shippingType == 1){ $coolFee = $app['eccube.deliverycool.repository.delivery_cool_fee']->findOneBy(array('Delivery' => $Shipping->getDelivery(), 'Pref' => $Shipping->getPref())); if($coolFee){ $addFee = $coolFee->getCoolFee(); } //冷凍便 $shippingType == 2 }elseif($shippingType == 2){ $coldFee = $app['eccube.deliverycool.repository.delivery_cold_fee']->findOneBy(array('Delivery' => $Shipping->getDelivery(), 'Pref' => $Shipping->getPref())); if($coldFee){ $addFee = $coldFee->getColdFee(); } } if ($maxShippingFee < ($fee + $addFee)) $maxShippingFee = ($fee + $addFee); if ($maxRegularFee < $fee) $maxRegularFee = $fee; $Shipping->setShippingDeliveryFee($fee + $addFee); $shippingDeliveryFeeTotal += ($fee + $addFee); $shipping_cold = 0; //echo $shipping_cold ; if (!is_null($BaseInfo->getOptionProductDeliveryFee()) && $BaseInfo->getOptionProductDeliveryFee() == Constant::ENABLED) { foreach($coolShipmentItems as $coolShipmentItem){ $productDeliveryFeeTotal = $coolShipmentItem->getProductClass()->getDeliveryFee() * $coolShipmentItem->getQuantity(); } } } } $isFree = false; $deliveryFreeAmount = $BaseInfo->getDeliveryFreeAmount(); if (!is_null($deliveryFreeAmount)) { if ($Order->getSubTotal() >= $deliveryFreeAmount) { $isFree = true; } } $deliveryFreeQuantity = $BaseInfo->getDeliveryFreeQuantity(); if (!is_null($deliveryFreeQuantity)) { if ($app['eccube.service.order']->getTotalQuantity($Order) >= $deliveryFreeQuantity) { $isFree = true; } } if(!$isFree && $app['eccube.deliverycool.service.util']->checkInstallPlugin('CustomerRank','1.2.2')){ $isFree = $app['eccube.customerrank.service.util']->checkDeliveryFree($Order); } if(!$isFree && $app['eccube.deliverycool.service.util']->checkInstallPlugin('DeliveryFreeProduct','1.0.2')){ $isFree = $app['eccube.deliveryfreeproduct.service.util']->checkDeliveryFree($Order); } if($isFree){ $method = $app['eccube.deliverycool.service.util']->getConfig('method'); if($method == 1){ $shippingDeliveryFeeTotal -= $maxShippingFee; }elseif($method == 2){ $shippingDeliveryFeeTotal -= $maxRegularFee; }else{ $shippingDeliveryFeeTotal = 0; $productDeliveryFeeTotal = 0; } } $deliveryFeeTotal = $productDeliveryFeeTotal + $shippingDeliveryFeeTotal; $Order->setDeliveryFeeTotal($deliveryFeeTotal); $total = $Order->getSubTotal() + $Order->getCharge() + $Order->getDeliveryFeeTotal(); $Order->setTotal($total); $Order->setPaymentTotal($total); $Order->setSippingType($shipping_cold); $parameters['Order'] = $Order; $event->setParameters($parameters); $plgBaseinfo = $app['eccube.deliverycool.repository.base_info']->get(); if($plgBaseinfo->getValue() == Constant::DISABLED){ $source = $event->getSource(); if(preg_match('/\{%\sif\sBaseInfo\.optionMultipleShipping\s%\}/',$source, $result)){ $search = $result[0]; $replace = '{% if BaseInfo.optionMultipleShipping != '. Constant::ENABLED .'%}'; $source = str_replace($search, $replace, $source); } $event->setSource($source); } }
この中の$shippingTypeをtwigに渡したい。
twigはeccube本体のshoppingのindex.twigです。
回答2件
あなたの回答
tips
プレビュー