dpj96988 2016-12-23 13:54
浏览 23
已采纳

在购物车Magento中加载自定义属性

Hi for a Magento website i need to load a custom attribute in the shopping cart.

i use getmodel function to load the items. but i have no clue how i load the attribute. maybe i haven't configure the attribute right. i have enabled yes for enable on product listing. de attribute code is 'staffel_percentage'. it is just a regular string

also when i change the price per product it doesn't change the subtotal maybe this is because we already change the price for the product on the rest of the website?

maybe it is in the event? i use this event: controller_action_layout_render_before.

this is the code in observer i use for it

$cart = Mage::getModel('checkout/cart')->getQuote();                            // Gets the collection of checkout 
        foreach ($cart->getAllItems() as $item) {                                               // adds all items to $item and does the following code for each item

            if ($item->getParentItem()) {                                                       // If items is part of a parent
            $item = $item->getParentItem();                                                     // Get parentItem;
            }
            //echo 'ID: '.$item->getProductId().'<br />';

            $percentage = 80;// init first percentage

            $quantity = $item->getQty(); //quantity

            //$staffelstring = loadattribute//loads attribute

            //gives the right percentage per quantity 
            //$staffelarray = explode(';', ^);
            //foreach($staffelarray as $staffels){
                //$stafel = explode(':', $staffels);
                //if($quantity >= $stafel[0]){
                    //$percentage = $Stafel[1];
                //}
            //}


            $currency = Mage::app()->getStore()->getCurrentCurrencyRate();                      // Currencyrate that is used currently
            $specialPrice = (($this->CalculatePrice($item) * $currency)* $percentage) / 100;                            //New prices we want to give the products

            if ($specialPrice > 0) {                                                            // Check if price isnt lower then 0
                $item->setCustomPrice($specialPrice);                                           //Custom Price will have our new price
                $item->setOriginalCustomPrice($specialPrice);                                   //Original Custom price will have our new price, if there was a custom price before
                $item->getProduct()->setIsSuperMode(true);                                      //set custom prices against the quote item
                }
            }
  • 写回答

1条回答 默认 最新

  • dongqiaogouk86049 2016-12-23 17:09
    关注

    You need to load the product right after your first if statement

    $product = Mage::getModel('catalog/product')->load($item->getId()); // may be $item->getProductId() instead here
    

    Then on the next line after that you can add some logging statements that will appear in var/log/system.log

    Mage::log($product->getData()); // this will output all of the product data and attributes. You will see your custom attribute value here if it is set on this product.
    

    If there is a value set for your product for your custom attribute then you can get it like this

    $value = $product->getData('staffel_percentage');
    

    As for the prices changing, not sure how you have the prices set up. You need to set a positive or negative number to add or subtract from the price in the fields found in the parent product configuration page in Catalog > Products > Your product > Associated Products.

    See this image for what the section looks like.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
  • ¥15 机器人轨迹规划相关问题
  • ¥15 word样式右侧翻页键消失