Child pages
  • Créer un module PrestaShop

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Les modules sont la meilleure manière de laisser votre talent de développeur et votre imagine imagination s'exprimer, tant les possibilités créatives sont nombreuses.

...

Les modules peuvent être aussi configurables que nécessaire ; plus ils le sont, plus ils seront utiles, et donc capables de répondre aux besoins d'un plus grand nombre d'utilisateurs.

L'un des principaux intérêt intérêts des modules et d'ajouter des fonctionnalités à PrestaShop sans devoir modifier ses fichiers internes, rendant possible le fait de mettre la solution à jour sans devoir recopier toutes ses modifications.

...

Tous les modules PrestaShop sont installés dans le dossier /modules, qui se trouve à la racine du dossier principal de PrestaShop. Cela s'applique autant aux modules par défaut (ceux fournis avec PrestaShop) et les qu'aux modules tiers que vous pourriez installer par la suite.

...

Créons tout d'abord le dossier du module. Il devrait avoir le même nom que le module, avec aucune espace, et uniquement des caractères alphanumériques, le tiret "-" et le caractère souligné "_", le tout en minuscule : /mymodule.

Ce dossier dossier doit contenir un fichier PHP du même nom, qui s'occupera de la plupart des traitements: mymodule.php.

...

La partie publique du module doit être définie dans un fichier .tpl placé à la racine du dossier du module. Les fichiers TPL peuvent prendre n'importe quel nom, s'il n'y en a qu'un seul, une bonne pratique consiste à lui donner le même nom que le dossier et le fichier principale principal : mymodule.tpl.

Ce fichier mymondule.php doit commencer avec le test suivant:

...

Celui-ci vérifie l'existence d'une constant constante PHP, et quitte si elle n'existe pas. Le seul but de ce test est d'empêcher les visiteurs d'accéder directement ce fichier.

...

Code Block
public function __construct()

Définit la le constructeur de la classe.

Code Block
$this->name = 'mymodule';
$this->tab = 'Test';
$this->version = 1.0;
$this->author = 'PrestaShop';

Cette section assign assigne une poignée d'attributs à l'instance de classe this :

  • Un attribut 'nomname'. Il s'agit d'un identifiant interne, donc il est préférable de s'assurer qu'il est unique, sans caractères spéciaux ni espaces, et de le garder en minuscule.
  • Un attribut 'tab'. C'est le nom du tableau qui contiendra ce module dans la liste des modules du back-office de PrestaShop. Vous pouvez utiliser un nom existant, comme Products, Blocks ou Stats, ou en choisir un personnalisé, comme nous l'avons fait ici. Dans ce dernier cas, un nouveau tableau sera ajouté avec votre titre.
  • Un numéro de version pour le module, qui est affiché dans la liste de modules.
  • Un attribut 'author'. Le nom de l'auteur est affiché dans la liste de modules de PrestaShop.

...

Sous cette première incarnation extrêmement simple, cette méthode est inutile, étant donné que tout ce qu'elle fait est vérifier la valeur renvoyer renvoyée par la méthode {{install}] () de la classe Module. Par ailleurs, si nous n'avions pas créé cette méthode, la méthode de la superclasse aurait été appelée de toute façon, amenant au même résultat.
Cependant, nous devons mentionner cette méthode, car elle nous sera très utile une fois que nous aurons à réaliser des tests et des actions lors du processus d'installation du module : créer des tables SQL, copier des fichiers, créer des variables de configuration, etc.

...

Lors de l'installation, PrestaShop ajoute également ajoute une ligne à la table SQL ps_module.

...

Code Block
titlemymodule.php (partial)
borderStylesolid
public function install()
  {
  if (parent::install() == false OR !$this->registerHook('leftColumn'))
    return false;
  return true;
  }

...

public function hookLeftColumn($params)
  {
  global $smarty;
  return $this->display(__FILE__, 'mymodule.tpl');
  }

public function hookRightColumn($params)
  {
  return $this->hookLeftColumn($params);
  }

Explorons les lignes ajoutées/modifiées :

...

Enregistrez le fichier, et vous pouvez d'ors ores et déjà l'accroche accrocher au thème, le déplacer et le greffer : aller au sous-onglet "Positions" de l'onglet "Module" du back-office, puis cliquer sur le lien "Greffer un module".

...

Enregistrez. La page "Positions" devrait se recharger, avec le message suivant : "Le module a bien été greffer greffé au hook". Félicitations ! Descendez dans la page, et vous devriez effectivement voir votre module parmi les autres modules dans la liste "Left column blocks". Déplacez-le en faut haut de la liste.

Affiche du contenu

...

Enregistrez le fichier dans le dossier racine du module, et rechargez la page d'accueil de la boutique : il devrait apparaître au en haut de la colonne de gauche, juste à côté du logo de la boutique.

...

Le lien affiché ne mène à rien pour le moment. Si vous avez besoin de le tester, ajoutez le fichier mymodule_page.php dans le dossier du module, avec un contenu minimal, tel qu'un simple "Bienvenu dans ma boutique !" La page résultante sera brute d'aspect, donc nous allons voir comment lui appliquer le style du thème.

Comme vous pouvez vous y attendre, nous devons créer un fichier TPL pour pouvoir exploiter le style du thème. Créons donc le fichier mymodule_page.tpl, qui contiendra notre message basique, et appelons ce fichier depuis mymodule_page.php, qui ajoutera le thème (en-tête, pied de page, etc.).

Tip

Vous devez vous efforcer d'utiliser des nom noms explicites et facilement reconnaissable reconnaissables pour vos fichier fichiers TPL, afin de les trouver facilement dans le back-office – ce qui est particulièrement important lors de l'utilisation de l'outil interne de traduction.

...

Au milieu de tout cela, nous place plaçons notre fichier TPL personnalisé, dont la seule action sera d'afficher la ligne "Bienvenu dans ma boutique !"

...

Tip

Si vous faites de nombreuses modifications et rechargement autant de rechargements de votre page d'accueil, il peut arriver que ces modifications ne s'appliquent pas. La cause de ceci est le cache de Smarty, qui conserve une version compilée de la page d'accueil. Pour forcer Smarty à recompiler les modèles à chaque chargement, vous devez vous rendre dans l'onglet "Préférences", dans son sous-onglet "Performances", et choisir "Oui" pour l'option "Forcer la compilation".

Ne forcez pas la compilation sur les sites en production, car cela ralentit sévèrement celui-ci !

...

Smarty est un moteur de modèle/template en PHP, et est utilisé par PrestaShop pour son système de thème.

Il parcours parcourt les fichiers TPL, à la recherche d'éléments dynamiques à remplacer par les données équivalentes, puis affiché le résultat ainsi produit. Ces éléments dynamiques sont indiqués avec des accolades : { ... }. Le programmeur peut créer de nouvelles variables et les utiliser dans ses fichiers TPL.

Par exemple, dans notre mymodule_page.php, nous pouvez pouvons créer une telle variable :

...

PrestaShop comprend un certain nombre de variables. Par exemple {$HOOK_LEFT_COLUMN} sera remplacé par le contenu de la colonne de de gauche, et donc le contenu de tous les modules qui ont été attachés au point d'accroche de la colonne de gauche.

Toutes les variables Smarty sont globales. Vous devriez donc faire attention à ne pas donner à vos variables un nom déjà utilisé par une autre variable Smarty, afin d'éviter les conflit conflits et les réécritures. Une bonne pratique consiste à éviter les nom noms trop simples, comme products, mais à préfixer du nom de votre module, voire de votre nom. Donc : {$mark_mymodule_product}.

Voici une liste de variables Smarty qui sont accessibles depuis toutes les pages :

...

Si vous avez besoin d'afficher toutes les variables Smarty de la page, ajouter ajoutez la fonction suivante :

Code Block
{debug}

Les commentaires sont formés avec un asterisqueastérisque.

Code Block
{* Cette ligne est commentée. *}

{*
Cette ligne également !
*}

A la différence des commentaires HTML, le code Smart Smarty commenté n'apparaît pas dans le fichier final.

...

Les chaînes de texte de notre module sont écrites en anglais, mais nous vondrons voudrons sans doute que les français puissent également utiliser notre module. Nous devons donc traduire ces chaînes en français, à la fois celle celles du front-office et celle celles du back-office. Cela pourrait être une tâche laborieuse, mais Smarty et les propres outils de traduction de PrestaShop facilitent cela.

...

Code Block
titlemymodule.php (partial)
borderStylesolid
...
$this->displayName = $this->l('My module');
$this->description = $this->l('Description of my module.');
...

Les chaînes des frichiers fichiers TPL devront être transformée transformées en contenu dynamique, qui que Smarty remplacera par le la traduction dans la langue choisie. Dans notre module d'exemple, ce fichier :

...

L'outil de traduction a besoin du paramètre mod pour faire la correspondance entre les chaînes et leurs traductions.
Les chaînes sont délimitées par des apostrophes. Si une chaîne contient des guillemets, ils devront être échappé échappés à l'aide d'un backlash :
\".

Ainsi, les chaînes peuvent être directement traduites dans PrestaShop : allez dans l'onglet "Outils", son sous-onglet "Traductions", et dans le menu déroulant "Modifier les traductions", choisissez "Traductions de module", puis cliquez sur le drapeau français pour commencer à traduire les modules en Français.

La page suivante affichera toutes les chaîens chaînes de tous les modules actuellement installés. Les modules dont toutes les chaînes sont déjà traduites ont leur bloc de chaînes replié, tandis que ceux ayant au moins une chaîne manquante ont le leur déplié. Afin de traduire les chaînes de votre module (celles qui ont été "marquées" avec la méthodes méthode l()), trouvez simplement votre module dans la liste (utiliser la recherche de votre navigateur), et remplissez les champs vides.

...

Tip

Chaque champ dispose d'une icône à sa droite. Elle vous permet d'obtenir une suggestion depuis Google Translate. Vous pouvez le survoler avec votre souris pour voir la suggestionssuggestion, et cliquer sur l'icône pour appliquer la suggestion au champ.

Les traductions automatiques ne sont pas toujours précises, vérifiez bien ce qui vous est proposé.

Les traductions sont enregistrées dans un nouveau fichier, fr.php (ou plus globalement, code-de-la-langguelangue.php, qui est généré par PrestaShop et ressemble à ceci :

...

Rejoignez notre forum à l'adresse http://www.prestashop.com/forums/, et lancez une recherche sur les mots clés en rapport avec votre problème. Si la recherche a besoin d'être précisée, utilisée utilisez le formulaire de recherche avancée. Et si aucune recherche ne vous apporte de réponse utile, lancez une nouvelle discussion, où vous pourrez être aussi prolixe que nécessaire au moment de décrire votre situation ; il vous faut bien sûr être d'abord membre du forum.

Certains forums conservent des discussion discussions en tête des autres discussions : ils contiennent des informations utiles, lisez-les bien.h.

Notre bug-tracker

S'il se trouve que votre problème vient d'un bug de PrestaShop plutôt que de votre code, envoyez un rapport de bug sur le bug-tracker de PrestaShop : http://forge.prestashop.com/ (il vous faudra vous enregistrer). Cela vous permet de discuter le problème directement avec les développeurs PrestaShop.

...

Adresse

Description

http://www.prestashop.com

Site officiel de l'application PrestaShop, de sa communauté, et de la société qui le maintientl'édite.

http://addons.prestashop.com

Place de marché pour les thèmes et modules.

http://www.prestabox.com

Laissez-nous héberger votre boutique !