0

いくつかのカスタム オプション セットに基づいて価格を変更しようとしています。したがって、バックエンドで設定されたデフォルト値ではなく、顧客が入力した値を取得しようとしています。これを行うには、で使用されるイベントをcatalog_product_get_final_price使用していMage_Bundle_Model_Product_Priceます。次のオブザーバーを登録しました。

public function observer_callback($evt_obs)
{
    $event = $evt_obs->getEvent();
    $data  = $event->getData();
    /* @var $collection Mage_Catalog_Model_Resource_Product_Collection */
    $collection = $data['collection'];

    $items = $collection->getItems();

    /* @var $item Mage_Catalog_Model_Product */
    foreach ($items as $item) {
        if ( $item->getName() ==  'Bundel Test2') {

            $options = $item->getCustomOptions();

            /* @var $option Mage_Catalog_Model_Product_Option */
            foreach ($options as $option) {
                // Here I'm trying to get the value given by the user/customer
                var_dump($option->getData());
            }

        }
    }
    return $this;
}

バンドルタイプからのカスタムオプションです。したがって、製品を構成することはできません。私はmagentoが初めてなので、おそらく何かが欠けています。

誰でも私を助けることができますか?

4

1 に答える 1

0

このコードが役立つことを願っています:

public function productFinalPrice($observer){
     $product    = $observer->getEvent()->getProduct();

     $productType=$product->getTypeID();

     if($productType == 'your_product_type')
     {

        $option = $product->getCustomOptions();
        $searchedOption = null;  

        //search for your option;
        foreach ($product->getOptions() as $o) {

            if($o->getTitle()=="your_attribute_title" && $o->getType()=="your_type_of_option(eg. area"){
                $optionId = $o->getOptionId();//got your searched optionId
                break;
            }
        }


        foreach($option as $key => $o) {
            if($key == "option_".$optionId) {
                $searchedOption = $o;
               //here you get the option object with the values in it
            }
        }


        $articleNumber = $searchedOption->getData('value'); // getthe value of your option


            //calculate final price like you need it
            $product->setFinalPrice($finalPrice);
     }  
     return $this;     
}

よろしくお願いします

于 2013-03-08T12:04:59.410 に答える