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

    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
    Ответ написан
    Комментировать