2017-04-04 102 views
0

有没有什么方法可以通过哪个简单的产品图像将被可配置的产品使用。例如,我有一个可配置的产品,其中有4个简单的产品,不同的图像和库存。所以,可配置产品应该选择其中一个简单的产品图像是存货的。如果简单的产品缺货,那么可配置的产品应该自动选择不同的简单产品图像。 我需要此功能,因为有时可配置产品中显示的颜色选项不适用于客户。如何将简单产品图像用于可配置的产品图像?

Devs,或者暗示我一些插件,或者是否可以通过任何代码或任何magento配置或产品中的某种更改。另外,让我知道这是否可行。 每个建议对我来说都很有价值,谢谢。

+0

我认为你必须指定一个可配置产品的图像。我使用带有简单配置产品扩展的Magento 1.8.1,当用户选择特定的简单产品时,将图像更新为该产品的图像。我不知道后来的版本是如何处理的。 – PedroKTFC

回答

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;   
     } 
}} ?> 
0

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

按“询问”讨论您需要的附加功能。

+0

请带上更多关于解决方案的信息。答案应该包含一个答案。 https://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers –

0

在查看产品配置的基础映像

接受的答案是一个有效的解决方案,但是,我宁愿叫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

相关问题