Программно Установите/Измените Уменьшенное Изображение На Другое Из Галереи


У меня есть огромный каталог товаров, в котором на каждый товар приходится около 4 изображений с одинаковой структурой имен, примерно такой:"xxxxxx_FR.jpg ""xxxxxx_BK.jpg ""xxxxxx_FL.jpg "где крестики обозначают идентификатор продукта, а FR, BK, FL обозначают переднюю, заднюю, полную длину и т. Д.

В настоящее время базовые, маленькие и уменьшенные изображения назначены изображениям FR, но я пытаюсь изменить только уменьшенное изображение для каждого продукта на изображение FL из галереи программно. Я приближаюсь к этому, создавая пользовательскую коллекцию продуктов, просматривая продукты, а затем загружая следующее:

foreach ($_productCollection as $product){
   $workingProduct = Mage::getModel('catalog/product')->load($productID);
   $gallery = $workingProduct->getMediaGalleryImages();  
   $cameraAngle = str_replace(".jpg","",explode("_",$image->getUrl())); //This results in string that is just FR, BK, FL etc.

if (strtolower($cameraAngle[1]) == 'fl') {
//I have tried both of the below methods
$workingProduct->setThumbnail($image->getUrl());
$product->addImageToMediaGallery($image->getUrl(),array('thumbnail'),false,false);
 $workingProduct->save();
}    
}

Первый метод ничего не делает, а второй метод добавляет новое изображение в галерею изображений (чего я не хочу), но он также не изменяет уменьшенное изображение. Я думаю, что в методе 1 больше возможностей, так как я не хочу импортировать или создавать новое изображение в галерее, но я не уверен, что я делаю неправильно.

Author: user2045, 2013-11-22

2 answers

Если я вас правильно понял, вы просто хотите изменить FR на FL для миниатюры?

Просто сделай это:

$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('thumbnail);
foreach($collection as $product) {
    $product->setThumbnail(str_replace('_FR', '_FL', $product->getThumbnail());
}
$collection->save();
 1
Author: Fabian Blechschmidt, 2013-11-24 21:47:29

Мое решение было таким для всех, кто еще искал...

   foreach ($gallery as $image){
        $cameraAngle = str_replace(".jpg","",explode("_",$image->getUrl()));

        if (strtolower($cameraAngle[1]) == 'fl') {               
            Mage::getSingleton('catalog/product_action')->updateAttributes(array($workingProduct->getId()), array('thumbnail'=>$image['file']), 0);

        }
 0
Author: James, 2014-02-21 03:25:35