Magento의 기존 제품에 이미지를 추가하려면 다음 코드를 사용하고 있습니다. 내가/업데이트 추가하는 데 필요한 모든 제품이 실행되면Magento 1.6 : addImageToMediaGallery가 관리 저장소 또는 미디어 갤러리에 추가하지 않습니다.
Mage::app()->setCurrentStore($target_store);
$product = Mage::getModel("catalog/product")->loadByAttribute($sku);
$product->addImageToMediaGallery(
$local_img_path,
array('image', 'thumbnail', 'small_image'),
false,
false
);
$product->save();
, 나는 모든 맑은 캐시를 다시 인덱싱. 이미지가 제품의 관리 영역에 표시되지 않습니다. 그러나 이미지는 프론트 엔드 제품 세부 정보 페이지에는 표시되지만 범주 목록 페이지의 작은 이미지에는 표시되지 않습니다. 프론트 엔드 저장소의 기본, 작은, 엄지 이미지가 있습니다
value_id entity_type_id attribute_id store_id entity_id value 888509 4 79 4 35743 /t/e/tempimg_791.jpg 888332 4 80 4 35743 /t/e/tempimg_791.jpg 888333 4 81 4 35743 /t/e/tempimg_791.jpg
:
제품에 대한 다음과 같은 3 개 관련 항목 catalog_product_entity_varchar에있다 데이터베이스를 확인. 지금은 STORE_ID 4를 가진 catalog_product_entity_varchar의 모든 행을 찾으려면 다음 SQL 쿼리를 실행하고 STORE_ID 0에 해당하는 항목이없는 79은 attribute_id하고 대응하는 행 만드는 경우 :
INSERT INTO catalog_product_entity_varchar (entity_type_id, attribute_id, store_id, entity_id, value) SELECT DISTINCT 4, 79, 0, entity_id, value FROM catalog_product_entity_varchar AS cpev WHERE attribute_id = 79 AND store_id != 0 AND entity_id IN ( SELECT entity_id FROM catalog_product_entity_varchar WHERE store_id = 4 AND attribute_id = 79 AND entity_id NOT IN ( SELECT entity_id FROM catalog_product_entity_varchar WHERE store_id = 0 AND attribute_id = 79 ) ) ON DUPLICATE KEY UPDATE value = cpev.value;
을 한 후 다시 동일한 작업을 수행 두 번, 81 다시 다음 (80)과 함께 79 년대를 교체하고, 나는 catalog_product_entity_varchar에서 다음 관련 행을 얻을 :
value_id entity_type_id attribute_id store_id entity_id value 888509 4 79 4 35743 /t/e/tempimg_791.jpg 888332 4 80 4 35743 /t/e/tempimg_791.jpg 888333 4 81 4 35743 /t/e/tempimg_791.jpg 888605 4 79 0 35743 /t/e/tempimg_791.jpg 888606 4 80 0 35743 /t/e/tempimg_791.jpg 888607 4 81 0 35743 /t/e/tempimg_791.jpg
이미지가 지금은하지만 아직 관리자 영역에서, 카테고리 목록에서 프런트 엔드에 표시 제품에 대한.
지금, 나는 이미 이전 쿼리에서 설정 한 이미지를 나타내는 catalog_product_entity_media_gallery에 항목을 추가하려면 다음 쿼리를 실행합니다
INSERT INTO catalog_product_entity_media_gallery (attribute_id, entity_id, value) SELECT 82, entity_id, value FROM catalog_product_entity_varchar AS cpev WHERE attribute_id = 79 AND store_id = 0 AND entity_id IN ( SELECT entity_id FROM catalog_product_entity_varchar WHERE store_id = 4 AND attribute_id = 79 AND entity_id NOT IN ( SELECT entity_id FROM catalog_product_entity_media_gallery WHERE attribute_id = 82 ) ) ON DUPLICATE KEY UPDATE value = cpev.value;
을이 작업이 완료되고, 다시 색인/다시 캐시가 완료되면. 이미지가 관리자에게 표시됩니다.
가져온 후에 이미지가 제대로 작동하도록 수동으로 4 개의 SQL 쿼리를 실행하지 않아도되는 적절한 방법이 있어야합니다. 내가 도대체 뭘 잘못하고있는 겁니까?
고맙습니다.
전체 PHP 코드를 게시 했습니까? 어떤 방식으로 제품을 반복하고 있습니까? 갤러리에 이미지를 추가 했습니까? '$ product-> addImageToMediaGallery ( $ local_img_path, null, false, 거짓 ) –