2013-05-15 75 views
3

我正在尋找一種方式來顯示產品的「估計交付」,方法是使用我製作的屬性「delivery」。Magento - 在購物車中顯示自定義屬性

到目前爲止,我已經成功地把這個在一起:

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

我加入這一塊:

模板/結帳/車/項目/ default.phtml - 線38間/ 39(Magento的版1.6.2)

這裏是從與代碼線35-49加入到H 2標籤default.phtml:

<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

使用單例將導致重複調用相同的對象,因此以前的對象數據將被覆蓋。

一旦你從singleton更改爲getModel你有一個每個產品的實例,所以不要在同一個實例上寫。

+0

謝謝你,這是偉大的信息對我來說! –

+0

剛剛使用$ this-> getItem() - > getProduct()時也會出現此問題...因此,使用getModel真的是這裏的解決方案。 +1爲了澄清原因! :) – conceptdeluxe

4

經過一番谷歌搜索之後,我發現這似乎很奏效 - 但我仍然不明白爲什麼,最大的區別是,如果有人想澄清它,我會非常高興。

這是工作的解決方案,它是如此簡單,但我不明白:

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

這不跳過的第一個產品?

1

應用程序/設計/前端/ {} YOURTEMPLATE /default/template/checkout/cart/item/default.phtml

過去這段代碼:

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