Establezca/cambiar la imagen de miniatura programada a otra desde la galería
-
16-10-2019 - |
Pregunta
Tengo un gran catálogo de productos que tienen alrededor de 4 imágenes por producto, con la misma estructura de nombres, es algo así como "xxxxxx_fr.jpg" "xxxxxx_bk.jpg" "xxxxxx_fl.jpg" donde las X representan la identificación del producto y fr, bk, FL soporte para el frente, la espalda, la longitud completa, etc.
Actualmente base, la pequeña y miniatura se asignan a las imágenes FR, pero lo que estoy tratando de hacer es cambiar solo la imagen en miniatura para cada producto a la imagen FL desde la galería programáticamente. Me estoy acercando a esto construyendo una colección de productos personalizado, revisando los productos y luego cargando lo siguiente:
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();
}
}
El primer método no hace nada y el segundo método agrega una nueva imagen a la galería de imágenes (que no quiero) pero tampoco cambia la imagen en miniatura. Estoy pensando que hay más potencial en el Método 1, ya que no quiero importar o crear una nueva imagen en la galería, pero no estoy seguro de lo que estoy haciendo mal.
Solución 2
Mi solución fue esta para cualquier otra persona que vea ...
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);
}
Otros consejos
Si te entiendo correctamente, ¿solo quieres cambiar FR a FL para la miniatura?
Solo haz esto:
$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('thumbnail);
foreach($collection as $product) {
$product->setThumbnail(str_replace('_FR', '_FL', $product->getThumbnail());
}
$collection->save();