2011-08-27 33 views
6

我試圖用Magento的套裝產品圖片標籤在導入

$product->addImageToMediaGallery($imageFile, array('image','thumbnail','small_image'), false, false); 

但是,我不能想出一個辦法來設置圖像的標籤產品圖片導入到Magento的。我嘗試使用getMediaGallery獲取圖庫,然後手動設置該值並將其指定回setMediaGallery,但會引發異常。

有沒有人有這方面的經驗?謝謝!

回答

0

我建議你試試Magmi,你可以分配標籤,它超快。

3

有同樣的任務,前幾天,它可以通過擴展核心類(把他們在「本地」代碼庫)

Mage/Catalog/Model/Product.php新的參數$label=''添加到方法addImageToMediaGallery 並將它傳遞給需要解決$mediaGalleryAttribute->getBackend()->addImage($this, $file, $mediaAttribute, $move, $exclude, $label);

Mage/Catalog/Model/Product/Attribute/Backend/Media.php

重新添加新的參數$label=''和改變'label' => '''label' => $label

HTH

+0

我照你解釋,然後檢查了我的應用程序使用正確的類(沒事),但即使我在函數調用中更改'label'=>'mylabel',這在Magento 1.6.0中也不起作用。 –

+0

@ D.S。這很奇怪,我已經在EE 1.10上測試了這個代碼,並且它工作得很完美。我認爲這兩個版本之間在這方面並沒有什麼不同,但是CE可能有另一種保存標籤的方法嗎?你用xdebug檢查過嗎?我目前無法檢查,儘管 – Zifius

+0

@Zifus不,我只打印當前使用的類名,以確保我的繼承類被用來代替Magento的默認值...謝謝你爲我演示如何快速覆蓋默認的Magento行爲:) –

8

後,你通過這個代碼的圖像添加到媒體庫...

$product->addImageToMediaGallery($imageFile, array('image','thumbnail','small_image'), false, false); 

...獲取從產品media_gallery陣列,然後在彈出的最新圖像被添加,並且有可以設置標籤。

那之後,你可以將其推回media_gallery的圖像陣列,下面的代碼:

$gallery = $product->getData('media_gallery'); 
$lastImage = array_pop($gallery['images']); 
$lastImage['label'] = $image_label; 
array_push($gallery['images'], $lastImage); 
$product->setData('media_gallery', $gallery); 
$product->save();