2016-05-18 7 views
0

設定可能な製品を作成し、ラベルの異なるいくつかの画像を追加します。 media.phtmlのフロントエンドには、ラベルが含まれている画像のみを保存するにはどうすればいいですか:mylabelこの画像をクリックすると、more-viewsのような機能が得られますか?私はコードを持っていますが、なぜではなく、最初のイメージだけを表示するのか分かりません。あなたが取得する必要がある場合にのみ、これを行うものの、Magentoのラベルを含むメディアギャラリー画像のリストを取得

$prodimg = Mage::getModel('catalog/product')->load($_product->getId()) 

これは素晴らしいです:

enter image description here

$prodimg = Mage::getModel('catalog/product')->load($_product->getId())->getMediaGalleryImages()->getItemByColumnValue('label','mylabel'); 
if ($prodimg != '') { 
    echo "<img src='" .$this->helper('catalog/image')->init($_product, 'image', $prodimg->getFile()). "' class='img-responsive' />"; 
} 

答えて

1

私はこれをテストしたが、ここではあなたのコードの例を破壊していないが私の考えですすでに存在しない属性は$_productです。そうしないと、データベースのクエリが倍増してしまいます。 Mage_Catalog_Model_Product::getMediaGalleryImages() 1として

->getMediaGalleryImages() 

、これはVarien_Data_Collectionを返します。 Varien_Data_Collection::getItemByColumnValue 1として

->getItemByColumnValue('label','mylabel') 

、これはだけあなたの条件に一致するコレクションから単一の項目を返します。

代わりに、あなたはおそらく同じ引数で->getItemsByColumnValue()を使用したい:

/** @var array $productImages */ 
foreach ($productImages as $productImage) { /** @var Varien_Object $productImage */ 
    $image = $this->helper('catalog/image') 
     ->init($_product, 'image', $productImage->getFile()); 
    echo "<img src='" . $image . "' class='img-responsive' />"; 
} 

$productImages = Mage::getModel('catalog/product') 
    ->load($_product->getId()) 
    ->getMediaGalleryImages() 
    ->getItemsByColumnValue('label', 'mylabel'); 

ここからはあなたがすでにあるとして、あなただけ配列が返さループして出力することができるはずです

+0

非常にありがとうございますロビー、あなたのコードの仕事は魅力のようです:) – Robert

関連する問題