以编程方式更新图像标签

时间:2013-05-21 23:30:02

标签: php magento

我正在尝试更新我的产品图片标签。我希望它们与产品名称相同。

我尝试了什么

$mediaModel = Mage::getModel("catalog/product_attribute_backend_media");
$images = $product->getMediaGalleryImages();
foreach ($images as $image) {
    $mediaModel->updateImage(
        $product->getId(),
        $image->getFile(),
        array("label" => $title)
    );
}

但后来我收到了这个错误

  

致命错误:在第401行的app / code / core / Mage / Catalog / Model / Product / Attribute / Backend / Media.php中的非对象上调用成员函数getAttributeCode()

我也试过

$mediaModel = Mage::getModel("catalog/product_attribute_media_api");
$images = $mediaModel->items($product->getId());
foreach ($images as $image) {    
    $mediaModel->update(
        $product->getId(),
        $image['file'],
        array("label" => $title)
    );
}

哪个运行正常,但值不会在管理员中更新。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

$product = Mage::getModel('catalog/product')->loadByAttribute('sku','xxxxxxxxx');

$mediaModel = Mage::getModel("catalog/product_attribute_media_api");
$images = $mediaModel->items($product->getId());
foreach ($images as $image) {
 $mediaModel->update(
     $product->getId(),
     $image['file'],
     array("label" => 'Image label here')
  );
 }
 $product->getResource()->saveAttribute($product, 'media_gallery');

此代码适用于我。刷新后端之前清除缓存

答案 1 :(得分:-2)

试试这个

$product->getImageLabel();