Magento 1.6:AddImageToDiaGallery不会添加到管理存储或媒体库

Magento 1.6:AddImageToDiaGallery不会添加到管理存储或媒体库,magento,magento-1.6,Magento,Magento 1.6,我使用以下代码向Magento中的现有产品添加图像 Mage::app()->setCurrentStore($target_store); $product = Mage::getModel("catalog/product")->loadByAttribute($sku); $product->addImageToMediaGallery( $local_img_path, array('image', 'thumbnail', 'small_image')

我使用以下代码向Magento中的现有产品添加图像

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();
对所有需要更新/添加的产品执行此操作后,我将重新索引所有产品并清除缓存。图像不会显示在产品的管理区域中。但是,该图像确实显示在前端产品详细信息页面上,但不显示在类别列表页面上的小图像上

检查数据库时,目录\产品\实体\ varchar中的产品有以下3个相关条目:

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 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 前端商店有基本图像、小图像和拇指图像。现在,如果我运行以下SQL查询来查找目录\产品\实体\ varchar中具有store\ id 4和属性\ id 79且没有store\ id为0的对应项的所有行,并创建一个对应行:

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; 然后再做两次同样的操作,将79替换为80,然后再替换为81,我在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 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查询,以使图像在导入后正常工作!我做错了什么


谢谢大家。

尴尬和愤怒-我通过删除app/code/core/Mage并用新下载的文件夹副本替换它来修复它。看起来一些核心文件已被编辑,并在过程中被破坏


故事的寓意——不要编辑核心。

你发布了完整的PHP代码吗?您是否以某种方式循环产品?你把这张照片添加到画廊了吗$产品->AddImageToDiagallery$local\u img\u path,null、false、false;