如何在Magento中以编程方式更改图像排序顺序

时间:2015-09-15 15:54:00

标签: image magento gallery

我需要以编程方式修改现有产品图片的排序顺序。

我试图寻找一个有效的解决方案,但我一无所获。

我发现如何通过addImageToMediaGallery在媒体库中添加图片,而不是如何更改现有媒体文件的属性(排序,标签等等)。

2 个答案:

答案 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();