我有一个大约3,000种产品的Magento商店。几乎所有这些产品都附有一个图像。

由于某种原因,即使我将小图像和缩略图图像设置为与导入CSV文件中的基本图像相同,但仅设置了每个产品的基本图像。这意味着,当您搜索产品时,您会得到占位符 - 但是一旦进入产品页面,就可以获得正确的图像。通过进入产品管理页面并为小图像和缩略图选择框,可以轻松地修复这一点。

问题是,有了3,000张图像,这将需要很长时间才能手动进行。我找到了一个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键入浏览器的地址栏访问。我还没有测试过这个脚本。

其他提示

就像对任何想尝试此脚本的人(像我一样)的警告一样。我没有思考,它更改了所有产品名称!

  1. 进入您的属性面板,查找图像/小图像/缩略图属性。
  2. 注意IDS(在这种情况下我的85,86和87)
  3. 更改查询以反映这些ID。

所以我的查询看起来像:

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 (85,86,87)
AND mgv.position = 1;

我知道这是一个旧的帖子,但是如果任何人都有相同的问题,那么问题是ev.attribute_id。下面更新的代码:

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 (74, 75, 76)
      AND mgv.position = 1

谢谢。

我在Magento 1.7.0.2上使用了Stereo_world的方法,并且效果很好。 (我不能赞扬他的答案,因为我是新手stackoverflow)

我不知道他在属性面板中在哪里看到属性ID,因为我根本看不到数字ID。我通过打开phpmyadmin并在eav_attribute表中查找IDS(85,86,87)。

正如ClockworkGeek指出的那样 - 需要勒索/高速缓存冲洗。

@user2321249要在CE 1.9.1中找到属性ID,请转到属性信息页面并查看URL。例如,从管理后端,选择“目录” - >管理属性。找到缩略图属性并选择。使用我的系统,URL是:

www.example.com/magento/index.php/admin/catalog_product_attribute/edit/attribute_id/87/键/F759B57C21A7C75F33095A243F44B2A5/

您可以轻松地告诉我的系统中的缩略图属性_id是87。对基本图像和小图像做相同的操作。

我使用以下技巧来使用Magento 1.9.2.2版本:

INSERT INTO catalog_product_entity_varchar
      (entity_type_id, attribute_id, store_id, entity_id, value)
SELECT
      entity_type_id, 75, store_id, entity_id, value
FROM
      catalog_product_entity_varchar
WHERE 
      attribute_id = 74

然后用76替换值75,然后再次导入查询。确保将属性ID值替换为您自己的

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top