2013-09-23 3 views
3

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

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

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

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

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

Любые идеи?

ответ

3

Привет Вы можете сделать следующее:

$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); 
} 

т.е. Вы должны сначала установить медиа галереи, P.S Это является необходимым шагом.

затем добавить все изображения в галерею с помощью addImageToMediaGallery, где «образ» ссылка на «базового_образа»

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

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

+0

Спасибо. Это хорошо работает :) – Zsolti

2

я достиг того же результата с помощью:

$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' => ''));