TL; DR : Jak załadować zdjęcia / galerię produktu bez ładowania całego produktu?
Chcę załadować obrazy do produktu. Co robię w .phtml
$_popularCollection = $this->getPopularCollection();
foreach ($_popularCollection as $_product):
// the rest
$mediaGallery = $_product->getMediaGalleryImages();
endforeach;
//the rest
Co robię w klasie 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;
}
To działa Ale ładuję wszystko: $_popularCollection->addAttributeToSelect(*);
Próbowałem $_popularCollection->addAttributeToSelect('media_gallery');
Ale to nie działa.
Przyjęta odpowiedź działa, ale wymaga załadowania wszystkich atrybutów produktu do pamięci, gdy być może są one niepotrzebne.
Aby zastosować nieco bardziej chirurgiczne podejście (testowane w 1.9.2.2 CE), wykonaj
W ten sposób ładujesz tylko sam atrybut media_gallery.
źródło
Wiem, że pytanie jest stare i już ma poprawną odpowiedź, ale nie jest źle polecać inną metodę, która może być przydatna dla społeczności: Przedtem
$_product->getMediaGalleryImages()
Możesz spróbować:
Zaczerpnięte z: /programming/7890616/get-product-media-gallery-images-from-a-product-collection-in-magento#23804663
źródło