Cirice Posted January 16 Share Posted January 16 Bonjour, Je souhaite ajouter 2 champs Téléphone sur le formulaire de contact et qu'ils soient affichés dans le mail reçu et dans SAV. Grâce à un tuto de H. Hennes et Nula Bord, j'ai obtenu ce que je voulais. Je voudrais maintenant aller plus loin, réaliser cela via un module afin de ne pas avoir à toucher aux fichiers de PS au cas où je souhaite retirer ces champ. Je suis sur un PS 1.7.8.10. Donc, de base, la fonctionnalité nécessitait : 1. Créer le code à afficher dans le tpl de contactform => je souhaite ajouter juste un hook 2. Créer un override de modules/contactform/contactform.php afin de modifier les functions getWidgetVariables et sendMessage 3. Modifier les fichiers mail contact.html et contact.txt Alors, j'ai créé un dossier contactformfields avec un fichier php pour l'installation, la désinstallation, la création d'un hook. Un sous-dossier override/modules/contactform/ avec un fichier contactform.php contenant le code de l'override. Un sous dossier views/templates/hook/ avec un fichier hookContactFormAdditionnalFields.tpl dans lequel j'ai mis le code pour afficher les champs supplémentaires, exactement tel que je l'avais d'abord ajouté directement dans le fichier tpl de contactform, avec les variables pour les deux champs ($contact.phone1 et $contact.phone2). Je rappelle que c'était fonctionnel sans module. L'installation se fait bien, l'override est bien ajouté. Vidage de cache (par ailleurs désactivé), tout le toutim. Mais ... ça ne marche pas. Erreur : Notice: Undefined index: contact in 9f2fdf73658af9f102f5947ccdb8337ca0faab8e_2.file.hookContactFormAdditionnalFields.tpl.php line 29 Si dans le fichier tpl du hook je mets du code sans les variables, pas de souci. J'en conclus donc qu'il n'arrive pas à faire le lien entre les variables du tpl du hook et l'override dans lequel ces variables sont traitées. Et là, je ne sais plus quoi essayer. J'ai cherché dans la doc, dans les forums, je ne trouve pas de piste. J'imagine que, dans le fichier php du module, il faut lui dire qu'il doit utiliser le fichier de modules/contactform et que, vu que celui-ci est overridé, hop, il va l'utiliser automatiquement ? Mais comment ? Si quelqu'un avait la grande bonté de me donner un chouïa de piste, ce serait vraiment très sympa ! Voici le code de contactformfields après je ne sais combien de modifs, d'ajouts et de retraits ... <?php /** /* */ if (!defined('_CAN_LOAD_FILES_')) { exit; } use PrestaShop\PrestaShop\Core\Module\WidgetInterface; class contactformfields extends Module { public function __construct() { $this->name = 'contactformfields'; $this->tab = 'others'; $this->author = ''; $this->version = '0.1.1'; $this->bootstrap = true; parent::__construct(); $this->displayName = $this->l('contactformfields'); $this->description = $this->l('contactformfields allows to add phone fields in the contact form page'); $this->confirmUninstall = $this->l('Are you sure you want to uninstall?'); $this->ps_versions_compliancy = array('min' => '1.7.0.0', 'max' => _PS_VERSION_); } public function install() { return parent::install() && $this->registerHook('contactFormAdditionnalFields'); } public function uninstall() { if (!parent::uninstall()) { return false; } return true; } public function initContent() { parent::initContent(); $this->setTemplate = 'module:contactformfields/views/templates/hook/hookContactFormAdditionnalFields.tpl'; } /** * Hook spécifique créé par le module pour afficher les nouveaux champs * @param array $params */ public function hookContactFormAdditionnalFields($params) { return $this->display(__FILE__, 'views/templates/hook/hookContactFormAdditionnalFields.tpl'); } /** * Validation des champs additionnels du formulaire * * @param type $params */ public function hookActionValidateContactFormAdditionnalFields($params) { } } Mille mercis ! Link to comment Share on other sites More sharing options...
Eolia Posted January 16 Share Posted January 16 Avant de faire le setTemplate() il manque le smarty->assign() qui affecte les données aux variables du tpl. Link to comment Share on other sites More sharing options...
Cirice Posted January 16 Author Share Posted January 16 Merci Eolia, Mais justement, comment fais-je pour lui dire qu'il doit aller chercher les infos dans l'override ? Link to comment Share on other sites More sharing options...
Eolia Posted January 16 Share Posted January 16 Ce serait pas ça qu'il faut mettre ? class contactformfields extends contactform { https://devdocs.prestashop-project.org/1.7/modules/concepts/overrides/#override-a-module Link to comment Share on other sites More sharing options...
Cirice Posted January 16 Author Share Posted January 16 ahh de fait, plus d'erreur. Je m'étais pourtant basée sur un ancien module de H. Hennes pour 1.6. Mais le hook n'est pas chargé, les champs n'apparaissent pas. Ma grammaire est-elle correcte pour la function du hook ? Merci Eolia ! Link to comment Share on other sites More sharing options...
Eolia Posted January 16 Share Posted January 16 Vous n'avez pas besoin de faire un autre module, il suffit de faire l'override. https://build.prestashop-project.org/howtos/module/how-to-override-modules/ 1 Link to comment Share on other sites More sharing options...
Cirice Posted January 16 Author Share Posted January 16 ok, c'était par ça que j'avais commencé mais il me semblait que c'était plus "propre" de faire un module qui m'aurait permis d'ajouter ou retirer facilement les champs ajoutés sans devoir aller remodifier des fichiers. Mais si ce n'est plus dans l'air du temps, j'abandonne car je viens de constater qu'avec le changement fait sur extends, maintenant ça bugue dans l'admin, je ne peux plus ouvrir la page des modules 🙂 Un tout grand merci en tout cas de vous être penché sur mon souci ! Link to comment Share on other sites More sharing options...
hhennes Posted January 17 Share Posted January 17 Le module d'exemple était pour la version 1.6 et date d'il y'a pas mal d'années. 😅 Une approche plus simple et plus actuelle si on n'a pas besoin de la gestion SAV serait de remplacer totalement ce formulaire par un module de formulaire riche qui permets de mettre les champs qu'on souhaites. Link to comment Share on other sites More sharing options...
Cirice Posted January 18 Author Share Posted January 18 Bonjour hhennes et merci. C'était justement pour un 1.6 que je cherchais à faire un module :-). Ca fonctionnait très bien avec le code intégré dans les fichiers idoines, je voulais juste me compliquer un peu l'existence 🙂 Link to comment Share on other sites More sharing options...
Divine Posted January 21 Share Posted January 21 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