2011-08-27 16 views
6

の間に私はしかし、私は画像のラベルを設定する方法を把握することはできませんMagentoのセット商品画像ラベルインポート

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

を使用してMagentoのに製品イメージをインポートしようとしています。 getMediaGalleryを使用してギャラリーを取得しようとしましたが、値を手動で設定してsetMediaGalleryで製品に割り当てますが、例外がスローされます。

誰もこれに慣れていますか?ありがとう!

答えて

0

Magmiを試してみることをお勧めします。ラベルを割り当てることができ、超高速です。

3

は数日前に同じタスクを持っていた、それが(「ローカル」のコードのプールでそれらを置く)コアクラスを拡張することによって解決することができる

Mage/Catalog/Model/Product.phpにおける方法addImageToMediaGallery に新しいパラメータ$label=''を追加し、それを渡しますMage/Catalog/Model/Product/Attribute/Backend/Media.php$mediaGalleryAttribute->getBackend()->addImage($this, $file, $mediaAttribute, $move, $exclude, $label);

は再び新しいパラメータ$label=''を追加し、'label' => ''

'label' => $labelにHTH

0を変更しますあなたはこのコードを介してメディアギャラリーに画像を追加した後
+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(); 
関連する問題