TL; DR : Comment charger les images / galerie du produit sans charger le produit entier?
Je veux charger les images sur un produit. Ce que je fais dans le .phtml
$_popularCollection = $this->getPopularCollection();
foreach ($_popularCollection as $_product):
// the rest
$mediaGallery = $_product->getMediaGalleryImages();
endforeach;
//the rest
Ce que je fais dans la classe Block:
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;
}
Cela fonctionne Mais je charge tout: $_popularCollection->addAttributeToSelect(*);
J'ai essayé $_popularCollection->addAttributeToSelect('media_gallery');
Mais ça ne semble pas marcher.
La réponse acceptée fonctionne, mais implique de charger tous les attributs du produit dans la mémoire lorsqu'ils sont peut-être inutiles.
Pour adopter une approche légèrement plus chirurgicale (testée en 1.9.2.2 CE),
De cette façon, vous ne chargez que l'attribut media_gallery lui-même.
la source
Je sais que la question est ancienne et qu'elle a déjà une bonne réponse, mais ce n'est pas mal de recommander une autre méthode qui peut être utile à la communauté: Avant
$_product->getMediaGalleryImages()
Tu peux essayer:
Tiré de: /programming/7890616/get-product-media-gallery-images-from-a-product-collection-in-magento#23804663
la source