Jump to content

[Résolu] Créer un module configurable dans le back-office


Recommended Posts

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

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

  • 6 months later...

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...