Задать вопрос

Как вывести значение атрибута картинки в Magento?

1. Есть страница товара
2. Есть вывод блока на этой странице типа = catalog/product_view_media
3. Есть метод который получает в этом блоке список изображений $this->getGalleryImages()
4. Каждое изображение может относится к Base Image / Small Image / Thumbnail / [пользовательские медия атрибуты]

Вопрос заключается в следующем: как получить тип (Base Image / Small Image / ...) к которому относится изображение из полученной коллекции посредством $this->getGalleryImages() ?
  • Вопрос задан
  • 2885 просмотров
Подписаться 4 Оценить Комментировать
Решения вопроса 1
Hide
@Hide
инженер-программист
Напрямую никак. Не содержит коллекция нужной информации:
/**
     * Retrive media gallery images
     *
     * @return Varien_Data_Collection
     */
    public function getMediaGalleryImages()
    {
        if(!$this->hasData('media_gallery_images') && is_array($this->getMediaGallery('images'))) {
            $images = new Varien_Data_Collection();
            foreach ($this->getMediaGallery('images') as $image) {
                if ($image['disabled']) {
                    continue;
                }
                $image['url'] = $this->getMediaConfig()->getMediaUrl($image['file']);
                $image['id'] = isset($image['value_id']) ? $image['value_id'] : null;
                $image['path'] = $this->getMediaConfig()->getMediaPath($image['file']);
                $images->addItem(new Varien_Object($image));
            }
            $this->setData('media_gallery_images', $images);
        }

        return $this->getData('media_gallery_images');
    }

Из кода видно, что коллекция создается налету. В объекте $image нет нужного атрибута type изначально. И в коллекцию через обновление данных $image этот атрибут никак не заносится. Только через сравнение с данными у объекта $_product. Сравнивать следует по атрибуту file у $image из коллекции.
$_product->getImage() # /a/s/asics-men-s-gel-kayano-xii.jpg
$_product->getSmallImage() # /a/s/asics-men-s-gel-kayano-xii-2.jpg
$_product->getThumbnail() # /a/s/asics-men-s-gel-kayano-xii-2.jpg
...
$_image->getFile() # в цикле даст список путей выше, 
# если только изображение не исключено из коллекции в бэкэнде

66a736e10142ffc2cefe003a2af18b1252c17935
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы