在查看产品配置的基础映像
接受的答案是一个有效的解决方案,但是,我宁愿叫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