2010-12-03 4 views
12

J'ai un magasin Magento qui compte environ 3 000 produits. Presque tous ces produits sont associés à une seule image.Faire de toutes les images du magasin les images de base, petites et miniatures dans Magento?

Pour une raison quelconque, même si j'ai défini la petite image et l'image miniature comme identiques à l'image de base dans le fichier CSV d'importation, seule l'image de base est définie pour chaque produit. Cela signifie que lorsque vous recherchez un produit, vous obtenez un espace réservé - mais une fois que vous entrez dans la page du produit, vous obtenez l'image correcte. Cela peut être facilement résolu en allant dans la page d'administration du produit et en sélectionnant les cases pour les petites images et vignettes. Le problème est qu'avec 3000 images, cela prendrait beaucoup de temps à faire manuellement. J'ai trouvé une commande SQL que devrait faire toutes les images de base, petites et vignettes mapper la première image pour chaque produit. Comme je n'ai qu'une seule image pour chaque produit, cela devrait être parfait. Cependant, cela ne fait rien. Il dit 0 lignes changées.

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 

Est-ce que quelqu'un sait pourquoi cela ne fonctionne pas?

Merci,

Danny

Répondre

19

Après avoir fait un changement comme celui de la base de données, même en cas de succès, vous devez reconstruire le cache des images dans la gestion du cache.

Vous pourriez être en mesure de le faire avec un script comme celui-ci et ne pas s'inquiéter de la mise en cache ou de l'indexation. Enregistrez-le dans votre répertoire Magento et accédez-y en tapant l'URL dans la barre d'adresse de votre navigateur. Je n'ai pas encore testé ce script.

+0

Je suis désolé, quand je teste votre code, il ne peut pas fonctionner. Pourquoi. j'ajoute echo 'down!'; après votre code. il ne le produit pas. – user1188320

+1

@ user1188320 Assurez-vous que [display_errors on] (http://www.php.net/manual/fr/errorfunc.configuration.php#ini.display-errors) vous permet de voir ce qui s'est mal passé. Si la mémoire est insuffisante, augmentez la [memory_limit] (http://www.php.net/manual/fr/ini.core.php#ini.memory-limit). – clockworkgeek

+0

même numéro. J'ai fait la même chose mais je reçois la page vide? @clockclockgeek –

1

Je sais que c'est un vieux message, mais au cas où quelqu'un a le même problème, alors le problème était avec le ev.attribute_id. Code mis à jour ci-dessous:

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 

Merci.

21

Juste comme un avertissement à quiconque (comme moi!) Qui veut essayer ce script. J'ai couru ça sans réfléchir et ça a changé tous les noms de produits!

  1. Entrez dans votre panneau d'attributs, trouvez les attributs image/petite image/vignette.
  2. Notez les ID (les miens dans ce cas étaient 85,86 et 87)
  3. Modifier la requête pour refléter ces ID.

Donc, ma requête ressemble:

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; 
+0

Oui, je viens de faire ça. Bonne sauvegarde pour tous ceux qui trouvent cet article PREMIER :). –

+0

Ceci est la vraie réponse et devrait moi marqué comme tel. Je vous remercie! – KPheasey

+0

Cette solution fonctionne, mais elle affiche maintenant la même image que la vignette dans le panier, le mini-panier et la page de paiement. Dans la page de détail du produit, il montre une image correcte. Aidez-moi à résoudre ce problème. – Krupal

1

J'utilise la méthode de stereo_world sur magento 1.7.0.2 et il a très bien fonctionné. (Je ne peux pas voter parce que je suis nouveau sur stackoverflow)

Je ne sais pas où il voit l'identifiant de l'attribut dans le panneau d'attributs, parce que je n'y vois aucun identificateur numérique. J'ai trouvé les ids (85,86,87) en ouvrant phpMyAdmin et en regardant dans la table eav_attribute.

Comme l'a fait remarquer clockworkgeek - le rinçage de réindex/cache est nécessaire.

+0

J'ai trouvé l'ID d'attribut dans l'URL de la page d'attributs de gestion. Ainsi, par exemple, 'index.php/admin/catalog_product_attribute/edit/attribute_id/85/key/c2069ce458b67f8598a3660bf2c8edf6 /' (l'ID venant après l'attribut_id) –

0

@ user2321249 Pour trouver l'identificateur d'attribut dans CE 1.9.1, accédez à la page d'informations d'attribut et consultez l'URL. Par exemple, dans le moteur d'administration, sélectionnez Catalogue-> Gérer les attributs. Recherchez l'attribut de vignette et sélectionnez-le. Avec mon système, l'URL est:

www.example.com/magento/index.php/admin/catalog_product_attribute/edit/ attribute_id/87/clé/f759b57c21a7c75f33095a243f44b2a5/

Vous pouvez facilement dire la vignette attribut_id dans mon système est de 87. Faites de même pour l'image de base et la petite image.

0

Je l'ai travail en utilisant l'astuce suivante pour la version 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 

Remplacez ensuite la valeur 75 avec 76 et importer à nouveau la requête. Assurez-vous de remplacer les valeurs de l'attribut ID par votre propre

Questions connexes