在查看產品配置的基礎映像
接受的答案是一個有效的解決方案,但是,我寧願叫getUsedProductCollection()直接我認爲這樣更有效率。 getUsedProductIds()最終調用getUsedProductCollection(),同時添加多個屬性,遍歷集合,挑選並返回簡單的產品ID。所以最終這意味着我們需要多個循環,我們只需要一個循環,再加上比我們需要的東西更多的東西。
因此,假設我們正在使用Magentos catalog/product/view/media.phtml模板的副本。我們會更換線36 & 37本:
$baseImage = $_product->getImage();
if($_product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE){
$simpleCollection = $_product->getTypeInstance()->getUsedProductCollection($_product)
->addAttributeToSelect('image')
// Optionally:
//->addAttributeToSelect('small_image')
//->addAttributeToSelect('thumbnail')
->addFieldToFilter('image', array('notnull'=>true))
->addFilterByRequiredOptions();
// Filter out all child products that are out of stock
Mage::getSingleton('cataloginventory/stock')
->addInStockFilterToCollection($simpleCollection);
if($simpleCollection->getSize()))
$baseImage = $simpleCollection->getFirstItem()->getImage();
}
?>
<?php if ($baseImage != 'no_selection' && $baseImage): ?>
這樣,我們也有情況下沒有可用簡單的產品的後備其實有自己的「基本鏡像」。
然後在原來的線40,我們只需要添加$ baseImage爲Mage_Catalog_Helper_Image的)第三個參數::初始化(:
[...]$this->helper('catalog/image')->init($_product, 'image', $baseImage)[...]
和任選的,我們可以用同樣的$ simpleCollection列出所有簡單產品圖片以縮略圖的形式,如果我們喜歡的是:
<?php foreach ($simpleCollection as $_simple): ?>
<li>
<img src="<?php echo $this->helper('catalog/image')->init($_simple, 'thumbnail', $_simple->getImage())->resize(56); ?>" width="56" height="56" />
</li>
<?php endforeach; ?>
配置的小圖片在產品列表
當我第一次看到這個問題時,我想它是要求在產品列表中顯示下一個可用的兒童產品的「小圖片」。由於這個問題實際上並不明確,所以對這種可能的解釋至少加上一個簡短的答案可能對那些正好在尋找那個人的人有所幫助。
在產品列表中,我們不希望加載每個可配置的簡單集合,只需要獲得一個產品圖像。當我被要求準備一個可能的解決方案時,我選擇爲可配置(和blunde)產品創建一個新產品屬性,該產品存儲其可用子產品的ID。我添加了股票事件觀察員,以便在鏈接的子產品缺貨時更新此值。
既然我們已經有了一個可以接受的答案,我認爲沒有必要詳細說明這一點。不過,對於這個草稿感興趣的人,我已經上傳了here。
我認爲你必須指定一個可配置產品的圖像。我使用帶有簡單配置產品擴展的Magento 1.8.1,當用戶選擇特定的簡單產品時,將圖像更新爲該產品的圖像。我不知道後來的版本是如何處理的。 – PedroKTFC