Magento - 在购物车中显示自定义属性

时间:2013-05-15 15:20:29

标签: php magento

我一直在寻找一种方法来显示"估计交付"通过使用属性'交付'我做了。

到目前为止,我已经成功地将其整合在一起:

<?php $delivery= Mage::getSingleton('catalog/product')->load($this->getProduct()->getId())->getAttributeText('Delivery'); ?>
            <?php if(isset($delivery)){
                echo $delivery;
                }
                ?>

我已将这篇文章添加到:

template / checkout / cart / item / default.phtml - 第38/39行(Magento版本1.6.2)

这是第35-49行的default.phtml,代码添加到h2标记:

   <h2 class="product-name">
    <?php $_item = $this->getItem()?>
        <?// Delivery - Script ?>
        <?php $_product= Mage::getSingleton('catalog/product')->load($_item->getProductId()) ?>
        <?php $delivery= Mage::getSingleton('catalog/product')->load($this->getProduct()->getId())->getAttributeText('Delivery'); ?>
            <?php if(isset($delivery)){
                echo $delivery;
                }
                ?>      
    <?php if ($this->hasProductUrl()):?>
        <a href="<?php echo $this->getProductUrl() ?>"><?php echo $this->htmlEscape($this->getProductName()) ?></a>
    <?php else: ?>
        <?php echo $this->htmlEscape($this->getProductName()) ?>
    <?php endif; ?>
    </h2>

问题是,添加到购物车的第一个产品被跳过,它总是显示属性未设置,但第二个,第三个和其他产品添加到购物车,效果很好,显示他们的交货日期很好。

从这里开始,我不确定如何继续?

2 个答案:

答案 0 :(得分:4)

经过一些谷歌搜索,我发现了这一点,这似乎有效 - 但我仍然看不出原因,最大的区别是,如果有人想澄清它,我会非常高兴。

这是工作解决方案,它很简单,但我不明白:

<?php
$custom = Mage::getModel('catalog/product')->load($_item->getProductId());
echo $custom->getAttributeText('delivery');
?>

这不会跳过第一个产品吗?

答案 1 :(得分:4)

使用单例将导致重复调用相同的对象,因此先前的对象数据将被覆盖。

从singleton更改为getModel后,每个产品都有一个实例,所以不要在同一个实例上写过。