以下のコードを使用して、構成可能な製品に関連付けられているすべての単純な製品のカスタム イメージ属性を表示しています。
これは、製品に色などのバリエーションが 1 つしかない場合にうまく機能します。問題は、製品に複数のバリエーションがある場合です。たとえば、次のようになります。
- サイズ:M / カラー:レッド
- サイズ:L / カラー:レッド
サイズ:XL / カラー:レッド
サイズ:M / カラー:グリーン
- サイズ:L / カラー:グリーン
- サイズ:XL / カラー:グリーン
したがって、製品がこのような場合、カスタム イメージ属性が 3 回表示されます。各カスタム カラー属性を 1 回だけ表示する必要があるため、現時点では赤が 1 回、緑が 1 回で 6 つになりますが、これは正しくありません。
<?php
$conf = Mage::getModel('catalog/product_type_configurable')->setProduct($_product);
$col = $conf->getUsedProductCollection()->addAttributeToSelect('*')->addFilterByRequiredOptions(); ?>
<div class="relative">
<?php
foreach($col as $simple_product){ ?>
<div class="container-swatch">
<img width="35" height="35" src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . 'catalog/product' . $simple_product->getSwatch() ?>">
<div class="content">
<img src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . 'catalog/product' . $simple_product->getLargeSwatch() ?>">
<div class="inside-swatch-name"><?php echo $simple_product->getAttributeText('real_colour'); ?></div>
</div>
</div>
<?php } ?>