Besens Posted June 16, 2016 Share Posted June 16, 2016 (edited) Bonjour Je suis complètement débutant dans le développement de module pour Presta 1.6. Je veux faire un module que l'on peut configurer avec un code javascript à insérer dans le header. De ce fait, dans la fonction "getContent" de mon module, j'affiche un formulaire contenant un seul champ : "js_code", de type textarea. Jusque là tout fonctionne. Dans le backoffice, en configurant le module, si je rentre : <script>alert('toto')</script> et que je reviens ensuite sur la configuration du module, j'ai bien le code, tel que je l'ai rentré. Ensuite, dans ma fonction hookDisplayHeader, je faits un simple return de mon textarea de configuration : public function hookDisplayHeader($params) { return Configuration::get(Tools::strtoupper($this->name).'_JS_CODE'); } Maintenant, si je vais dans la partie front-office, les balises scripts ont été supprimées dans le code source. Pire, si je retourne dans la configuration du module, je ne trouve plus non plus les balises... Si quelqu'un peut me donner des pistes, je suis preneur. Merci d'avance Edited June 16, 2016 by Besens (see edit history) Link to comment Share on other sites More sharing options...
AC2ID Posted June 20, 2016 Share Posted June 20, 2016 Bonjour Essayez d'englober votre script avec la fonction smarty {literal} Cordialement Link to comment Share on other sites More sharing options...
Besens Posted June 21, 2016 Author Share Posted June 21, 2016 Dans la configuration du module, je rentre : {literal}<script>alert('toto')</script>{/literal} Mais dans la page générée j'obtiens : {literal} alert('toto') {/literal} Les balises ont été supprimées... Link to comment Share on other sites More sharing options...
Tiger-222 Posted June 21, 2016 Share Posted June 21, 2016 Essaye plutôt : <script> {literal} alert('toto') {/literal} </script> Link to comment Share on other sites More sharing options...
Besens Posted June 21, 2016 Author Share Posted June 21, 2016 J'obtiens le même résultat que mon précédent post... Link to comment Share on other sites More sharing options...
AC2ID Posted June 21, 2016 Share Posted June 21, 2016 (edited) Bonjour, Je viens de relire votre post et je pense que votre problème vient du fait que vous stockez du code html en base de données dans la table de configuration. Du coup les balises sont supprimées lors de l'insertion en BD. Si vous souhaitez utiliser du JS, vous devez faire un fichier.js que vous devez appeler dans le hookDisplayHeader ou hookDisplayBackOfficeHeader avec la méthode addJS. Comme vous débutez dans le dev PrestaShop, je vous conseil de consulter le site de doc de PrestaShop (En anglais car plus complet), voici le lien : http://doc.prestashop.com/display/PS16/Developer+Guide Bon apprentissage. Cordialement Edited June 21, 2016 by AC2ID (see edit history) Link to comment Share on other sites More sharing options...
Besens Posted June 22, 2016 Author Share Posted June 22, 2016 Bonjour C'est bien par ce lien que j'ai commencé, mais la doc est peu fournie pour démarrer. J'ai fait pas mal de tutos, plutôt orientés PS 1.5. Je note en tous cas, que pas possible de mettre du "tag" dans un champ de conf. Ça veut dire qu'il faut plutôt que je mette "toto" dans la conf. puis le template affichera le decorum JS autour. Merci Link to comment Share on other sites More sharing options...
touslesitesauto Posted June 22, 2016 Share Posted June 22, 2016 (edited) et avec le {literal} à l'extérieur... ça donne quoi ? {literal} <script> alert('toto') </script> {/literal} Edited June 22, 2016 by touslesitesauto (see edit history) Link to comment Share on other sites More sharing options...
Besens Posted June 22, 2016 Author Share Posted June 22, 2016 Le résultat est dans mon troisième Post. Link to comment Share on other sites More sharing options...
Tiger-222 Posted June 24, 2016 Share Posted June 24, 2016 AC2ID m'a mis sur la voie, comment stockes-tu la valeur de Tools::strtoupper($this->name).'_JS_CODE' ? Tu peux insérer du code HTML en BDD, il suffit de passer le 3ème paramètre à true : Configuration::updateValue(Tools::strtoupper($this->name).'_JS_CODE', $value, true); 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