Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Magento-在购物车中显示自定义属性_Php_Magento - Fatal编程技术网

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

Php Magento-在购物车中显示自定义属性,php,magento,Php,Magento,我正在寻找一种方法,通过使用我创建的属性“delivery”来显示产品的“预计交付量” 到目前为止,我已成功地将以下内容组合在一起: <?php $delivery= Mage::getSingleton('catalog/product')->load($this->getProduct()->getId())->getAttributeText('Delivery'); ?> <?php if(isset($delivery)

我正在寻找一种方法,通过使用我创建的属性“delivery”来显示产品的“预计交付量”

到目前为止,我已成功地将以下内容组合在一起:

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

我已将此部分添加到:

模板/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>

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


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

在谷歌搜索之后,我找到了这个,它似乎是有效的-但我仍然不明白为什么,以及最大的区别是什么,如果有人想澄清它,我将非常高兴

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

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


这不会跳过第一个产品吗

使用singleton将导致重复调用同一对象,因此以前的对象数据将被覆盖


从singleton更改为getModel后,每个产品都有一个实例,因此不会在同一个实例上过度编写。

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}(); ?>


谢谢,这对我来说是个好消息!仅使用$This->getItem()->getProduct()时也会出现此问题。。。因此,使用getModel确实是这里的解决方案+1澄清原因!:)