我希望你能帮我解决这个问题。我正在使用Magento 1.9.2.2的导入脚本来下载和设置多个产品图像。不幸的是,最后一个图像被设置为默认值,而不是第一个。请参阅以下代码,应该更改哪些内容以将第一个产品图像设置为默认值?
public function insertProduct($sku,$productDataArray)
{
if(isset($productDataArray[$sku]) && !empty($productDataArray[$sku]))
{
$_product = Mage::getModel('catalog/product')->loadByAttribute('sku',$sku);
if(!($_product))
{
$filesArray = $this->getGallaryFiles($sku); //download images
$newProduct = Mage::getModel('catalog/product');
$newProduct->setData($productDataArray[$sku]);
if(isset($filesArray) && !empty($filesArray))
{
$newProduct->setMediaGallery(array('images'=>array (), 'values'=>array ()));
$imageDir = Mage::getBaseDir('media').DS.'gallary_import'.DS.$sku.DS;
$firstImage = true;
foreach ($filesArray as $key => $file) {
if($firstImage)
$newProduct->addImageToMediaGallery($imageDir.$file, array('image','small_image','thumbnail'), true, false);
else
$newProduct->addImageToMediaGallery($imageDir.$file, array('image'), true, false);
}
rmdir($imageDir);
}
$newProduct->save();
unset($_product);
unset($newProduct);
$this->_counts++;
}else{
/*$newProduct = Mage::getModel('catalog/product')->load($_product->getId());
$newProduct->setData($productDataArray[$sku]);
$newProduct->save();
unset($newProduct);
$this->_counts++;*/
unset($_product);
}
}
}
答案 0 :(得分:1)
谢谢史蒂夫!在你的帮助下,它现在正在工作。我只需要在最后一行中放置{}和删除'image'之间的行(否则最后一张图像仍然是基本图像)。
if($firstImage)
{
$newProduct->addImageToMediaGallery($imageDir.$file, array('image','small_image','thumbnail'), true, false);
$firstImage = false; // added this
}
else
$newProduct->addImageToMediaGallery($imageDir.$file, array(''), true, false);
答案 1 :(得分:0)
$firstImage = true;
似乎没有被重置一次,所以它仍然认为一切都是第一个图像,直到最后一个,这仍然是我读过的第一个“IF” ...(在firstImage = false;
循环中添加了foreach();
。
$firstImage = true;
foreach ($filesArray as $key => $file) { // etc...
添加了$firstImage = false;
$firstImage = true;
foreach ($filesArray as $key => $file) {
if($firstImage)
$newProduct->addImageToMediaGallery($imageDir.$file, array('image','small_image','thumbnail'), true, false);
$firstImage = false; // added this
else
$newProduct->addImageToMediaGallery($imageDir.$file, array('image'), true, false);
}
}
为了整洁,我添加了其他建议以供参考,并删除了评论。
$filesArray = $this->getGallaryFiles($sku); //download images
这可能是一个问题,而不是getGalleryFiles
而e
?也许你可以改变他们退回的顺序。 ShaileshTapa的回答说他已经“将最后一张图像设置为基础...”所以也许在这里有些东西:Magento: How to programatically set the base image to the first image in the list
这些文章可能会帮助您获得特定图片:How to get a product's image in Magento?和Magento get product images in shoppping cart
http://virginiabeachwebdevelopment.com/web-development-blog/programmatically-importing-products-magento请参阅:分配默认产品属性集。
此资源似乎有大量的调整代码,可能有助于gist.github.com/arosenhagen/2397824