TL; DR : Wie lade ich die Produktbilder / Galerie, ohne das gesamte Produkt zu laden?
Ich möchte die Bilder auf ein Produkt laden. Was mache ich in der .phtml
$_popularCollection = $this->getPopularCollection();
foreach ($_popularCollection as $_product):
// the rest
$mediaGallery = $_product->getMediaGalleryImages();
endforeach;
//the rest
Was ich in der Blockklasse mache:
public function getPopularCollection() {
// http://magento.stackexchange.com/q/5838/3089
// no category
if ( is_null( $this->getCategoryId() ) )
return false;
/** @var Mage_Catalog_Model_Category $category */
$category = Mage::getModel('catalog/category')->load( (int)$this->getCategoryId() );
/** @var Mage_Catalog_Model_Resource_Product_Collection $_popularCollection */
$_popularCollection = Mage::getModel('catalog/product')->getResourceCollection();
$_popularCollection->addAttributeToSelect('*');
$_popularCollection->setStoreId(Mage::app()->getStore()->getId());
$_popularCollection->addCategoryFilter($category);
return $_popularCollection;
}
Das funktioniert aber ich lade alles: $_popularCollection->addAttributeToSelect(*);
Ich habe es versucht, $_popularCollection->addAttributeToSelect('media_gallery');
aber es scheint nicht zu funktionieren.
Die akzeptierte Antwort funktioniert, beinhaltet jedoch das Laden aller Produktattribute in den Speicher, wenn sie möglicherweise nicht erforderlich sind.
Etwas chirurgischer vorgehen (getestet in 1.9.2.2 CE)
Auf diese Weise laden Sie nur das Attribut media_gallery selbst.
quelle
Ich weiß, dass die Frage alt ist und bereits eine richtige Antwort hat, aber es ist nicht schlecht, eine andere Methode zu empfehlen, die für die Community nützlich sein kann: Vorher
$_product->getMediaGalleryImages()
Du kannst es versuchen:
Entnommen aus: /programming/7890616/get-product-media-gallery-images-from-a-product-collection-in-magento#23804663
quelle