我需要以编程方式修改现有产品图片的排序顺序。
我试图寻找一个有效的解决方案,但我一无所获。
我发现如何通过addImageToMediaGallery
在媒体库中添加图片,而不是如何更改现有媒体文件的属性(排序,标签等等)。
答案 0 :(得分:0)
尝试以下代码。
$prodID = '16';//product ID
$mediaApi = Mage::getModel("catalog/product_attribute_media_api");
$_product = Mage::getModel('catalog/product')->load($prodID);
$items = $mediaApi->items($_product->getId());
foreach($items as $item) {
$data = array(
'label' => 'New Image Label',
'position' => 3,
'types' => array('small_image'),
'exclude' => 0
);
$mediaApi->update($_product->getId(), $item['file'],$data);
}
答案 1 :(得分:0)
使用addImageToMediaGallery无法为图像添加位置
上传图片后,您需要使用media-> getBackend() - > updateImage(),
但updateImage()需要上传图片的第二个参数图片路径
你可以使用media-> getBackend() - > addImage()返回文件名,查看代码以获取一些提示
$product = Mage::getModel('catalog/product')->load(123);
$attributes = $product->getTypeInstance(true)->getSetAttributes($product);
$media_gallery = $attributes['media_gallery'];
$backend = $media_gallery->getBackend();
$backend->afterLoad($product);
$count = count($product->getMediaGalleryImages()) + 1;
if($product->getImage() && $product->getImage() != 'no_selection'){
$media_attributes = null;
}else{
$media_attributes = array('image','small_image','thumbnail');
}
$filename = $media_gallery->getBackend()->addImage($product, $import, $media_attributes,false, false);
$attributes['media_gallery']->getBackend()->updateImage($product, $filename, array('position' => $count));
$product->save();