Magento为产品添加了自定义选项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Magento为产品添加了自定义选项相关的知识,希望对你有一定的参考价值。

我使用自定义选项为Magento产品添加了3个尺寸

4x5'4 , 5'4x7'8 ,7'8x 10

我想要不同尺寸的不同运费?

那可能吗?

答案

您可以执行一个扩展Mage_Shipping_Model_Carrier_Abstract的模型,并覆盖colectRates()方法,以检查此产品是否返回此项,如果该产品返回该项。在这里查看更多:http://www.magentocommerce.com/wiki/5_-_modules_and_development/shipping/create-shipping-method-module

或者只是改变magento核心法师运输模型载体来做到这一点。这里有提示:您应该使用 app code core Mage Shipping Model Carrier Flatrate.php,并在将ShippingPrice放入方法之前转到collectRates函数尝试类似的东西:

 foreach ($request->getAllItems() as $item) {

            if ($item->getProduct()->getData('size') == "4x5'4"){
                $shippingPrice += 1.00;  
            }elseif()....
        }
另一答案

谢谢Guerra

我能够解决这个问题

我添加了这个函数 app code core Mage Shipping Model Carrier Flatrate.php来获取选项

 function getProductOptions(&$item){  $options = array();  if ($optionIds = $item->getOptionByCode('option_ids')) {      $options = array();      foreach (explode(',', $optionIds->getValue()) as $optionId) {          if ($option = $item->getProduct()->getOptionById($optionId)) {
          $quoteItemOption = $item->getOptionByCode('option_' . $option->getId());

          $group = $option->groupFactory($option->getType())
              ->setOption($option)
              ->setQuoteItemOption($quoteItemOption);

          $options[] = array(
              'label' => $option->getTitle(),
              'value' => $group->getFormattedOptionValue($quoteItemOption->getValue()),
              'print_value' => $group->getPrintableOptionValue($quoteItemOption->getValue()),
              'option_id' => $option->getId(),
              'option_type' => $option->getType(),
              'custom_view' => $group->isCustomizedView()
          );
      }
  }  } if ($addOptions = $item->getOptionByCode('additional_options')) {
  $options = array_merge($options, unserialize($addOptions->getValue()));  } return $options;} 

然后我为这个大小制作一个数组

foreach ($request->getAllItems() as $item) {
            $option =  $this->getProductOptions($item);
                foreach($option as $opt){
                    if($opt['value']=="5'4" x 7'8""){
                        $shipExtra[] = '10.99';
                    }
                    else if($opt['value']=="7'8" x 10'9""){
                        $shipExtra[] = '10.99';
                    }

                }

然后在最后我有

            $shipExtra = array_sum($shipExtra);
if($shipExtra!=""){
    $shippingPrice += $shipExtra;}

这对我行得通 :)

感谢您指导我找到合适的档案

以上是关于Magento为产品添加了自定义选项的主要内容,如果未能解决你的问题,请参考以下文章

Magento - 自定义选项不会更新可配置产品的价格

Magento 可配置选项

Magento 2:自定义属性不起作用

Magento2 为产品图片添加动态背景

用于添加产品愿望清单的 Magento 自定义 API

使用自定义文本将项目添加到 Magento 购物车