2011-08-27 14 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='' जोड़ सकते हैं और करने के लिए इसे पारित करके हल किया जा सकता है $mediaGalleryAttribute->getBackend()->addImage($this, $file, $mediaAttribute, $move, $exclude, $label);

Mage/Catalog/Model/Product/Attribute/Backend/Media.php में

फिर से नया पैरामीटर $label='' जोड़ सकते हैं और बदल 'label' => '''label' => $label

को HTH

+0

मैंने किया था के रूप में आप विस्तार से बताया है, तो जाँच अपने आवेदन सही वर्गों (सब ठीक) का उपयोग कर रहे थे, लेकिन भले ही मैं फ़ंक्शन कॉल में 'लेबल' => 'mylabel' बदलूं, यह Magento 1.6.0 में काम नहीं करता है। –

+0

@ डीएस। यह अजीब बात है, मैंने ईई 1.10 पर इस कोड का परीक्षण किया है और यह पूरी तरह से काम करता है। मुझे नहीं लगता कि यह संस्करणों के बीच इस संबंध में अलग है, लेकिन शायद सीई के पास लेबल बचाने के लिए एक और तरीका है? क्या आपने xdebug के साथ जांच की? मैं अभी यह जांच नहीं कर सका हालांकि – Zifius

+0

@ ज़िफस नहीं, मैंने केवल वर्तमान में इस्तेमाल किए गए वर्ग नामों को मुद्रित किया है ताकि मेरी विरासत कक्षाओं का उपयोग 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(); 
संबंधित मुद्दे