Les images de produit ne s’affichent pas malgré les rôles d’image de modification de produit
Cet article fournit un correctif lorsque les images du produit ne s’affichent pas sur votre storefront, malgré les rôles d’image définis sur la page de modification du produit.
Cause : sur les instances Adobe Commerce comportant plusieurs magasins, certaines images de produit peuvent avoir les valeurs no_selection
pour les attributs de rôle d’image image
, small_image
, thumbnail
, swatch
. Ces valeurs no_selection
’émergent lorsque le rôle d’image du produit est défini sur la portée globale de tous les magasins au lieu de la portée d’un magasin particulier (en d’autres termes, sur le toutes les vues de magasin au lieu d’une vue de magasin particulière). Pour comprendre si c’est votre cas, exécutez le script SQL à partir de la section Cause ci-dessous.
Solution : supprimez des lignes avec les valeurs no_selection
pour ces images à l’aide du script SQL de la section Solution ci-dessous.
Description description
Environnement
- Adobe Commerce On-Premise 2.X.X
- Adobe Commerce sur Cloud Infrastructure 2.X.X
Problème
Les images du produit peuvent ne pas s’afficher sur votre storefront, bien que les rôles d’image (Base, Petit, Miniature, Échantillon) aient été correctement définis sur la page du produit de votre panneau d’administration.
Lorsque vous vérifiez la page Produit avec l’option Vue du magasin définie sur Toutes les vues du magasin, les rôles sont définis sur l’écran Détails de l’image.
Cependant, sur le storefront, l’image ne s’affiche pas ; lorsque vous vérifiez la page Produit au niveau du magasin en particulier (en changeant la vue Store View), l’image est là mais les rôles ne sont pas définis.
Cause
Sur les instances Adobe Commerce multi-magasin (qui comptent plusieurs magasins), certaines images de produit peuvent avoir les valeurs no_selection
pour les attributs image
, small_image
, thumbnail
, swatch
(ces attributs correspondent aux rôles de l’image). Ces valeurs no_selection
’émergent lorsque le rôle d’image du produit est défini sur la portée globale de tous les magasins au lieu de la portée d’un magasin particulier (en d’autres termes, sur le toutes les vues de magasin au lieu d’une vue de magasin particulière).
D’un point de vue technique : sur store_id=0
(qui contient les paramètres globaux de tous les magasins de votre instance Adobe Commerce), les rôles d’image de produit peuvent être définis. Cela signifie que les attributs image
, small_image
, thumbnail
swatch
ont des valeurs valides (chemin d’accès aux images). En même temps, sur store_id=1
(qui est une représentation de magasin particulière), les valeurs de ces attributs sont no_selection
.
Comment vérifier que c’est bien votre problème
Exécutez cette requête SQL :
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';
Si la requête renvoie un résultat comme ci-dessous, vous gérez le problème décrit dans cet article :
+----------+--------------+----------+--------+--------------+----------------------------+
| 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)
Pourquoi cela arrive-t-il ?
Si l’application Adobe Commerce comporte plusieurs magasins, elle peut ne pas synchroniser les données entre un magasin spécifique et les paramètres du magasin global.
Les valeurs sur store_id=1
ont une priorité supérieure à celle du magasin (global) par défaut (store_id=0
). Ainsi, l’application peut ignorer les paramètres d’image globaux et utiliser la configuration de l’étendue du magasin (no_selection
pour les attributs de rôle d’image) lors de l’affichage d’une image.
Résolution resolution
Supprimez les attributs avec les valeurs no_selection
à l’aide de ce script SQL :
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';
Une fois ces attributs supprimés, les rôles de magasins spécifiques sont définis et les images sont affichées sur le storefront.
Détails supplémentaires
Vous ne pourrez pas voir immédiatement les résultats de la correction si le Cache de page complet est activé dans votre instance Adobe Commerce.
Pour que les modifications s’affichent, actualisez le cache de page à l’aide du menu Gestion du cache de votre panneau d’administration.
Informations supplémentaires
Magasins et étendues
Magasins et étendues de magasin dans notre guide de l’utilisateur
Images
Chargement des images du produit dans notre guide de l’utilisateur
Cache
- Gestion du cache dans notre Guide du système d’administration des utilisateurs.
- Gérez le cache dans notre documentation destinée aux développeurs.