Magento - 用于在产品图像上设置“排除”的SQL命令

时间:2011-02-27 20:18:30

标签: sql magento

我想知道是否有一些我可以运行的SQL命令,它将设置任何只有1个图像的产品来从图像库中“排除”该图像。添加以下内容会将所有排除设置为1(或者换句话说勾选“排除”图像框):

UPDATE catalog_product_entity_media_gallery_value
SET disabled = 1

但我只需要对包含1张图片的产品执行此操作,并将任何超过1张图片的产品“取消排除”(或“禁用= 0”)。

Magento版本是1.4.2.0。

干杯

更新:我发现以下内容正在做类似的事情,尽管我只想要只包含1张图片的产品:

- 将所有图像设置为已启用(“排除”取消选择)

update catalog_product_entity_media_gallery_value set disabled = 0;

- 将所有主要图像设置为已禁用(选择“排除”),以便它们不会显示在“更多视图”中

update catalog_product_entity_media_gallery_value set disabled=1 where value_id in (select value_id from catalog_product_entity_media_gallery where value in (select value
from catalog_product_entity_varchar where attribute_id=(select attribute_id from eav_attribute where attribute_code=’image’ and entity_type_id=4)))

2 个答案:

答案 0 :(得分:3)

好的,这似乎可以解决问题:

UPDATE catalog_product_entity_media_gallery_value SET disabled = 0; 
UPDATE catalog_product_entity_media_gallery_value AS mgv,
(SELECT entity_id, COUNT(*) as image_count, MAX(value_id) AS value_id
FROM catalog_product_entity_media_gallery AS mg
GROUP BY entity_id
HAVING image_count = 1) AS mg
SET mgv.disabled = 1
WHERE mgv.value_id = mg.value_id 

答案 1 :(得分:2)

我建议您更改主题的template/catalog/product/view/media.phtml文件,以便仅在显示多个图像时显示图库(我认为这是您要实现的目标? )。将以下行从0更改为1

<?php if (count($this->getGalleryImages()) > 0): ?>

这样做的好处是,每次添加新产品时都不需要重新运行SQL。

HTH,
JD