...
Les principes techniques derrière un module
Un module PrestaShop est compris de comprend :
- un 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 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.
- Un fichier pour PrestaShop 1.4 (si besoin) :
- 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 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.). À partir de la v1.5, ces fichiers peuvent être placés dans ces sous-dossiers :
- dossier
/views/css
pour les fichiers CSS - dossier
/views/js
pour les fichiers JavaScript - dossier
/views/templates/front
pour les fichiers utilisés par les contrôleurs du module - dossier
/views/templates/hooks
pour les fichiers utilisés par les hooks du module
- dossier
- Logo du module en 16x16 :
nom_du_module.jpg
(format JPG ou GIF) - Logo du module en 32x32 :
name_om_du_module.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
.
...
Il y en a de nombreuses autres, comme getInt()
ou hasContext()
, mais les quatre présentées sont celles que vous utiliserez le plus souvent.
Comme vous pouvez le voir, c'est un objet très utile et très facile à utiliser, et vous y aurez certainement recours dans de nombreuses situations. La plupart des modules s'en servent pour leurs propres réglages.
Info | ||
---|---|---|
| ||
Toutes Par défaut, toutes ces méthodes se rapportent au contexte en cours. Par défaut, ces méthodes s'appliquent donc à la boutique actuellement utilisée par l'administrateur au moment de l'appel de la méthode.Elles disposent toutes de 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) :
Ces Par défaut, ces trois paramètres utilisent par défaut les valeurs du contexte en cours dans le contexte.Il est donc possible de surcharger ces trois paramètres dans le cadre d'un module multiboutique, afin de travailler en dehors du contexte actuel, 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 que si le module est conçu pour votre propre installation de PrestaShop, et que vous connaissez les identifiants et groupe de boutique 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 aux vôtres. Par exemple :
...
is_configurable
indique que le module a une page de configuration ou non.need_instance
indique qu'une instance du module doit être créé créée lorsque s'affiche la liste des modules. Cela peut se révéler utile lorsque le module doit réaliser des tests sur la configuration de PrestaShop, et afficher des notifications en fonction du résultat.limited_countries
est utilisé pour indiquer les pays auxquels le module est limité. Par exemple, si le module doit être limité à la France et l'Espagne, utilisez<limited_countries>fr,es</limited_countries>
.
...
Fichier / dossier | Description |
---|---|
img_ps_dir | URL for PrestaShop's image folderAdresse du dossier image de PrestaShop. |
img_cat_dir | URL for the categories images folderAdresse du dossier des images des catégories. |
img_lang_dir | URL for the languages images folderAdresse du dossier des images des langues. |
img_prod_dir | URL for the products images folderAdresse du dossier des images des produits. |
img_manu_dir | URL for the manufacturers images folderAdresse du dossier des images des fabricants. |
img_sup_dir | URL for the suppliers images folderAdresse du dossier des images des fournisseurs. |
img_ship_dir | URL for the carriers (shipping) images folderAdresse du dossier des images des transporteurs. |
img_dir | URL for the theme's images folderAdresse du dossier des images du thème. |
css_dir | URL for the theme's CSS folderAdresse du dossier des fichiers CSS du thème. |
js_dir | URL for the theme's JavaScript folderAdresse du dossier des fichiers JavaScript du thème. |
tpl_dir | URL for the current theme's folderAdresse du dossier du thème actuel. |
modules_dir | URL the modules folderAdresse du dossier des modules. |
mail_dirURL for the mail templates folder | Adresse du dossier des modèles d'e-mails. |
pic_dir | URL for the pictures upload folderAdresse du dossier des images mises en ligne. |
lang_iso | ISO code for the current languageCode ISO de la langue actuelle. |
come_from | URL for the visitor's originAdresse d'origine du visiteur. |
shop_nameShop name | Nom de la boutique. |
cart_qtiesNumber of products in the cart | Nombre de produits dans le panier. |
cartThe cart | Le panier. |
currenciesThe various available currencies | Les différentes devises disponibles. |
id_currency_cookieID | of the current currencyIdentifiant de la devise actuelle. |
currency | Objet Currency object (currently used currency(la devise actuellement utilisée). |
cookieUser cookie | Cookie de l'utilisateur. |
languagesThe various available languages | Les différentes langues disponibles. |
loggedIndicates whether the visitor is logged to a customer account | Indique si le visiteur est connecté à un compte utilisateur. |
page_namePage name | Nom de la page. |
customerName | Client name (if logged inNom du client (s'il est connecté). |
priceDisplay | Price display method (with or without Méthode d'affichage du prix (avec ou sans les taxes...). |
roundModeRounding | method in useMéthode d'arrondi utilisée. |
use_taxesIndicates whether | taxes are enabled or notIndique si les taxes sont activées ou non. |
Il y a de nombreux hooks contextuels. Si vous avez besoin d'afficher toutes les variables de la page en cours, utiliser l'appel suivant :
...