Benjamin de chez CM Posted May 12, 2011 Share Posted May 12, 2011 Bonjour,je cherche à créer un module qui soit configurable dans le back-office. C'est à dire qu'il faudrait pouvoir entrer des données dans la page d'administration du module dans le back-office, et récupérer ces données dans une variable pour pouvoir les exploiter dans mon code PHP et les afficher sur le front office.En l'occurrence, je cherche à faire une case où l'administrateur du site puisse entrer la date à laquelle les colis partiront après ses vacances (par exemple, "5 Juin"), et qu'ensuite, ces données soient affichées dans le front-office. Voilà ce que j'ai déjà fait :Fonction d'installation function install() { if (!parent::install() OR !$this->registerHook('home') OR !Configuration::updateValue($this->name.'_date_vacs', 'vide')) return false; return true; } Fonction de désinstallation function uninstall() { Configuration::deleteByName($this->name.'_date_vacs'); parent::uninstall(); } Fonction de configuration dans le back-office public function getContent () { $html = ''; if(Tools::isSubmit('enregistrer')) { Configuration::updateValue($this->name.'_dates_vacs', Tools::getValue('date_vacs')); $html .= $this->displayConfirmation($this->l('Vos paramètres ont bien été enregistrés.')); } $html .= 'Module Livraison Prévue <form action="'.$_SERVER['REQUEST_URI'].'" method="post"> Paramètres Date de retour des vacances : <input value="'.$date_vacs.'" type="text" id="retour_vacances"><br />Il s\'agit de la date de l\'expédition des colis qui sera affichée sur le site. Format : 15 Juin. Lundi de Pâques : <input value="'.$lundi_paques.'"type="text" id="lundi_paques"><br />Format : 15/06 pour le 15 Juin. Jeudi de l\'Ascension : <input value="'.$lundi_asc.'"type="text" id="lundi_asc"><br />Format : 15/06 pour le 15 Juin. Lundi de Pencôte : <input value="'.$lundi_pentecote.'"type="text" id="lundi_pentecote"><br />Format : 15/06 pour le 15 Juin. <input class="button" type="submit" name="enregistrer" value="'.$this->l(' Enregistrer les informations ').'" /> </form>'; return $html; } Et enfin, récupération de la variable : function hookHome($params) { //On récupère les valeurs du back-office. $date_retour_vacances = Configuration::get($this->name.'_dates_vacs'); //Suite de mon code... //Composition du message si on est en vacances. $vacances = TRUE; //Pendant les test, je la mets à "true" manuellement... if ($vacances == TRUE) { $message = "Nous sommes en vacances ! Les commandes passées d'ici là partiront le ".$date_retour_vacances.". Merci de votre compréhension."; } //Passage des valeurs au TPL. global $smarty; $smarty->assign('message',$message); } J'ai suivi pour cela différents tutoriels, notamment celui de Julien Breux, du blog eBuildy ou encore de Émilien Malebranche.Il me semblait avoir tout bien fait comme il faut, mais visiblement non, puisque le message de confirmation s'affiche bien après avoir appuyé sur le bouton "Enregistrer", mais la variable ne s'affiche pas dans le front-office !Merci à tous de votre aide et de vos réponses Link to comment Share on other sites More sharing options...
Benjamin de chez CM Posted May 12, 2011 Author Share Posted May 12, 2011 Bon ben... C'est un peu bête, mais j'ai résolu mon problème ^^ j'ai en fait repris le code d'un autre module, et ça fonctionne. Voilà le code complet (enfin, juste des "passages intéressants") : function install() { if (!parent::install() OR !$this->registerHook('home') OR !Configuration::updateValue('DATE_RETOUR', '') ) return false; return true; } function uninstall() { Configuration::deleteByName('DATE_RETOUR'); parent::uninstall(); } public function getContent () { $html = 'Module Livraison Prévue'; if(Tools::isSubmit('enregistrer')) { Configuration::updateValue('DATE_RETOUR', Tools::getValue('date_retour')); $html .= $this->displayConfirmation($this->l('Vos paramètres ont bien été enregistrés.')); } return $html.$this->displayForm(); } public function displayForm() { $html = ' <form action="'.$_SERVER['REQUEST_URI'].'" method="post"> Paramètres <textarea name="date_retour" style="width: 290px; height: 120px">' . Tools::getValue('date_retour', Configuration::get('DATE_RETOUR')) . '</textarea><br /> Il s\'agit de la date de l\'expédition des colis qui sera affichée sur le site. Format : 15 Juin. Lundi de Pâques : <input value="'.$lundi_paques.'"type="text" id="lundi_paques"><br />Format : 15/06 pour le 15 Juin. Jeudi de Ascension : <input value="'.$lundi_asc.'"type="text" id="lundi_asc"><br />Format : 15/06 pour le 15 Juin. Lundi de Pencôte : <input value="'.$lundi_pentecote.'"type="text" id="lundi_pentecote"><br />Format : 15/06 pour le 15 Juin. <input class="button" type="submit" name="enregistrer" value="'.$this->l(' Enregistrer les informations ').'" /> </form>'; return $html; } function hookHome($params) { //On récupère les valeurs du back-office. $date_retour_vacances = Configuration::get('DATE_RETOUR'); J'espère ne pas avoir d'autres problèmes ^^ en tous cas, maintenant, je suis débloqué. Link to comment Share on other sites More sharing options...
salazar Posted November 19, 2011 Share Posted November 19, 2011 bonjour je suis débutent de la création des modules prestashop , et je ne sais pas la différent entre les méthodes de configuration de module ( getContent, displayForm)... 1 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