我有一个庞大的产品目录,每个产品的每个产品都有大约4张图像,相同的命名结构诸如“ xxxxxx_fr.jpg”“ xxxxxxxxx_bk.jpg”“ xxxxxxxxxxxxx_fl.jpg”,其中x代表产品的ID和fr,bk,bk,bk,bk,bk,bk,bk,bk,bk ,, bk ,, bk ,, 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

我的解决方案是给其他任何人看...

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

        }

其他提示

如果我正确理解您,您只想将FR更改为FL的缩略图?

只要这样做:

$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('thumbnail);
foreach($collection as $product) {
    $product->setThumbnail(str_replace('_FR', '_FL', $product->getThumbnail());
}
$collection->save();
许可以下: CC-BY-SA归因
scroll top