Программно Установите/Измените Уменьшенное Изображение На Другое Из Галереи
У меня есть огромный каталог товаров, в котором на каждый товар приходится около 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 больше возможностей, так как я не хочу импортировать или создавать новое изображение в галерее, но я не уверен, что я делаю неправильно.
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();
Мое решение было таким для всех, кто еще искал...
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);
}