Jump to content

Recommended Posts

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

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

  • 3 weeks later...

@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

  • 10 months later...

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 by emily_d (see edit history)
Link to comment
Share on other sites

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 by elisa_34 (see edit history)
Link to comment
Share on other sites

  • 3 months later...

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 by el_fantome (see edit history)
Link to comment
Share on other sites

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")

  • Like 1
Link to comment
Share on other sites

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