Nous avons besoin d’un moyen simple d’ajouter un attribut à un enregistrement client qui ne soit pas éditable par le client ou l’administrateur, mais uniquement par programme. Nous avons essentiellement un site ExpressionEngine couplé à Magento.
Nous nous authentifions via le service Web et souhaiterions stocker dans le fichier du client certains fichiers JSON que nous aurons renvoyés de l'authentification et les mettre à jour à chaque connexion.
Nous voudrons également que les données soient modifiées si elles changent des informations dans le processus de paiement, telles que l'adresse de livraison. Nous renverrons ensuite les données à notre service Web, comme nous le faisons actuellement avec chaque commande.
Est-ce difficile à faire, car nous stockons maintenant des fichiers JSON sur chaque produit à l'aide d'un attribut personnalisé avec l'extension Options personnalisées de MageWorx?
J'ai utilisé le Créateur de module en ligne ici http://www.silksoftware.com/magento-module-creator/ mais je ne sais pas comment modifier ou récupérer la valeur une fois le module installé.
Où pourrais-je apprendre à écrire une extension pour faire ceci?
customer_entity
table, vous devez ajouter la colonne à la table et dans le script qui ajoute l'attribut (voir ma réponse ci-dessous), remplacez le type devarchar
àstatic
.customer_entity
table. Et mon attribut est de type 'select'. Je veux enregistrer la valeur de mon attribut directement dans cette colonne 'custom_column'customer_entity
. Comment faire ça?Réponses:
/app/code/local/Your/Customattribute/sql/your_customattribute_setup/install-0.1.0.php
/app/code/local/Your/Customattribute/etc/config.xml
app / etc / modules / Your_Customattribute.xml
Ensuite, pour récupérer ou éditer vous utilisez:
Vous devrez créer des observateurs d’événement pour l’événement de connexion, la réponse est la suivante: Comment puis-je obtenir les données client d’observateur après une connexion réussie?
et également des observateurs probables pour customer_save_after au cas où ils modifieraient leur adresse dans le compte, et un pour le devis, qui pourraient se trouver à différents endroits en fonction de vos objectifs.
la source
Vous devrez créer de nombreuses fonctionnalités personnalisées en tant que classes de substitution de modules personnalisés et vous connecter à des événements pour lesquels vous souhaitez que les données soient transmises à votre service Web. En ce qui concerne l'attribut, lorsque vous créez votre module personnalisé et définissez une ressource de configuration pour celui-ci dans le module,
config.xml
comme dans le tutoriel ci-dessus, puis dans votre script d'installation, vous pouvez procéder de la manière suivante:[chemin_module] / sql / [numéro_noeud_ressource_in_config_xml] / mysql4-install- [numéro_version_module] .php
user_defined
fait de l'attribut unsystem
attribut s'il est défini sur0
, ce qui désactive la possibilité de le supprimer de l'administrateur.la source
Après beaucoup de débogage de base, j'ai découvert que magento s'attend à ce que le fichier se trouve dans data / Companyname_Modulname_setup / ou dans sql / Companyname_Modulname_setup / .
Et il doit être nommé
mysql4-data-upgrade-OLDVERSION-NEWVERSION.php
par exemplemysql4-data-upgrade-0.1.0-0.1.0.php
au lieu demysql4-install-0.1.0.php
Au moins sur Magento 1.9.3
la source