Magento,我需要将第一个产品图像定义为缩略图

时间:2012-03-26 15:30:13

标签: mysql magento e-commerce thumbnails product

我导入了我的旧oscommerce网站,其中有15000个产品用于magento!

但不幸的是,缩略图不是自动定义的

http://imgur.com/cNdXd

我可以通过手工做,但15000个产品是一个大数字,我需要大量的时间来做它

如果有人能给我一个mysql命令将第一个产品图像设置为基本图像,小图像和缩略图会很棒

感谢

3 个答案:

答案 0 :(得分:1)

尝试通过api更新它们:

$proxy = new SoapClient('http://magentohost/api/soap/?wsdl');
$sessionId = $proxy->login('apiUser', 'apiKey');

$products = $proxy->call($sessionId, 'product.list');

foreach ($products as $product) {
    $images = $proxy->call($sessionId, 'product_media.list', $product['sku'])

    $imageFilename = $images[0]['file'];

    $proxy->call($sessionId, 'product_media.update', array(
        $product['sku'],
        $imageFilename,
        array('types' => array('image', 'thumbnail')
    ));
}

相关文档链接: http://www.magentocommerce.com/wiki/doc/webservices-api/api/catalog_product_attribute_media

http://www.magentocommerce.com/wiki/doc/webservices-api/api/catalog_product#catalog_product.list

答案 1 :(得分:0)

我遇到了这个SQL代码的问题,我得到了一个应该将你的第一个图像设置为图像,小图像和缩略图的地方:

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_code IN ('image', 'small_image', 'thumbnail')
    AND mgv.position = 1;

不会更改任何行......

另外,我在Magento CE v1.6.2中的image,small_image,thumbnail和media_gallery的attribute_id是使用EMSupermarket模板的106,109,493,703。

以下代码也没有做任何事情:

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 (106,109,493)
    AND mgv.position = 1;

任何人如何使用我的身份正确地执行此操作?

我的oscommerce产品导入发生的事情是导入的产品图片最终只在字段名称media_image下,但不是image,small_image或缩略图所以我想将media_image值复制到其他3,任何想法如何做这个?

答案 2 :(得分:0)

我遇到了同样的问题。我找到了这个页面并运行了该SQL命令,但也没有得到任何结果。但我修改它对我有用。这就是我所做的。

首先,我改变了第7行:     AND ev.attribute_code IN('image','small_image','thumbnail') 至     AND ev.attribute_ID ='74'

74是我对'image'的唯一属性id。这里你会有一个不同的号码。你可以在mySQL中找到它... 75表示'small_image',76表示'thumbnail'。

所以我运行了这个代码3次,每个属性号都运行1次。每次我更改第7行ev.attribute_ID ='75':

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 = '76'
    AND mgv.position = 1;