2012-08-01 2 views
2

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 쿼리를 실행하지 않아도되는 적절한 방법이 있어야합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

고맙습니다.

+0

전체 PHP 코드를 게시 했습니까? 어떤 방식으로 제품을 반복하고 있습니까? 갤러리에 이미지를 추가 했습니까? '$ product-> addImageToMediaGallery ( $ local_img_path, null, false, 거짓 ) –

답변

1

당황스럽고 격노 케하기 - app/code/core/Mage를 삭제하고 그 폴더의 새로 다운로드 한 사본으로 교체하여 해결했습니다. 일부 핵심 파일이 편집되고 프로세스에서 손상된 것처럼 보입니다.

이야기의 도덕 - 핵심 편집 금지.

관련 문제