3

我正在寻找一种方法来使用我制作的属性“交付”来显示产品的“预计交付”。

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

<?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>

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

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

4

3 回答 3

4

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

这是可行的解决方案,它很简单,但我不明白:

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

这不跳过第一个产品?

于 2013-05-15T16:08:56.810 回答
4

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

一旦您从单例更改为 getModel,您就有了每个产品的实例,因此不会在同一个实例上重写。

于 2013-05-15T16:34:47.087 回答
1

应用程序/设计/前端/{YOURTEMPLATE}/default/template/checkout/cart/item/default.phtml

过去这段代码:

<?php $_item = $this->getItem(); ?>
<?php $_product = $_item->getProduct()->load(); ?>
<?php $_product->get{YOUR ATTRIBUT HERE}(); ?>
于 2015-09-10T22:01:02.087 回答