2015-12-06 148 views
2

我一直試圖在過去的一個小時內解決這個問題。希望你們能幫忙。我正在研究一個magento網站1.9.0.1,並試圖將目前在購物車中的產品顯示爲其他地方的小部件。我可以顯示產品名稱,價格,數量和總計。但是,我無法獲得產品圖片來顯示。顯示默認的magento佔位符圖像,而不是產品圖像。如何在購物車中顯示產品的縮略圖 - Magento

<?php 
$quote = Mage::helper('checkout')->getQuote(); 
foreach ($quote->getItemsCollection() as $item) { ?> 
<div class="cart-single"> 
    <div class="cart-content-image"> 
     <img src="<?php echo Mage::helper('catalog/image')->init($item, 'image')->resize(50, 50); ?>" alt="<?php echo $item->getName();?>" /> 
    </div> 
    <div class="cart-content-details"> 
     <?php 
      $maxLength = 50; 
      $productName = $item->getName(); 
      echo '<div class="cart-content-name-short">'.substr($productName, 0, $maxLength).'...</div>'; 
      echo '<div class="cart-content-name-full">'.$item->getName().'</div>'; 
      echo '<div class="cart-content-price">'. $this->helper('checkout')->formatPrice($item->getPrice(), 2).'</div>'; 
      echo '<div class="cart-content-qty">Qty : '. $item->getQty().'</div>'; 
     ?> 
    </div> 
</div> 
<?php } 
?> 

在這條線,我遇到的問題是:

這是代碼塊,我正與工作

<img src="<?php echo Mage::helper('catalog/image')->init($item, 'image')->resize(50, 50); ?>" alt="<?php echo $item->getName();?>" /> 

我已經搜索了幾個小時,並嘗試不同解決方案,但無法讓他們工作,所以我想我會顯示有問題的代碼。

幫助和建議表示讚賞。由於

修改代碼

<?php 
$quote = Mage::helper('checkout')->getQuote(); 
foreach ($quote->getItemsCollection() as $item) { ?> 
<div class="cart-single"> 
    <div class="cart-content-image"> 
     <img src="<?php echo Mage::helper('catalog/image')->init($item->getProduct(), 'image')->resize(50, 50); ?>" alt="<?php echo $item->getName(); ?>" /> 
    </div> 
    <div class="cart-content-details"> 
     <?php 
      $maxLength = 50; 
      $productName = $item->getName(); 
      echo '<div class="cart-content-name-short">'.substr($productName, 0, $maxLength).'...</div>'; 
      echo '<div class="cart-content-name-full">'.$item->getName().'</div>'; 
      echo '<div class="cart-content-price">'. $this->helper('checkout')->formatPrice($item->getPrice(), 2).'</div>'; 
      echo '<div class="cart-content-qty">Qty : '. $item->getQty().'</div>'; 
     ?> 
    </div> 
</div> 
<?php } 
?> 

回答

0

好吧終於得到了這個工作。網絡上有更多的環顧四周,感謝@ Robbie Averill給我一些想法。我遇到的問題是,我需要顯示的圖像進行的產品已經在這樣使用購物車:

$item->getProduct 

是不完全恢復的圖像的URL,只是給我的空白,因此默認Magento的縮略圖。所以我設法解決這個問題,可能不是最好的方法,但它的工作原理。對於我所用的所有購物車產品詳情:

$quote->getItemsCollection() as $item 

這讓我得到了產品名稱,價格和數量。但要獲得圖像,我必須獲得產品ID並使用它來獲取縮略圖。由於商店中的所有產品都是可配置產品,因此我不得不再添加2行來查找父級ID,然後將其用於縮略圖。通常情況下,您只需將其設置在管理端以使用父映像,但不適用於此小部件,並且我現在沒有正確的思路解決此問題。所以只需輸入代碼即可找到父代號。無論如何,代碼塊低於萬一任何人遇到這個問題,需要一些建立。

<?php 
$quote = Mage::helper('checkout')->getQuote(); 
foreach ($quote->getItemsCollection() as $item) { ?> 
<div class="cart-single"> 
    <div class="cart-content-image"> 
    <?php 
    $conid = $item->getProductId(); 
    $simpleProductId = $conid; 
    $parentIds = Mage::getResourceSingleton('catalog/product_type_configurable')->getParentIdsByChild($simpleProductId); 
    $product = Mage::getModel('catalog/product')->load($parentIds[0]); 
    ?> 
     <img src="<?php echo Mage::helper('catalog/image')->init($product, 'thumbnail')->resize(50, 50); ?>" alt="<?php echo $item->getName(); ?>" /> 
    </div> 
    <div class="cart-content-details"> 
     <?php 
      $maxLength = 50; 
      $productName = $item->getName(); 
      echo '<div class="cart-content-name-short">'.substr($productName, 0, $maxLength).'...</div>'; 
      echo '<div class="cart-content-name-full">'.$item->getName().'</div>'; 
      echo '<div class="cart-content-price">'. $this->helper('checkout')->formatPrice($item->getPrice(), 2).'</div>'; 
      echo '<div class="cart-content-qty">Qty : '. $item->getQty().'</div>'; 
     ?> 
    </div> 
</div> 
<?php } 
?> 
1

嘗試...->init($item->getProduct(), 'image')...的產品是車項目($item)的一個組件 - 見Mage_Sales_Model_Order_Item::getProduct()

Mage_Catalog_Helper_Image::init()方法預計Mage_Catalog_Model_Product的實例,但你會傳遞這是一個Mage_Sales_Model_Order_Item(或Mage_Sales_Model_Quote_Item)購物車中物品:

# File: app/code/core/Mage/Catalog/Helper/Image.php 
/** 
* Initialize Helper to work with Image 
* 
* @param Mage_Catalog_Model_Product $product 
* @param string $attributeName 
* @param mixed $imageFile 
* @return Mage_Catalog_Helper_Image 
*/ 
public function init(Mage_Catalog_Model_Product $product, $attributeName, $imageFile=null) 
{ 
    // ... 
} 

調整代碼應工作:

foreach ($quote->getItemsCollection() as $item) { ?> 
<div class="cart-single"> 
    <div class="cart-content-image"> 
     <img src="<?php echo Mage::helper('catalog/image')->init($item->getProduct(), 'image')->resize(50, 50); ?>" alt="<?php echo $item->getName(); ?>" /> 
    </div> 
    ... 
+0

謝謝羅比。我已更新我的代碼與更新的行。但是,仍然顯示縮略圖。我已經按照輸入的內容更新了修改後的代碼的第一篇文章。請讓我知道,如果我錯過了什麼,或者如果我需要添加一兩行。謝謝你的幫助。不勝感激。 – AlphaOne

+0

嘿@AlphaOne - 嘗試使用'thumbnail'而不是'image',即'init($ item-> getProduct(),'thumbnail')' –

+0

剛試過的'縮略圖'仍然給我看。在html中查看處理後的代碼時。看起來購物車中產品的圖像沒有被要求。或者如果它不是正確的路徑。似乎只是加載佔位符圖像。 – AlphaOne

相關問題