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.

¿Fue útil?

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();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top