我正在尝试以编程方式向我的所有产品添加基本,小图像和缩略图。图像导入正常并按预期放入/media/catalog/product
,但当我在Magento后端查看产品图像时,只选择了“基本图像”。
我正在遍历目录中的每个产品并运行:
$mediaArray = array('thumbnail', 'small_image', 'image');
$file = Mage::getBaseDir('media') . DS . 'import' . trim($imageName);
try {
$product->addImageToMediaGallery($file, $mediaArray, false, false);
$product->save();
} catch (Exception $e) {
echo $e->getMessage();
}
我的所有图片名称都以斜杠开头,图片本身也会上传到/media/import
。我试图模仿法师产品进口商会做什么。
非常感谢任何关于为什么没有设置小标记和缩略图标志的见解!
答案 0 :(得分:3)
这是我自己使用的导入代码,有效:
// Add three image sizes to media gallery
$mediaArray = array(
'thumbnail' => $oscProduct['products_image'],
'small_image' => $oscProduct['products_mediumimage'],
'image' => $oscProduct['products_largeimage'],
);
// Remove unset images, add image to gallery if exists
$importDir = Mage::getBaseDir('media') . DS . 'import/';
foreach ( $mediaArray as $imageType => $fileName ) {
$filePath = $importDir . $fileName;
if ( file_exists($filePath) ) {
try {
$product->addImageToMediaGallery($filePath, $imageType, false);
} catch (Exception $e) {
echo $e->getMessage();
}
} else {
echo "Product does not have an image or the path is incorrect. Path was: {$filePath}<br/>";
}
}
注意$imageType
不是数组,与对应的数据相同。
编辑:您只需要一个图片,并将其设置为每种类型。使用$product->save()
保存产品后,尝试使用以下内容,假设您已经设置了image
类型:
$product->setThumbnail($product->getImage());
$product->setSmallImage($product->getImage());
$product->save();
答案 1 :(得分:0)
我正在复制产品,并希望复制产品图片。
我在这工作了几个小时,无法获得数组('thumbnail','small_image','image')来实际设置这些值。它会将图像添加到库中,但不会设置上述类型。我也尝试输入字符串,例如'image'而不是数组,这也没有用。最后,这对我有用:
//grab the pics from original product
$mediaApi = Mage::getModel("catalog/product_attribute_media_api");
$items = $mediaApi->items($product->getId());
//duplicate the product
$product = $product->duplicate();
$product->setStatus(1);
//also move the pics over
$product->setMediaGallery (array('images'=>array (), 'values'=>array ()));
$product->setImage($items[0]['file']);
$product->setThumbnail($items[0]['file']);
$product->setSmallImage($items[0]['file']);
答案 2 :(得分:0)
store id
,否则它不会坚持。
我这样做了:
Mage::app()->getStore()->setId(Mage_Core_Model_App::ADMIN_STORE_ID);
我只有一家商店。