Question

J'ai un énorme catalogue de produits qui ont tous environ 4 images par produit avec la même structure de nommage étant quelque chose comme « xxxxxx_FR.jpg » « xxxxxx_BK.jpg » « xxxxxx_FL.jpg » où les années x représentent l'ID du produit et FR , BK, FL support pour l'avant, le dos, longueur etc.

base Actuellement, petites et miniatures sont tous attribués aux images FR, mais ce que je suis en train de faire est de changer simplement l'image miniature pour chaque produit à l'image de la galerie FL programatically. J'approche en construisant une collection de produits sur mesure, en passant par les produits, puis de charger les éléments suivants:

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

La première méthode ne fait rien et la deuxième méthode ajoute une nouvelle image dans la galerie d'images (que je ne veux pas), mais cela ne change pas l'image miniature non plus. Je pense qu'il ya plus de potentiel dans la méthode 1 que je ne veux pas importer ou créer une nouvelle image dans la galerie, mais je ne suis pas sûr de ce que je fais mal.

Était-ce utile?

La solution 2

Ma solution a été ce pour quelqu'un d'autre à la recherche ...

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

        }

Autres conseils

Si je vous comprends bien, vous voulez juste changer FR FL pour la vignette?

Il suffit de faire ceci:

$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('thumbnail);
foreach($collection as $product) {
    $product->setThumbnail(str_replace('_FR', '_FL', $product->getThumbnail());
}
$collection->save();
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top