Pierre.CIHOLAS Posted March 12, 2012 Share Posted March 12, 2012 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 More sharing options...
olea Posted March 12, 2012 Share Posted March 12, 2012 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 More sharing options...
Pierre.CIHOLAS Posted March 12, 2012 Author Share Posted March 12, 2012 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 More sharing options...
olea Posted March 12, 2012 Share Posted March 12, 2012 Vous avez quelques infos sur le blog: http://www.prestashop.com/blog/fr/mieux_comprendre_et_utiliser_les_hooks_par_julien_breux/ Sinon, la documentation décrit comment faire Link to comment Share on other sites More sharing options...
Pierre.CIHOLAS Posted March 12, 2012 Author Share Posted March 12, 2012 Excusez moi mais ce que j'ai lu dans ce tutoriel m'a appris à créer un nouveau hook, pas à l'appeler lorsqu'un autre hook est exécuté, c'est ce dernier point que je n'arrive pas à réaliser. Link to comment Share on other sites More sharing options...
olea Posted March 12, 2012 Share Posted March 12, 2012 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 More sharing options...
Pierre.CIHOLAS Posted March 12, 2012 Author Share Posted March 12, 2012 Un très grand merci à vous Olea, je pense y arriver grâce à ces informations. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now