Jump to content

[Résolu] Changer une fonction du coeur de PS par un module (pas par le dossier override)


Recommended Posts

Bonjour à tous,

 

Je dois modifier Prestashop pour y faire coller un système de billeterie, ce module est très simple, il doit exécuter une série d'action PHP lorsque le status d'une commande change (exemple, lorsque une commande passe d'un status impayé à payé, un billet doit être généré et envoyé par mail.)

 

Pour cela je dois modifier la fonction (méthode) updateOrderStatus de la classe HookCore, je fais à présent cela par le dossier "override/classes" qui permet de modifier le coeur de PS sans toucher au code directement, plus adapté aux mises à jour future et plus propre.

 

Seulement, pour mon module j'ai besoin de modifier plusieurs méthode de plusieurs classes et je vais donc devoir créer plusieurs fichiers dans ce dossier d'override avec mes modifs.

Je voudrais, pour que ce soit plus propre et paramétrable depuis l'interface d'admin, modifier les fonctions (méthodes) des classes du coeur de Prestashop par le biais d'un module, et non plus par le dossier override.

 

Si vous avez une solution pour faire ceci, je vous prie de bien vouloir m'éclairer, je n'arrive pas à croire que ce n'est pas possible, il y a forcément des modules qui demandent la modification du coeur !

 

Merci d'avance à tous pour vos réponses.

 

Pierre CIHOLAS.

Link to comment
Share on other sites

Bonjour à tous,

 

Je dois modifier Prestashop pour y faire coller un système de billeterie, ce module est très simple, il doit exécuter une série d'action PHP lorsque le status d'une commande change (exemple, lorsque une commande passe d'un status impayé à payé, un billet doit être généré et envoyé par mail.)

 

Pour cela je dois modifier la fonction (méthode) updateOrderStatus de la classe HookCore, je fais à présent cela par le dossier "override/classes" qui permet de modifier le coeur de PS sans toucher au code directement, plus adapté aux mises à jour future et plus propre.

 

Seulement, pour mon module j'ai besoin de modifier plusieurs méthode de plusieurs classes et je vais donc devoir créer plusieurs fichiers dans ce dossier d'override avec mes modifs.

Je voudrais, pour que ce soit plus propre et paramétrable depuis l'interface d'admin, modifier les fonctions (méthodes) des classes du coeur de Prestashop par le biais d'un module, et non plus par le dossier override.

 

Si vous avez une solution pour faire ceci, je vous prie de bien vouloir m'éclairer, je n'arrive pas à croire que ce n'est pas possible, il y a forcément des modules qui demandent la modification du coeur !

 

Merci d'avance à tous pour vos réponses.

 

Pierre CIHOLAS.

 

Pour exécuter du code lorsqu'une commande change, il n'est pas nécessaire de modifier le updateOrderStatus de HookCore en passant pas les override.

Il vaut mieux créer un module qui vienne s'accrocher sur ce hook UpdateOrderStatus et coder dans ce module le traitement souhaité.

 

Quelles autres classes avez vous besoin de modifier?

Link to comment
Share on other sites

Merci à vous Olea pour cette réponse très rapide !

 

Cela serait parfait, mais en cherchant longtemps (peut être mal) je n'ai pas trouvé le moyen de créer de hook accroché sur un autre (je n'ai trouvé que la méthode pour faire un hook qui s'accroche par le graphisme).

 

Donc oui l'idéal serait de créer un hook qui s'éxécute à chanque fois que le hook updateOrderStatus est appellé (peut on géré si mon hook s'éxécute avant ou après le hook du noyeau ?) et d'y mettre des actions dedans.

Pouvez vous m'indiquer comment faire ou un tutoriel expliquant cela ?

 

J'ai également besoin de modifier la fonction viewDetails de la classe AdminOrders, qui permet d'affiche dans la fiche de la commande les billets associés et peut être d'autres, je n'ai pas fini de coder tout le module.

 

Merci d'avance.

Link to comment
Share on other sites

Le hook UpdateOrderStatus est automatiquement appelé par PRestashop.

Pas besoin de gérer le déclenchement de l'appel, juste le code quand il est déclenché.

 

Sinon, un hook est appelé par un appel du style :

$result_str = Module::hookExec('lehookenquestion', array('param1'=>$valeur_param1,...));

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...