Dev On Web Posted March 15, 2012 Share Posted March 15, 2012 Bonjour à tous, J'essaie désespérément d'ajouter une page à Prestashop 1.5 mais sans succès pour le moment. - Création d'un contrôleur (dans override ou contrôleurs) - Page à la racine d'appel du contrôleur - Fichier TPL dans le thème Cependant, cela redirige toujours vers une erreur 404. Je pense qu'il y a une partie à faire en base de données... mais impossible de trouver quoi :/ J'ai bien vu les tables ps_page mais ça n'a pas l'air de fonctionner... Une petit aide serait la bienvenue ! Merci beaucoup. Link to comment Share on other sites More sharing options...
Raphaël Malié Posted March 15, 2012 Share Posted March 15, 2012 Bonsoir, regardez du côté des modules qui ajoutent des controlleurs front. Il y en a peu actuellement qui utilisent le nouveau système car je n'ai pas encore eu le temps de les déplacer, mais il y a le module loyalty par exemple. Cordialement Link to comment Share on other sites More sharing options...
Dev On Web Posted March 16, 2012 Author Share Posted March 16, 2012 Merci pour la réponse. J'ai parcouru ce module (loyalty) mais il ne semble pas ajouter de "page"... Ou alors, j'ai raté quelque chose^^ Que faut-il faire du côté du FrontController ? Link to comment Share on other sites More sharing options...
mexique1 Posted March 16, 2012 Share Posted March 16, 2012 C'est très simple : - Créer un fichier mymodule/controllers/front/default.php - Dans ce fichier créer une classe qui extends ModuleFrontController class MyModuleDefaultModuleFrontController extends ModuleFrontController { public function initContent() { parent::initContent(); $this->setTemplate('index.tpl'); } } - Créer un fichier mymodule/views/front/index.tpl, c'est la vue qui sera affichée Pour afficher la page du module, il faut invoquer la route module, comme suit : http://domain.com?fc=module&module=mymodule Tout se base sur les conventions de nommage. Pour ajouter un controller "Foo", il faut nommer le fichier foo.php et la classe MyModuleFooModuleFrontController, etc... Link to comment Share on other sites More sharing options...
Raphaël Malié Posted March 16, 2012 Share Posted March 16, 2012 @Ivoire : si ce module ajoute une page, mais il faut être connecté en tant que client et aller sur la page "mon compte" pour voir le lien qui amène vers la page du module Link to comment Share on other sites More sharing options...
olea Posted April 2, 2012 Share Posted April 2, 2012 @Raphael, L'architecture dans un module comporte 2 nouveaux répertoires (entre autre) : - controller dans lequel se trouvent les controllers - views dans lequel se trouvent les templates. Si un controller ou un hook veut ajouter un js ou un css par un addJS() ou addCSS(), dans quel répertoire ces JS et CSS doivent-ils être stockés ? Peuvent-ils alors être overridés par le thèmes ? Link to comment Share on other sites More sharing options...
Raphaël Malié Posted April 2, 2012 Share Posted April 2, 2012 Actuellement le comportement des JS et CSS n'a pas changé pour les modules, à cause de certaines contraintes techniques, il est donc possible de faire comme avant (les mettre à la racine, les overrider dans le thème, etc.) Link to comment Share on other sites More sharing options...
emily_d Posted February 14, 2013 Share Posted February 14, 2013 (edited) 3 remarques : - Ne pas oublier <?php et ?> dans votre controller !!! - Le tpl doit se trouver dans module/views/templates/front - On peut réécrire l'adresse de la nouvelle page dans Préférences > SEO & URLs et avoir shop.com/mapage Edit Une autre remarque, lorsqu'on a plusieurs langues le changement de langue (via le module blocklanguages) appelle le lien non réécrit. Il faut soir réécrire la méthode _prepareHook dans le module blocklanguages (Dispatcher::getInstance()->getController() nous donne le nom de la nouvelle page ou modifier le tpl par un hack. Le hack dans le template blocklanguages ressemble à ceci : {if isset($lang_rewrite_urls.$indice_lang)} <a href="{$lang_rewrite_urls.$indice_lang|escape:htmlall}" title="{$language.name}"> {else if $page_name == 'module-mon-module'} <a href="{$link->getPageLink('module-mon-module', true,$language.id_lang)}" title="{$language.name}"> {else} <a href="{$link->getLanguageLink($language.id_lang)|escape:htmlall}" title="{$language.name}"> {/if} Bien sûr cela implique d'ajouter une nouvelle condition pour chaque page. Je ne sais pas quelles seraient les conséquences, si on faisait simplement ça : {else} <a href="{$link->getPageLink($page_name, true,$language.id_lang)}" title="{$language.name}"> Edited February 14, 2013 by emily_d (see edit history) Link to comment Share on other sites More sharing options...
elisa_34 Posted February 17, 2013 Share Posted February 17, 2013 (edited) pour la 1.4, j'utilisais $FrontControllerCore = new FrontController(); $FrontControllerCore->displayHeader(); Par défaut à priori: public $displayHeader = true; sauf que je voudrais faire une page indépendante et pas un module (cette page se trouvant dans un répertoire different de prestashop, elle recupére déjà les variables de PS et tout fonctionnait bien dans la 1.4 puisque j'avais les variables, et le header de presta...) pour afficher le header dans ma page, j'ai du mal à saisir comment je dois étendre la class pour récuperer la classe ? merci ! Edited February 17, 2013 by elisa_34 (see edit history) Link to comment Share on other sites More sharing options...
vins Posted February 17, 2013 Share Posted February 17, 2013 (edited) Voila comment je procède... http://www.prestasho...98#entry1097698 En fin je fais un peu différemment... Je me suis créé deux classes à moi en overide qui affichent le header et le footer. Entre les deux, tu mets ton php Edited February 17, 2013 by vins (see edit history) Link to comment Share on other sites More sharing options...
elisa_34 Posted February 17, 2013 Share Posted February 17, 2013 mais tu utilises toujours la function deprecated ? Link to comment Share on other sites More sharing options...
el_fantome Posted May 29, 2013 Share Posted May 29, 2013 (edited) Tout a bien marché pour moi. J'étais entrain de mettre a jour un ancien module. Le seul problème est d'avoir le lien réécrit vers la nouvelle page créé. Je peux y accéder en utilisant manuellement le lien réécrit dans la partie Préférences > SEO & URLs mais par contre, je n'arrive pas à le récupérer automatiquement :/ Autre question, dans mon module, je doit récuperer une variables GET, mais je ne sais comment faire pour avoir un joli lien réécrit contenant la variable Quelqun peut aider svp? (@emily_d ?) Edited May 29, 2013 by el_fantome (see edit history) Link to comment Share on other sites More sharing options...
emily_d Posted May 29, 2013 Share Posted May 29, 2013 Tout a bien marché pour moi. J'étais entrain de mettre a jour un ancien module. Le seul problème est d'avoir le lien réécrit vers la nouvelle page créé. Je peux y accéder en utilisant manuellement le lien réécrit dans la partie Préférences > SEO & URLs mais par contre, je n'arrive pas à le récupérer automatiquement :/ Autre question, dans mon module, je doit récuperer une variables GET, mais je ne sais comment faire pour avoir un joli lien réécrit contenant la variable Quelqun peut aider svp? (@emily_d ?) Pour faire un lien vers ta page réécrite, tu trouveras dans SEO-URL après l'ID un nom qui ressemble à : module-mon_module-nom_controller. Il suffit ensuite de faire : {$link->getPageLink('module-mon_module-nom_controller', false)} Pas sûr de comprendre l'autre question. Mais tu peux passer ta variable comme ceci : {$link->getPageLink('module-mon_module-nom_controller', false)}?ma_variable=5 Et la récuperer ensuite avec Tools::getValue("ma_variable") 1 Link to comment Share on other sites More sharing options...
el_fantome Posted May 30, 2013 Share Posted May 30, 2013 Entre temps, j'ai pu trouver une solution partielle pour les liens réécrit avec la variable GET (la même que tu viens de proposer ) Sinon, Merci pour ton aide que j'apprécie vraiment 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