Задайте базовое изображение программным путем

У меня есть эта проблема, которую я не могу решить. Отчасти потому, что я не могу объяснить это правильными условиями. Я новичок в этом, так жаль этот неуклюжий вопрос.

Ниже вы можете увидеть обзор моей цели.

Я пытаюсь продать Подобный продукт в моем magento для этого, я написал код, в котором все работает нормально.

Но у меня есть только одна проблема с изображениями.

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

Есть идеи ?

Здравствуйте, Вы можете сделать следующее:

$image =$imagePath."image.png"; $product->setMediaGallery(array('images'=>array (), 'values'=>array ())); if(is_file($image)) { $product->addImageToMediaGallery($image, array ('image', 'small_image', 'thumbnail'), false, false); } 

т.е. вам нужно сначала установить медиа-галерею, PS Это необходимый шаг.

затем добавьте все изображения в галерею, используя addImageToMediaGallery, где 'image' ref to 'base_image'

т.е. в приведенном выше примере мы устанавливаем image.png на base_image, small_image и уменьшенное изображение в одном вызове.

надеюсь, это поможет вам.

Я достиг такого же результата, используя:

 $product->setSmallImage($path) ->setThumbnail($path) ->setImage($path) ->save(); 

Работает лучше для случая, когда в вашей медиа-галерее есть одно или несколько изображений.

я делаю

 $product->load(); $gallery = $product->getMediaGalleryImages(); $paths = array(); foreach ($gallery as $image) { $paths[] = $image->getFile(); } sort($paths); $path = array_shift($paths); try { $product->setSmallImage($path) ->setThumbnail($path) ->setImage($path) ->save(); } catch (Exception $e) { echo $e->getMessage(); } 

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

Чтобы захватить набор или «сломанные» продукты, я использовал:

  $collection = Mage::getModel('catalog/product') ->getCollection() ->addAttributeToFilter('small_image', array('eq' => ''));