2011-08-27 12 views
6

Estoy tratando de importar imágenes de productos para Magento utilizandoimagen Magento Insertado etiqueta durante la importación

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

Sin embargo, no puedo encontrar una manera de fijar la etiqueta de la imagen. He intentado obtener la galería usando getMediaGallery, establezco manualmente el valor y lo asigno de nuevo al producto con setMediaGallery, pero arroja una excepción.

¿Alguien tiene experiencia con esto? ¡Gracias!

Respuesta

0

Lo recomiendo probar Magmi, puede asignar etiquetas y es súper rápido.

3

tenía la misma tarea hace unos días, puede ser resuelto mediante la extensión de las clases básicas (se ubican en la piscina código de 'local')

en Mage/Catalog/Model/Product.php añadir nuevo parámetro $label='' al método addImageToMediaGallery y pasarlo a $mediaGalleryAttribute->getBackend()->addImage($this, $file, $mediaAttribute, $move, $exclude, $label);

en Mage/Catalog/Model/Product/Attribute/Backend/Media.php otra vez añadir nuevo parámetro $label='' y cambie 'label' => '' a 'label' => $label

HTH

+0

Hice lo que usted explicó, después se comprueba mi solicitud estaban usando las clases correctas (bien), pero incluso si cambio 'label' => 'mylabel' en la llamada a la función, esto no funciona en Magento 1.6.0. –

+0

@ D.S. Eso es extraño, he probado este código en EE 1.10 y funcionó perfectamente. No creo que difiera al respecto entre las ediciones, pero quizás CE tiene otro método para guardar las etiquetas. ¿Lo revisaste con xdebug? No pude verificarlo ahora mismo – Zifius

+0

@Zifus No, solo he impreso los nombres de clase actualmente utilizados para asegurar que se usen mis clases heredadas en lugar de los valores predeterminados de Magento ... Gracias de todos modos por mostrarme cómo anular rápidamente comportamiento predeterminado de Magento :) –

8

Después de agregar la imagen a la galería de los medios de comunicación a través de este código ...

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

... obtener la matriz media_gallery del producto, y luego aparecerá la última imagen que se añade, y no se puede establecer la etiqueta.

Después de que se puede empujar de nuevo a la serie de imágenes de la media_gallery, aquí está el código:

$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(); 
Cuestiones relacionadas