Child pages
  • Créer un module PrestaShop

Versions Compared

Key

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

...

  • Un dossier racine, portant le même nom que le module, qui contient tous les fichiers du module et se trouve dans le dossier /modules de PrestaShop.
  • Un fichier PHP principal, portant le nom du module, placé à la racine de ce dossier. Ce fichier PHP doit avoir le même nom que le dossier du module.
  • Deux fichiers icônes, afin de représenter le module dans le back-office :
    • Un fichier pour PrestaShop 1.4 (si besoin) : logo.gif, 16*16 pixels.
    • Un fichier pour PrestaShop 1.5 : logo.png, 32*32 pixels.
  • Facultatif : un fichier template .tpl, contenant le thème du module.
  • Facultatif : un fichier de langue, si le module ou son thème affichent des chaînes de texte (qui doivent, de fait, être traduites).
  • Facultatif : dans un dossier /themes/modules, un dossier avec le même nom que le module, contenant les fichiers .tpl et de traduction si nécessaire. Ce dernier dossier est essentiel pendant les modifications d'un module existant, afin que vous puissiez l'adapter sans jamais toucher à toucher ses fichiers originaux. Notamment, il vous permet de gérer l'affichage d'un module de différentes manières en fonction du thème actuel.

...

  • Le fichier de démarrage : nom_du_module.php
  • Le fichier de configuration du cache : config.xml
  • Les contrôleurs spécifiques au module, stockés dans le dossier /controllers
  • Les classes de surcharge, stockées dans le dossier /override (installation et désinstallation automatique par copie ou par fusion du code)
  • Les fichiers de vue (templates, JavaScript, CSS, etc.). Ils peuvent être placés dans ces dossiers du module :
    • dossier /views/css pour les fichiers CSS. Si le module doit être compatible avec PrestaShop 1.4, les fichiers CSS doivent être placés à la racine du module, dans un dossier /css.
    • dossier /views/img pour les fichiers image. Si le module doit être compatible avec PrestaShop 1.4, les fichiers image doivent être placés à la racine du module, dans un dossier /img.
    • dossier /views/js pour les fichiers JavaScript. Si le module doit être compatible avec PrestaShop 1.4, les fichiers JS doivent être placés à la racine du module, dans un dossier /js.
    • dossier /views/templates/admin  pour les fichiers utilisés par les contrôleurs admin du module.
    • dossier /views/templates/front pour les fichiers utilisés par les contrôleurs front du module.
    • dossier /views/templates/hook pour les fichiers utilisés par les hooks du module.
    À partir de la v1.5, les fichiers JavaScript et CSS peuvent être placés dans ces sous-dossiers :
    • dossier /views/css pour les fichiers CSS.
    • dossier /views/js pour les fichiers JavaScript.v  

      Info

      Vous pouvez placer vos fichiers CSS, JavaScript et images dans n'importe lequel des dossiers autorisés. Efforcez-vous surtout d'être cohérent, et en cas d'overload, de toujours utiliser le même chemin que le code original.

  • Logo du module en 16x16 : nom_du_modulelogo.jpg (format JPG ou GIF)
  • Logo du module en 32x32 : name_om_du_modulelogo.png (format PNG)
  • Fichiers de traduction : fr.php, en.php, es.php, etc. À partir de la v1.5, tous ces fichiers peuvent être placés dans le dossier /translations.

...

Voici le rendu du formulaire tel qu'actuellement écrit – comme vous pouvez le voir vous-mêmes même en cliquant sur le lien "configurer" du module dans le back-office :

...

Les chaînes du module sont écrites en anglais, vous pourriez vouloir que vos les propriétaires de boutiques français, espagnols ou polonais puissent également utiliser le module. Vous devez donc traduire ces chaînes dans ces différentes langues, que ce soit pour les chaînes du back-office comme celles du front-office. Idéalement, vous devriez traduire votre module dans l'ensemble des langues disponibles sur votre boutique. Cela peut s'avérer être une tâche laborieuse, mais Smarty et l'outil de traduction de PrestaShop vous simplifient au maximum la tâche.

...

Info
titleTraduire du code complexe

Comme vous pouvez le voir, la base de la traduction d'un fichier template consiste à placer ses chaînes dans le bon appel Smarty : {l s='The string' mod='name_of_the_module'}. Les modifications des textes pour les titres et liens des fichiers display.tpl et in mymodule.tpl sont donc faciles à comprendre. Mais nous avons ajouté un bloc de code plus conséquent pour la chaîne "Hello World" : une condition if/else/then, et une variable de texte. Explorons ce code.

Voici le code original :

Code Block
Hello, 
  {if isset($my_module_name) && $my_module_name}
    {$my_module_name}
  {else}
    World
  {/if}
!

Comme vous pouvez le voir, nous devons rendre la chaîne "Hello World!" traduisible, mais également prendre en compte le fait qu'il y a une variable. Comme expliqué dans le chapitre "Les traductions dans PrestaShop 1.5", les variables doivent être marquées à l'aide de marqueurs sprintf(), tels que %s ou %1$s.

Il est facile de rendre "Hello %s!" traduisible : nous devons simplement mettre ce code en place :

Code Block
{l s='Hello %s!' sprintf=$my_module_name mod='mymodule'}

Mais dans notre cas, nous devons également faire en sorte que %s soit remplacé par "World" dans le cas où "my_module_name" n'existe pas... et nous devons rendre "World" également traduisible. Cela peut se faire en utilisant la fonction {capture} de Smarty, qui récupère la valeur de sortie au lieu de l'afficher, afin de l'utiliser plus tard. Nous l'utiliserons pour remplacer la variable avec le mot "World" s'il se trouvait que cette même variable était vide ou absente, à l'aide d'une variable temporaire. Voici le code final :

Code Block
{if !isset($my_module_name) || !$my_module_name}
  {capture name='my_module_tempvar'}{l s='World' mod='mymodule'}{/capture}
  {assign var='my_module_name' value=$smarty.capture.my_module_tempvar}
{/if}
{l s='Hello %s!' sprintf=$my_module_name mod='mymodule'}

...

La page qui se charge alors affiche les chaînes de tous les modules actuellement installés. Les modules qui ont déjà leurs chaînes traduites ont leurs sections fermées, tandis que ceux qui ont au moins une chaîne non traduite ont leur section ouverte.
Pour traduire les chaînes de votre module (celles que vous avez marqué avec la méthode l()), trouvez simplement votre module dans la liste (utiliser utilisez la recherche de votre navigateur) et remplissez les champs vides.

...

Rejoignez nos forums à l'adresse http://www.prestashop.com/forums/, et cherchez-y une réponse à votre question en tapant les mots-clefs. Si vous ne trouvez rien, utilisez le formulaire de recherche avancé. Et si ici encore la recherche ne donne rien, créez une nouvelle discussion, dans laquelle vous pourrez donner autant de détails que nécessaires nécessaire en écrivant votre question. Notez que vous devrez être enregistré pour créer une discussion.

...