chounpyt Posted October 1, 2015 Share Posted October 1, 2015 Bonjour je fais le suivi de mes commandes sur le ID commande, étant chronologiquement incrémenté c'est plus rapide de trouver la commande que le ID_order qui est une référence groupe de lettres je souhaite modifier les mails envoyés au client en remplaçant / ajoutant le ID commande, que dois ecrire dans le html à la place de {id_order} ? merci de votre aide Link to comment Share on other sites More sharing options...
stopher Posted October 1, 2015 Share Posted October 1, 2015 (edited) Salut, je trouve également cette référence bizarre . Tu peux effectivement ajouter des variables aux mails qui partent au clients, mais il faudra pour ça mettre les mains dans le code : Pour les mails de changement d'état, tu surcharge la méthode addWithemail de la classe orderHistory exemple : override/classes/order/OrderHistory.php <?php class OrderHistory extends OrderHistoryCore{ /** * @param bool $autodate Optional * @param array $template_vars Optional * @param Context $context Optional * @return bool */ public function addWithemail($autodate = true, $template_vars = false, Context $context = null){ if (!$context) $context = Context::getContext(); $data = array( '{id_order}' => $this->id_order ); if ($template_vars){ $data = array_merge($data, $template_vars); } return parent::addWithemail($autodate, $data, $context); } } Et pour avoir la même chose à la confirmation de commande ... il te faut surcharger PaymentModule.php Exemple : fichier override/classes/PaymentModule.php class PaymentModule extends PaymentModuleCore{ /** * Validate an order in database * Function called from a payment module * * @param int $id_cart * @param int $id_order_state * @param float $amount_paid Amount really paid by customer (in the default currency) * @param string $payment_method Payment method (eg. 'Credit card') * @param null $message Message to attach to order * @param array $extra_vars * @param null $currency_special * @param bool $dont_touch_amount * @param bool $secure_key * @param Shop $shop * * @return bool * @throws PrestaShopException */ public function validateOrder($id_cart, $id_order_state, $amount_paid, $payment_method = 'Unknown', $message = null, $extra_vars = array(), $currency_special = null, $dont_touch_amount = false, $secure_key = false, Shop $shop = null) { ... ... ... //contenu de la méthode d'origine ( copier - coller de la methode validateOrder dans le fichier classes/PaymentModule.php ) ... ... ... //Vers la ligne 622 dans la liste des paramétres balancés au template du mail, ajouter la ligne ... '{id_order}' => $order->id ... ... ... } } Voilà ... ne reste plus qu'à modifier tes templates de mail pour y mettre {id_order} dedans. ( et supprimer le fichier cache/class_index.php ) pour prendre en compte les surcharges faites En espérant avoir été clair pour toi. Ch. Edited October 1, 2015 by stopher (see edit history) Link to comment Share on other sites More sharing options...
chounpyt Posted October 1, 2015 Author Share Posted October 1, 2015 bonjour Stopher ... je pensais qu'il suffisait de remplacer id_order par autre chose dans le template je ne me sens pas capable de modifier le code... comment pourrais je être aidé davantage ? est-ce que ces modifs survivront à une montée en version ? Link to comment Share on other sites More sharing options...
stopher Posted October 1, 2015 Share Posted October 1, 2015 Tu peux déjà essayer , juste de créer le fichier : override/classes/order/OrderHistory.php et d'y coller le premier bloc de code que je t'ai donné ( tel quel ) ( et supprimer le fichier cache/class_index.php ) pour prendre en compte les surcharges faites Puis tester de changer un etat d'une commande qui envoie u mail avec la balise {id_order} dedans. Et là .. bravo tu as fait ta première surcharge de classe dans Prestashop. ( au pire tu supprime simplement ce fichier fraichement créé et hop te revoilà avec le comportement de base ) On en vient à ta question sur la montée en version , le principe de la surcharge est de modifier le comportement de base sans modifier le code d’origine, mais en donnant une nouvelle méthode . Tu peux de ce fait également ajouter des fonctionnalité de cette manière. Dans ce cas précis, tu ne modifies pas grand chose, et au pire ta surcharge ne fonctionnera plus .. mais le code de base de prestashop lui ne sera pas altéré . Ch. Link to comment Share on other sites More sharing options...
chounpyt Posted October 1, 2015 Author Share Posted October 1, 2015 et ben... j'ai presque réussi : tous mes templates de mails fonctionnent en affichant dorénavant le n° à la place du 'id_name' sauf... le mail de confirmation de commande pourtant le code me parait identique aux autres... il affiche 'n°{id_order}' au lieu du contenu y vois tu une erreur : <tr> <td align="left" style="background-color:#DB3484; color:#FFF; font-size: 12px; font-weight:bold; padding: 0.5em 1em;"> Détails de la commande n°{id_order}</td> </tr> <tr><td> </td></tr> <tr> <td align="left"> Commande: n°{id_order} nom <strong><span style="color:#DB3484;">{order_name}</span> passée le {date}</strong> <br >Mode de paiement: <strong>{payment}</strong> </td> Link to comment Share on other sites More sharing options...
stopher Posted October 2, 2015 Share Posted October 2, 2015 (edited) Super pas si compliqué hein Bon pour la confirmation de commande, c'est normal, le mail ne part pas vraiment de la même manière ( il ne passe pas par ta fonction surchargée "addWithemail" de "OrderHistory" ), il te faut donc surcharger une deuxième méthode ( deuxième bloc de code dans mon premier message ). Les etapes : - créer un nouveau fichier de surcharge override/classes/PaymentModule.php - commencer par y mettre ce contenu : <?php class PaymentModule extends PaymentModuleCore{ } - Aller dans le code de prestashop classes/PaymentModule.php pour copier tout le code de la méthode validateOrder La ligne à rechercher est la suivante : ( ligne 151 environ ) public function validateOrder($id_cart, $id_order_state, $amount_paid, $payment_method = 'Unknown', $message = null, $extra_vars = array(), $currency_special = null, $dont_touch_amount = false, $secure_key = false, Shop $shop = null) cette fonction a environ 750 linges, ne soit pas effrayé, on ne fait qu'un copier/coller - coller cette fonction à l'intérieur de notre ficher fraichement créé override/classes/PaymentModule.php class PaymentModule extends PaymentModuleCore{ //Coller ici } - Ajouter la variable de template {id_order} vers la ligne 722 tu verras il y en a pleins tu ne peux pas passer à coté '{id_order}' => $order->id, ( et supprimer le fichier cache/class_index.php ) pour prendre en compte les surcharges faites Et voilà ... la variable {id_order} est maintenant prise en compte à la confirmation de commande. Ne pas oublier de repasser aussi sur les PDF ( pdf, facture, avoirs etc ) Ch. Edited October 2, 2015 by stopher (see edit history) Link to comment Share on other sites More sharing options...
chounpyt Posted October 2, 2015 Author Share Posted October 2, 2015 Bonjour je ne trouves pas dans PS le fichier 'validate order', peux tu m'indiquer le chemin ? je suis une vraie 'gauffre' en code... désolé Link to comment Share on other sites More sharing options...
stopher Posted October 2, 2015 Share Posted October 2, 2015 Désolé, j'avais oublié de le préciser, de plus, j'ai fait une erreur de copier/coller dans mon précédent message. tout est corrigé maintenant tu peux reprendre mon dernier post donc ( depuis le début stp ) Ch. Link to comment Share on other sites More sharing options...
chounpyt Posted October 6, 2015 Author Share Posted October 6, 2015 Bonjour Stopher je suis rentré de déplacement et je reprends la tache : - merci pour avoir corrigé le code paymentmodule.php : j'ai créé le fichier et y est copié ton code dans le chemin overide/classes/paymentmodule.php par ailleurs du me dit : //Vers la ligne 622 dans la liste des paramétres balancés au template du mail, ajouter la ligne...//... dans quel fichier dois-je faire cet ajout, et ou puis-je le trouver ? Merci de ton aide 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