Child pages
  • Créer un module PrestaShop

Versions Compared

Key

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

...

  • Le drapeau need_instance indique s'il faut charger la classe du module quand celui-ci est affiché dans la page "Modules" du back-office. S'il est à 0, le module n'est pas chargé, et il utilisera donc moins de ressources. Si votre module doit afficher un avertissement dans la page "Modules", alors vous devez passer ce drapeau à 1.
  • ps_version_compliancy est un nouveau drapeau de PrestaShop 1.5. Il permet d'indiquer clairement les versions de PrestaShop avec lesquelles le module est compatible. Dans l'exemple ci-dessus, nous indiquons explicitement que ce module ne fonctionnera qu'avec la version 1.5, et aucune autre.
  • dependencies est un nouveau drapeau de PrestaShop 1.5. Il permet d'indiquer clairement que le module a besoin de l'activation d'un autre module afin de fonctionnent fonctionner correctement. Votre module peut se avoir besoin de fonctionnalités mises en place par l'autre module, ou il peut simplement être un ajout utile qui n'aurait aucun sens sans cet autre module. Utiliser Utilisez le dossier du module comme identifiant. Dans notre exemple, notre module requiert l'activation du module Blockcart.

...

Il est possible d'ajouter autant des lignes à install() que nécessairesnécessaire. Dans l'exemple suivant, nous lançons les tâches suivantes en cours de l'installation :

...

  • Configuration::get('maVariable') : récupère une valeur spécifique depuis la base de données.
  • Configuration::getMultiple(array('maPremiereVariable', 'maSecondeVariable', 'maTroisiemeVariable')) : récupère plusieurs valeurs de la base de données, et renvoie un tableau PHP.
  • Configuration::updateValue('maVariable', $value) : met à jour une variable existant dans la base de données en lui donnant une nouvelle valeur. Si cette variable n'existe pas déjà, elle sera créée pour l'occasion.
  • Configuration::deleteByName('myVariable') : supprimer supprime la variable de la base de données.

...

Info
titleMultiboutique

Par défaut, toutes ces méthodes fonctionnent dans le contexte de la boutique actuelle, que PrestaShop soit en mode multiboutique ou non.

Cependant, il est possible de les faire travailler en dehors du contexte en cours, et d'avoir un impact sur les autres boutiques connues. Cela peut se faire à l'aide de trois paramètres optionnels (non présentés ci-dessus) :

  • id_lang : permet de forcer la langue avec laquelle on souhaite travailler ;
  • id_shop_group : permet de préciser le groupe de boutiques de la boutique cible ;
  • id_shop : permet de préciser l'identifiant de la boutique cible.

Par défaut, ces trois paramètres utilisent les valeurs du contexte en cours, mais vous pouvez leur faire cibler une autre boutique.

Notez bien qu'il est déconseillé de modifier les valeurs par défaut de ces variables, surtout si le module que vous créez est destiné à être utilisé sur d'autres boutiques que la vôtre. Elles ne devraient être utilisée utilisées que si le module est conçu pour votre propre installation de PrestaShop, et que vous connaissez les identifiants et groupe groupes de boutique boutiques de toutes les autres boutiques.

Vous n'êtes pas limité à vos propres variables : PrestaShop stocke également tous ses réglages de configuration dans la table ps_configuration. Des centaines de réglages s'y trouvent, et vous pouvez y accéder aussi facilement que vous accéder accédez aux vôtres. Par exemple :

...

Pour parfaire ce premier module, nous pouvons ajouter une icône, qui sera affiché affichée à côté du nom du module dans la liste des modules.
Dans le cas où le module utilise officiellement un service web connu, le fait d'utiliser le logo de ce service comme icône apporte une plus grande confiance en votre module.
Assurez-vous de ne pas utiliser un logo déjà utilisé par un module natif.

...

...

Comme vous pouvez le voir, nous faisons en sorte que le module est soit lié aux hooks "leftColumn" et "header". En plus de cela, nous allons ajouter du code pour le hook "rightColumn".

Le fait d'attacher de ce code à un hook requiert des méthodes spécifiques pour chaque hook :

...

La page "Positions" devrait alors se recharger, en affichant le message suivant "Le module a bien été greffé sur le point d'accrocheraccroche". Félicitations ! Faites défiler la page, et vous devriez effectivement voir votre module parmi ceux affiché affichés dans la liste "Left column blocks". Déplacez-le vers le haut de la liste en faisant un glisser-déposer de la ligne du module.

Le module est maintenant est attaché à la colonne de gauche... mais sans aucun modèle à afficher, nous sommes loin d'avoir quoique quoi que ce soit d'utile sur la page d'accueil : si vous la rechargez, vous noterez que la colonne de gauche affiche simplement un message là où le module devrait se trouver, disant "No template found for module mymodule".

...

Maintenant que nous avons accès à la colonne de gauche, nous pouvions pouvons y afficher ce que nous voulons.

...