如何将简单产品图像用于可配置产品图像?

时间:2017-04-04 06:49:23

标签: php magento magento-1.9

可配置产品是否可以使用简单的产品图像。例如,我有一个可配置的产品,其中有4个简单的产品,具有不同的图像和库存。所以,可配置的产品应该选择其中一个库存中的简单产品图像。如果这个简单的产品缺货,那么可配置产品应该自动选择不同的简单产品图像。 我需要此功能,因为有时客户无法使用可配置产品中显示的颜色选项。

Devs,或者建议我使用一些插件,或者是否可以通过任何代码或任何magento配置或产品中的某种更改来实现。另外,请告诉我这是否可行。 每一个建议都对我有价值,谢谢。

3 个答案:

答案 0 :(得分:0)

在media.phtml文件(app\design\frontend\{{template name}}\default\template\catalog\product\view\media.phtml)

上使用以下代码
<?php if($_product->getTypeId() == "configurable"){
    $_configurable = $_product->getTypeInstance()->getUsedProductIds();
    foreach ($_configurable as $_config){
        $_simpleproduct = Mage::getModel('catalog/product')->load($_config);
        $stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_simpleproduct);
        if($stock->getQty() && $stock->getIs_in_stock()){
            foreach ($_simpleproduct->getMediaGalleryImages() as $image) {
                echo '<img src="'.$image->getUrl().'" /><br>';
            }
            break;          
        }
}} ?>

答案 1 :(得分:0)

产品视图中

可配置的基本图片

接受的答案是一个有效的解决方案,但是,我更喜欢直接拨打getUsedProductCollection(),因为我认为这样更有效。 getUsedProductIds()最终调用getUsedProductCollection(),在执行此操作时添加多个属性,遍历集合,挑选并返回简单的产品ID。所以最后这意味着我们采用多个循环,我们只需要一个,加上比我们需要更多的东西。

因此,我们假设我们正在使用Magentos catalog / product / view / media.phtml模板的副本。我们将替换第36和第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 :: init()的第三个参数:

[...]$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; ?>

产品列表中可配置的小图片

当我第一次阅读这个问题时,我认为它要求显示下一个可用的儿童产品&#39;小图像&#39;在产品列表中。由于这个问题实际上并不清楚,至少在这个可能的解释中添加一个简短的答案可能对那些正确寻找的人很有帮助。

在产品详情中,我们宁愿不想加载每个可配置的简单集合,只是为了获得一个产品图片。当我被要求准备一个可能的解决方案时,我选择为可配置(和错误)产品创建一个新的产品属性,该产品存储其可用子产品之一的ID。我添加了股票事件观察员,因此只要链接的子产品缺货,该值就会更新。

由于我们已经接受了一个已接受的答案,因此我不认为详细说明这一点。但是,对于对此草稿感兴趣的所有人,我已将其上传here

答案 2 :(得分:-1)

检查此Product Image Attribute extension,可能对您有用。 扩展名允许设置媒体附加属性。您可以将某些图像指向产品的附加属性。

按&#34;询问&#34;讨论您需要的其他功能。