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

时间:2016-12-23 13:54:52

标签: php magento

您好,对于Magento网站,我需要在购物车中加载自定义属性。

我使用getmodel函数加载项目。但我不知道我是如何加载属性的。也许我没有正确配置属性。我在产品列表中启用了“是”。 de属性代码是'staffel_percentage'。它只是一个常规字符串

当我更改每件产品的价格时,它不会改变小计,也许这是因为我们已经在网站的其他部分更改了产品的价格?

也许是在这件事上?我使用这个事件:controller_action_layout_render_before。

这是我用于观察者的代码

$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 个答案:

答案 0 :(得分:0)

您需要在第一个if语句后立即加载产品

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

然后在下一行之后,您可以添加一些将出现在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.

如果您的产品为自定义属性设置了值,那么您可以像这样设置

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

至于价格变动,不确定如何设定价格。您需要设置正数或负数,以便在目录&gt;中的父产品配置页中找到的字段中添加或减去价格。产品&gt;您的产品&gt;相关产品。

请参阅this image了解该部分的内容。