2 votes

Ajout manuel d'options personnalisées à des produits existants

J'essaie d'ajouter des options personnalisées à des produits déjà existants dans Magento. Cela semble fonctionner correctement, j'ai ajouté les lignes nécessaires dans les tables suivantes :

catalog_product_option
catalog_product_option_title
catalog_product_option_type_value
catalog_product_option_type_price
catalog_product_option_type_title

J'ai également mis à jour has_options y required_options pour le bon produit, dans les tableaux suivants :

catalog_product_entity
catalog_product_flat_1
catalog_product_flat_2
catalog_product_flat_3

Lorsque j'ouvre le produit, les options ne s'affichent pas, en fait, elles s'affichent moins. Le bouton pour le commander disparaît. Lorsque j'ouvre le éditer elle affiche les options. Après l'enregistrement, il apparaît également sur le front-end.

Qu'est-ce qui m'échappe ?

Mise à jour : Après avoir parcouru manuellement toutes les requêtes exécutées après une action de sauvegarde, j'ai découvert ce qu'il me manquait. Lorsqu'un produit a des options, il doit les afficher dans un format différent. modèle (ou quel que soit son nom dans Magento). Pour ce faire, vous devez modifier la valeur de l'attribut options_container .

Il existe donc une solution très simple pour résoudre ce problème. Il suffit de consulter le attribute_id dans le tableau eav_attribute . Il suffit ensuite d'exécuter la requête suivante pour chaque produit :

UPDATE `catalog_product_entity_varchar` SET `value` = 'container1' WHERE `attribute_id` = 836 AND `entity_id` = $productId;

Cela fera l'affaire ! :)

0voto

Guido Hendriks Points 2723

Après avoir parcouru manuellement toutes les requêtes exécutées après une action de sauvegarde, j'ai découvert ce qu'il me manquait. Lorsqu'un produit a des options, il doit les afficher dans un format différent. modèle (ou quel que soit son nom dans Magento). Pour ce faire, vous devez modifier la valeur de l'attribut options_container .

Il existe donc une solution très simple pour remédier à ce problème. Il suffit de consulter le attribute_id dans le tableau eav_attribute . Il suffit ensuite d'exécuter la requête suivante pour chaque produit :

UPDATE `catalog_product_entity_varchar` SET `value` = 'container1' WHERE `attribute_id` = 836 AND `entity_id` = $productId;

Cela fera l'affaire ! :)

0voto

Nick McCormack Points 510

Vous ne devriez pas accéder directement à la base de données pour quelque raison que ce soit. Cela nuit à la puissance et à l'ingéniosité de l'utilisation d'un système de VAE.

  1. Étendre Mage.php si en dehors de magento (ignorer si ce n'est pas le cas)
  2. Créez une collection de toutes les entités que vous souhaitez manipuler
  3. Utiliser ladite collection pour écrire/lire des données
  4. Évitez les maux de tête à l'avenir !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X