我有一个Magento商店有大约3,000个产品.几乎所有这些产品都附有一张图片.
由于某些原因,即使我将导入CSV文件中的小图像和缩略图像素设置为基本图像,只为每个产品设置基本图像.这意味着当您搜索产品时,您会收到一个占位符 – 但是一旦进入产品页面,就可以获得正确的图像.可以通过进入产品管理页面并选择小图像和缩略图的框来轻松补救.
问题是,3000张图片需要很长时间才能手动进行.我发现一个sql命令应该使所有的基本,小的和缩略图映射每个产品的第一个图像.因为我每个产品只有一个图像,这应该是完美的.但是,它没有做任何事情.它说0行已更改.
UPDATE catalog_product_entity_media_gallery AS mg,catalog_product_entity_media_gallery_value AS mgv,catalog_product_entity_varchar AS ev SET ev.value = mg.value WHERE mg.value_id = mgv.value_id AND mg.entity_id = ev.entity_id AND ev.attribute_id IN (70,71,72) AND mgv.position = 1
有人知道为什么这不工作吗?
谢谢,
丹尼
解决方法
对数据库进行这样的更改后,即使成功,您也需要在缓存管理中重建映像缓存.
您可能可以使用这样的脚本来执行此操作,而不用担心缓存或索引.
<?PHP require 'app/Mage.PHP'; Mage::app(); $products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('*'); foreach ($products as $product) { if (!$product->hasImage()) continue; if (!$product->hasSmallImage()) $product->setSmallImage($product->getImage()); if (!$product->hasThumbnail()) $product->setThumbnail($product->getImage()); $product->save(); } ?>Done!
将其保存在Magento目录中,并通过在浏览器的地址栏中输入URL来访问它.我还没有测试过这个脚本.