2011-08-27 28 views
6

Tôi đang cố gắng để nhập khẩu hình ảnh sản phẩm để Magento bằng cách sử dụngMagento Set Product Image Label Trong Import

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

Tuy nhiên, tôi không thể tìm ra một cách để thiết lập nhãn của hình ảnh. Tôi đã thử tải bộ sưu tập bằng cách sử dụng getMediaGallery, đặt giá trị theo cách thủ công và gán giá trị đó trở lại sản phẩm với setMediaGallery, nhưng nó ném một ngoại lệ.

Có ai có kinh nghiệm với điều này không? Cảm ơn!

Trả lời

0

Tôi khuyên bạn nên thử dùng Magmi, bạn có thể gán nhãn và siêu nhanh.

3

Đã nhiệm vụ tương tự cách đây vài ngày, nó có thể được giải quyết bằng cách mở rộng các lớp lõi (đặt chúng trong mã hồ bơi 'địa phương')

trong Mage/Catalog/Model/Product.php thêm tham số mới $label='' phương pháp addImageToMediaGallery và vượt qua nó để $mediaGalleryAttribute->getBackend()->addImage($this, $file, $mediaAttribute, $move, $exclude, $label);

trong Mage/Catalog/Model/Product/Attribute/Backend/Media.php lại thêm tham số mới $label='' và thay đổi 'label' => '' để 'label' => $label

HTH

+0

tôi đã làm như bạn giải thích, sau đó kiểm tra ứng dụng của tôi đang sử dụng các lớp bên phải (tất cả các bên phải), nhưng ngay cả khi tôi thay đổi 'label' => 'mylabel' trong chức năng gọi, điều này không hoạt động trong Magento 1.6.0. –

+0

@ D.S. Đó là lạ, tôi đã thử nghiệm mã này trên EE 1.10 và nó hoạt động hoàn hảo. Tôi không nghĩ rằng nó khác nhau về vấn đề này giữa các phiên bản, nhưng có lẽ CE có một phương pháp khác để lưu nhãn? Bạn đã kiểm tra với xdebug? Tôi không thể kiểm tra nó ngay bây giờ mặc dù – Zifius

+0

@ Zifus Không, tôi đã chỉ in tên lớp hiện đang được sử dụng để đảm bảo các lớp học kế thừa của tôi được sử dụng thay vì mặc định Magento ... Cảm ơn bạn anyway cho tôi biết làm thế nào để nhanh chóng ghi đè hành vi Magento mặc định :) –

8

Sau khi bạn thêm hình ảnh vào thư viện media khổng lồ qua mã này ...

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

... lấy media_gallery mảng từ các sản phẩm, và sau đó bật hình ảnh mới nhất được bổ sung, và ở đó bạn có thể thiết lập nhãn.

Sau đó bạn có thể đẩy nó trở lại mảng hình ảnh của media_gallery, đây là các mã:

$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(); 
Các vấn đề liên quan