Domanda

Ho un enorme catalogo di prodotti che hanno tutti circa 4 immagini al prodotto con la stessa struttura di denominazione di essere qualcosa come "xxxxxx_FR.jpg" "xxxxxx_BK.jpg" "xxxxxx_FL.jpg", dove le X rappresentano l'ID del prodotto e la FR , BK, supporto FL per la parte anteriore, posteriore, a figura intera, ecc.

Al momento di base, le piccole e miniatura sono tutti assegnati alle immagini FR, ma solo l'immagine Anteprima quello che sto cercando di fare è il cambiamento per ogni prodotto all'immagine FL dalla galleria programatically. Mi sto avvicinando questo costruendo una collezione di prodotti su misura, passando per i prodotti e quindi l'accesso al seguente:

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

Il primo metodo non fa nulla e il secondo metodo aggiunge una nuova immagine nella galleria di immagini (che io non voglio), ma non cambia l'immagine di anteprima sia. Sto pensando che non v'è più possibilità di metodo 1 come io non voglio importare o creare una nuova immagine nella galleria, ma io non sono sicuro di quello che sto facendo male.

È stato utile?

Soluzione 2

La mia soluzione era questo per chiunque cerchi ...

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

        }

Altri suggerimenti

Se ho capito bene, si vuole solo cambiare FR a FL per la miniatura?

Basta fare questo:

$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('thumbnail);
foreach($collection as $product) {
    $product->setThumbnail(str_replace('_FR', '_FL', $product->getThumbnail());
}
$collection->save();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top