Загруженный продукт отсутствует атрибут медиа-галереи
Я загружаю продукт следующим образом:
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', 'MyStockCode');
Затем я пытаюсь получить изображения, используя:
$existingGallery = $product->getMediaGallery('images');
Но он возвращается с нулевым значением. При проверке _data
на соответствие $product
атрибут media_gallery
отсутствует.
Из всех ссылок, которые я прочитал, это то, как загружать изображения на продукт, но, похоже, это не работает для меня.
Примечания:
Я вижу изображения в области администрирования этого продукта, поэтому они определенно там.
Я делаю это в административной области, а не в интерфейсе.
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()
Другой подход, который тоже работает:
$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();