Comment créer une nouvelle page en utilisant le contrôleur frontal d’un module

Vous souhaitez donc créer une nouvelle page. C’est vraiment facile, il vous suffit d’écrire quelques lignes de code.

Ce tutoriel est pour PrestaShop 1.6. Les autres versions sont similaires mais peuvent légèrement différer.

Disons que nous voulons créer un contrôleur « Test » pour un module « MyModule« . Remplacez « Test » et « MyModule » par vos valeurs réelles.

  1. Tout d’abord, vous devez naviguer jusqu’au répertoire de votre module.
  2. Créez-y un nouveau répertoire « controllers« . Et à l’intérieur, créez un répertoire « front« .
    Ainsi, la structure des fichiers devrait être « mymodule/controllers/front/ »
  3. Dans ce répertoire « front », créez un nouveau fichier PHP : test.php
  4. Collez le code suivant dans ce fichier :
    1
    2
    3
    class MyModuleTestModuleFrontController extends ModuleFrontController
    {
    }

    Comme vous pouvez le voir, la classe du contrôleur étend ModuleFrontController et doit être appelée comme <module_name><controller_name>ModuleFrontController.

C’est tout !

Vous pouvez voir votre nouvelle page à l’URL suivante :
votre_site/index.php?fc=module&module=mymodule&controller=test
OU
votre_site/module/mymodule/test
Allez dans votre back-office à l’onglet Préférences > SEO & URLs. Là, vous pouvez cliquer sur « Ajouter une nouvelle page » et définir une URL simplifiée personnalisée pour votre page.

Maintenant, vous pouvez personnaliser la nouvelle page

Par exemple, utilisez la variable display_column_left pour contrôler l’affichage de la colonne de gauche.

1
2
3
4
class MyModuleTestModuleFrontController extends ModuleFrontController
{
    public $display_column_left = false;
}

Ajoutons du contenu à la nouvelle page

Créez un nouveau fichier de modèle : « mymodule/views/templates/front/test.tpl » et placez-y du texte.
Utilisez ce modèle :

1
2
3
4
5
6
7
8
9
class MyModuleTestModuleFrontController extends ModuleFrontController
{
    public function initContent()
    {
        parent::initContent();

        $this->setTemplate('test.tpl');
    }
}

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *