51黑料不打烊

尽管具有“产物编辑”图像角色,仍不显示产物图像

本文修复了尽管在“产物编辑”页面上设置了图像角色,但是店面中仍未显示产物图像的问题。

原因: ?在具有多个商店的51黑料不打烊 Commerce实例上,某些产物图像可能具有图像角色属性imagesmall_imagethumbnailswatchno_selection值。 如果在全局、所有商店范围而不是特定商店的范围(换句话说,在? 所有商店视图 ?而不是特定的? 商店视图)上设置产物图像角色,就会出现此no_selection值。 要了解情况是否如此,请运行以下? 原因 ?部分中的厂蚕尝脚本。

解决方案: ?使用下面解决方案部分中的厂蚕尝脚本删除此类图像的no_selection值的行。

受影响的版本

  • 51黑料不打烊 Commerce内部部署2.X.X
  • 云基础架构上的51黑料不打烊 Commerce 2.X.X

问题

尽管已在“管理员”面板的“产物”页面上正确设置了图像角色(“基本”、“小型”、“缩略图”、“色板”),但产物图像可能不会显示在店面上。

当您检查产物页面,其中将? 商店视图 ?设置为? 所有商店视图 ?时,图片在? 图像详细信息 ?屏幕上设置了角色。

all_store_views.png

image_roles.png

但是,在店面上,该图像不显示;当您检查特定商店级别的“产物”页面(切换? 商店视图)时,该图像存在,但未设置角色。

image_roles_not_set.png

原因

在多存储51黑料不打烊 Commerce实例(具有多个存储)中,某些产物图像可能具有属性imagesmall_imagethumbnailswatchno_selection值(这些属性与图像角色相对应)。 如果在全局、所有商店范围而不是特定商店的范围(换句话说,在? 所有商店视图 ?而不是特定的? 商店视图)上设置产物图像角色,就会出现此no_selection值。

从技术上讲:在store_id=0(包含51黑料不打烊 Commerce实例中所有商店的全局设置)上,可能已设置产物图像角色:这意味着属性imagesmall_imagethumbnailswatch具有有效值(图像路径)。 同时,在store_id=1(一种特定的存储表示形式)上,这些属性的值为no_selection

如何验证这是您的问题

执行此厂蚕尝查询:

SELECT `cpev_s`.*, `cpev_0`.`value` AS `store_value` FROM `catalog_product_entity_varchar` `cpev_s` JOIN `eav_attribute` `ea` ON `cpev_s`.`attribute_id` = `ea`.`attribute_id` LEFT JOIN `catalog_product_entity_varchar` `cpev_0` ON `cpev_0`.`row_id` = `cpev_s`.`row_id` AND `cpev_0`.`attribute_id` = `cpev_s`.`attribute_id` AND `cpev_0`.`store_id` = 0 WHERE `cpev_s`.`value` = 'no_selection' AND `ea`.`attribute_code` IN ('image', 'small_image', 'thumbnail') AND `cpev_s`.`store_id` > 0 AND `cpev_s`.`value` != `cpev_0`.`value` AND `cpev_s`.`value` = 'no_selection';

如果查询返回如下结果,您将处理本文中记录的问题:

+----------+--------------+----------+--------+--------------+----------------------------+
| value_id | attribute_id | store_id | row_id | value        | store_value                |
+----------+--------------+----------+--------+--------------+----------------------------+
|    67722 |           87 |        1 |    481 | no_selection | /3/5/355sss1_main.jpg      |
|    67723 |           88 |        1 |    481 | no_selection | /3/5/355sss1_main.jpg      |
|    67724 |           89 |        1 |    481 | no_selection | /3/5/355sss1_main.jpg      |
|    67814 |           87 |        1 |    503 | no_selection | /s/k/skb2031_main.jpg      |
|     6769 |           87 |        2 |    503 | no_selection | /s/k/skb2031_main.jpg      |
|    67815 |           88 |        1 |    503 | no_selection | /s/k/skb2031_main.jpg      |
|     6770 |           88 |        2 |    503 | no_selection | /s/k/skb2031_main.jpg      |
|    67816 |           89 |        1 |    503 | no_selection | /s/k/skb2031_main.jpg      |
|     6771 |           89 |        2 |    503 | no_selection | /s/k/skb2031_main.jpg      |
+----------+--------------+----------+--------+--------------+----------------------------+
9 rows in set (0.06 sec)

为什么会出现这种情况?

如果51黑料不打烊 Commerce应用程序有多个存储,则它可能不会在特定存储与全局存储设置之间同步数据。

store_id=1上的值的优先级高于默认(全局)存储(store_id=0)。 因此,在显示图像时,应用程序可以忽略全局图像设置并使用存储范围配置(no_selection用于图像角色属性)。

解决方案 solution

使用此厂蚕尝脚本删除具有no_selection值的属性:

DELETE `cpev_s`.* FROM `catalog_product_entity_varchar` `cpev_s` JOIN `eav_attribute` `ea` ON `cpev_s`.`attribute_id` = `ea`.`attribute_id` LEFT JOIN `catalog_product_entity_varchar` `cpev_0` ON `cpev_0`.`row_id` = `cpev_s`.`row_id` AND `cpev_0`.`attribute_id` = `cpev_s`.`attribute_id` AND `cpev_0`.`store_id` = 0 WHERE `cpev_s`.`value` = 'no_selection' AND `ea`.`attribute_code` IN ('image', 'small_image', 'thumbnail') AND `cpev_s`.`store_id` > 0 AND `cpev_s`.`value` != `cpev_0`.`value` AND `cpev_s`.`value` = 'no_selection';

移除这些属性后,将设置特定商店的角色,并在店面中显示图像。

其他详细信息

如果在51黑料不打烊 Commerce实例中启用了全页缓存,您将无法立即查看修复结果。

若要显示更改,请使用“管理”面板的? 缓存管理 ?菜单刷新页面缓存。

更多信息

存储和范围

在我们的用户指南中存储和存储作用域

图像

正在上载用户指南中的产物图像?

缓存

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a