Загруженный продукт отсутствует атрибут медиа-галереи


Я загружаю продукт следующим образом:

$product = Mage::getModel('catalog/product')->loadByAttribute('sku', 'MyStockCode');   

Затем я пытаюсь получить изображения, используя:

$existingGallery = $product->getMediaGallery('images');   

Но он возвращается с нулевым значением. При проверке _data на соответствие $product атрибут media_gallery отсутствует.

Из всех ссылок, которые я прочитал, это то, как загружать изображения на продукт, но, похоже, это не работает для меня.

Примечания:

Я вижу изображения в области администрирования этого продукта, поэтому они определенно там.

Я делаю это в административной области, а не в интерфейсе.

Author: webnoob, 2013-06-06

2 answers

Если вы загрузите продукт по идентификатору, будет загружена медиа-галерея:

$product = Mage::getModel('catalog/product');
$id = $product->getIdBySku($sku);
$product->load($id);

Разница в том, что loadByAttribute загружает продукт через коллекцию. В качестве альтернативы, если у вас уже есть загруженный продукт и вы просто хотите загрузить связанные изображения, вы можете использовать

$product->getResource()->getAttribute('media_gallery')
    ->getBackend()->afterLoad($product);

После этого все изображения продукта будут доступны через $product->getMediaGalleryImages()

 23
Author: Vinai, 2013-06-06 11:19:09

Другой подход, который тоже работает:

$product = Mage::getModel('catalog/product')->loadByAttribute('sku', 'MyStockCode'); 
$product->load('media_gallery'); //just add this line of code before you fetch gallery images
$existingGallery = $product->getMediaGalleryImages(); 
 -2
Author: MagePsycho, 2014-06-15 07:54:20