Magento:在Checkout Shipping模块中获取产品的选定属性值

时间:2010-02-02 07:56:54

标签: magento attributes

在我的网站上,有些产品不在加利福尼亚州销售。在用户结账时,我必须进行验证,例如购物车是否有在加利福尼亚州销售的商品且用户的送货地址在加利福尼亚州,请阻止用户退房。

CA中的销售是使用“avl”属性从管理员端设置的。

这是我用来迭代购物车并检查属性

的代码

.....................
 $cart = Mage::getSingleton('checkout/session')->getQuote()->getAllVisibleItems();
       foreach ($cart as $_item){

           $_product = $_item->getProduct();
           //If atleast one product has availability status set to California, then set the flag and break.
           if($_product->getResource()->getAttribute('avl')->getFrontend()->getValue($_product) == 'NC'){
               $flag = true;
               break;
           }
......................

好吧,现在问题是我无法获得管理员端设置的'avl'值。

此代码位于本地// Checkout / Block / Onepage / Shipping.php

有关如何检索属性值的想法吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

要在结帐时获取产品属性,最简单的方法就是完全加载产品:

$_product = Mage::getModel('catalog/product')->load($_item->getProduct());
$_avl = $_product->getAvl();

加载产品当然有开销,但这是从购物车项目中获取属性值的最快方法。

答案 1 :(得分:0)

<?php $_item = $this->getItem()?>
<?php $_product= Mage::getSingleton('catalog/product')->load($_item->getProductId())?>
<?php echo $_product->getResource()->getAttribute('attribute_code')
      ->getFrontend()->getValue($_product); ?>
  

应用程序/设计/前端/ your_default / your_default /模板/结帐/购物车/项目/ defaul t.phtml