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


Magento - show custom attribute in cart

我正在寻找一种方法,通过使用我所做的属性'delivery'来显示产品的"估计交货"。

到目前为止,我已经设法把这些放在一起:

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

我已将这段添加到:

模板/付款/车/项目/违约。php -在第38/39行之间(Magento Version 1.6.2)

这是默认值。从php第35-49行添加到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>

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

从这里,我不确定如何进行?

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

一旦你从singleton改变为getModel,你就有了每个产品的实例,所以不会在同一个实例上重复写。

经过一些谷歌搜索,我发现了这个,这似乎是有效的-但我仍然看不出为什么,和什么大的区别是,如果有人想澄清它,我会很高兴。

这是有效的解决方案,它是如此简单,但我不明白:

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

这不会跳过第一个产品?

app/design/frontend/{YOURTEMPLATE}/default/template/checkout/cart/item/default.phtml

通过此代码:

<?php $_item = $this->getItem(); ?>
<?php $_product = $_item->getProduct()->load(); ?>
<?php $_product->get{YOUR ATTRIBUT HERE}(); ?>