GUIDE CONTRIBUTEUR - Validation technique

Premiers pas vers la vente de vos produits !

La validation technique est une étape vitale avant de vendre votre produit dans notre catalogue.

1 - Pour bien commencer… 3 outils pour vous aider

1.1/ Le Validateur

Le Validateur (http://validator.prestashop.com) est un outil créé pour vérifier la compatibilité technique de votre module aux exigences de PrestaShop. Vous pouvez :

  • uploader un zip

  • ou préciser l’URL de votre dépôt Github Github.

Le Validateur réalise ensuite automatiquement un rapport détaillé sur les points à améliorer sur votre module. En suivant ce rapport, vous pourrez soumettre votre module sans aucune erreur !

!! Attention !!
Depuis la version 1.6.1.0, PrestaShop utilise la norme PSR-2. Bien que nous vous recommandions d'utiliser cette norme, elle n'est pas obligatoire sur Addons et ne sera pas un motif de refus. Plus de détails dans cet article de blog.


1.2/ le moteur de recherche des méthodes

Un moteur de recherche est disponible au sein du Validateur pour vous aider à savoir depuis quelles versions de PrestaShop existent telles ou telles méthodes. Profitez-en et utilisez-le pour gagner du temps !


1.3/ le Module Generator

Avez-vous déjà pensé à gagner du temps grâce à notre Module Generator ? Il vous suffit de choisir votre type de module et de vous laissez guider. Un module squelette est alors automatiquement généré pour vous faciliter la création de votre module.
A vous une validation technique plus rapide !

Pour finir le processus de validation technique, une vérification manuelle du module est réalisée par nos équipes de développeurs. Ils téléchargent, installent, configurent et vérifient le code de votre module.

2 - Les 3 étapes d’une validation technique assurée

2.1/ Un environnement de développement

Réalisez et testez votre module dans un environnement de développement local, à l’aide de WampServer (Windows), par exemple. Cela vous permettra d’afficher les erreurs, avertissements et autres alertes PHP sans devoir dépendre de votre serveur en ligne.
Pour vous faciliter la tâche, PrestaShop dispose d’un Mode Dev, qui configure votre utilisation de PHP pour vous afficher les messages d’erreurs. Pour activer le Mode Dev, : dans le répertoire /config de votre installation de PrestaShop, ouvrez le fichier defines.inc.php. Le Mode Dev s’active au tout début du fichier : vous devez modifier la ligne suivante pour passer la valeur définie à true (elle est à false par défaut) :
define('_PS_MODE_DEV_', true);

Attention : vos boutiques en production ne doivent pas utiliser le Mode Dev !


2.2/ Bonnes pratiques

A ne pas faire

  • N’insérez pas de liens externes dans le code de votre module ni dans la documentation de votre module.

  • Ne communiquez pas vos coordonnées personnelles dans votre module ni dans la documentation de votre module.

  • N’orientez pas vos clients vers votre propre plate-forme de support / gestion de tickets.

  • Utilisez un fichier externe ajax pour effectuer des opérations ajax.

  • Naviguez dans les répertoires en utilisant du code et des constantes comme : dirname(__FILE__).'/../../config/config.inc.php'

  • Ne pas modifier la structure SQL des tables de PrestaShop.

A faire

  • Ajouter un lien uniquement vers la documentation incluse dans le ZIP de votre module et votre page de support sur Addons dans l’interface du module.

  • Respectez la norme PSR-2 pour les modules destinés à PS 1.6.1.0 et + : http://doc.prestashop.com/display/PS16/Coding+Standards

  • Créer vos propres tables !

  • Développez en anglais, puis utilisez le système de traduction de PrestaShop pour traduire votre module.

  • Naviguez dans les répertoires en utilisant du code et des constantes comme : "dirname(__FILE__).'/../../config/config.inc.php"

  • Utilisez des variables PrestaShop comme : _PS_CONFIG_DIR_ . / "config.inc.php"

Quelques recommandations pour vos modules :

  • Préfixez ce qui vous appartient :

    • modules

    • paramètres de configuration (ps_configuration)

    • tables

    • classes CSS

  • Pensez à supprimer vos configurations, tables et autres entités propres à votre produit lors du processus de désinstallation de vos modules.

  • Vous ne devez pas avoir d’HTML dans votre code PHP. Voici plusieurs solutions pour séparer la vue de votre code :

    • Afficher du contenu avec Smarty

    • Utiliser helpers pour vos pages de configuration

    • Utilisez PrestUI, une librairie graphique développée par la communauté, pour vos pages de configuration

  • L'interface de votre module doit respecter l'interface du BO du logiciel. Les interfaces personnalisées ne sont donc pas acceptées. Utilisez bien les alternatives données lors du point précédent pour créer une interface en accord avec le BO des marchands.

  • Nous imposons une compatibilité minimale de PHP 5.3 pour les modules compatibles avec les versions précédentes à PrestaShop 1.7. Cela vous permet par exemple d'utiliser les namespaces.

  • Lorsque vous ajoutez une fonction d'ajout de fichier dans votre module, vérifiez le type du fichier pour éviter des problèmes de sécurité. Plus d'informations sur la fonction mime_content_type().

  • A la désinstallation, supprimez tous les onglets que vous avez pu ajouter à l'installation.

  • Lorsque votre module contient des formulaires, plusieurs points sont à respecter :

    • Affichez un message de confirmation si tout s'est bien passé, ou un message d'erreur dans le cas contraire..

    • Assurez-vous que les données entrées par l'utilisateur sont correctes. Si vous demandez un montant, il ne faut que des chiffres. Plus d'informations sur la classe Validate de PrestaShop ici.

  • Pensez à bien caster vos variables et utiliser pSQL/bqSQL dans les requêtes SQL pour éviter toute injection (lisez http://doc.prestashop.com/display/PS16/Best+Practices+of+the+Db+Class). Assurez-vous aussi de bien protéger l’accès à vos fichiers (notamment si votre module utilise un cron par exemple) pour éviter que tout le monde puisse les exécuter. L’utilisation d’un token est donc obligatoire !

  • L’utilisation des overrides est autorisée, cependant si nous jugeons qu’un trop grand nombre (2/3 max) est présent et/ou que les modifications sont trop dangereuses, nous refuserons votre module. Si vous avez un doute, n’hésitez pas à nous écrire.

  • Si vous devez charger un .js ou un .tpl (qui contient du JavaScript) dans le backoffice, mettez en place des restrictions sur vos hooks backoffice (hookbackofficeheader/top/footer) ! Exemple précis : Si votre JS ne s’applique que sur la page de configuration du module, utilisez :
    if (Tools::getValue('configure') == $this->name { // code }

Quelques recommandations pour vos thèmes :

  • PrestaShop ne dispose pas encore de “validateur de thèmes”. Cependant, chacun des modules présents dans votre thème doit être testé via notre Validateur : http://validator.prestashop.com

  • Ne retirez pas les hooks présents de base dans PrestaShop, que ce soit via PHP ou dans le thème ! Vous risqueriez d’empêcher le fonctionnement d’un module tiers.

  • Préfixez ce qui vous appartient :

    • modules

    • standards d’images

  • Vous ne devez pas avoir d’HTML dans votre code PHP ; utiliser Smarty ou les helpers pour les vues.

  • Nous n’acceptons pas les thèmes utilisant le thème de base de PrestaShop et dont seuls les changements de couleurs, de polices, d’images,... ont été fait. Vous devez créer un thème unique ! :-)

  • Il vous faut garder le logo de la boutique par défaut dans le zip de votre thème, dans le header et le footer de votre thème.

Quelques recommandations pour vos templates d'emails :


2.3/ Le Validateur pour optimiser votre module

Le Validateur vous explique exactement ce que vous devez modifier pour que votre module soit compatible avec nos exigences techniques (les erreurs techniques, les fonctions interdites ou encore les problèmes de structures…).
En suivant les recommandations du Validateur, vous accélérez la mise en vente de votre module !

Les recommandations émises empêchent le bon fonctionnement de votre module ?
Contactez-nous, nous serons ravis de vous accompagner dans le développement de votre module !


En cas de problème, vous avez la possibilité de contacter l’équipe technique lors de la soumission de votre module. Profitez-en et faites appel à leur expérience pour perfectionner votre module !

3 - Mettre à jour vos modules et créer des thèmes pour PrestaShop 1.7

Tous les modules bien developpés pour la version 1.6 devraient fonctionner sans grand changement pour la version 1.7, exceptés les modules et thèmes visant :

  • Le front office – puisque nous avons réécrit le code des thèmes

  • La page produit dans le BO – car le DOM de cette page a été modifié.

  • La page modules – dans le BO puisqu’une nouvelle fois le DOM a été modifié.

Pour mettre à jour vos modules et thèmes pour la version 1.7, vous devez :

  • Reécrire vos thèmes, en utilisant le Starter Theme ou le thème par défaut comme départ.

  • Adapter vos modules touchant à la page produits (CSS et Javascript).

  • Adapter vos modules touchant à la page modules (CSS et Javascript) et tester tous vos autres modules, comme vous le feriez pour toute autre mise à jour!

Toutes les informations dont vous avez besoin sont réunies dans les articles suivants :

Et bien sûr notre FAQ sur la 1.7 qui devrait déjà être votre livre de chevet !

4 - Comment soumettre un produit sur la marketplace Addons ?

After creating the perfect product page using the Seller Kit- Marketing Section submit your module for technical validation.

4.1/ Les informations

A cette étape, vous pourrez trouver la module_key pour votre module. Celle-ci est à renseigner dans le constructeur sous la forme :

public function __construct() { etc. $this->module_key = 'c1614c239af92968e5fae97f366e9961'; }

Elle permettra de signaler au marchand quand une mise à jour de votre module est disponible dans son back office.
Vous devez décrire les modifications effectués uns à uns en cas de mise à jour.
N’oubliez pas d’indiquer avec quelles versions de PrestaShop votre module est compatible !

4.2/ Votre fichier et le nom définitif de votre module

L’archive zip soumise à notre équipe doit comporter tous les fichiers nécessaires à votre module, et porter le même nom que votre module : si le fichier principal de votre module se nomme “nom_du_module.php”, alors il doit se trouver dans le dossier “nom_du_module”, et le fichier zip doit porter le même nom -- sans numéro de version.

Prévoyez que le nom utilisé pour votre fichier et votre zip sera le même que celui que vous donnerez à votre fiche produit (afin que l’e-commerçant puisse identifier rapidement votre module dans le back office de sa boutique). Réfléchissez donc bien au nom que vous donnez à votre produit (sans utiliser “PrestaShop” ni “module”). N’hésitez pas à personnaliser son nom, par exemple avec le nom de votre société ou vos initiales

5 - Et après, que se passe-t-il ?

Une fois votre module vérifié par l’équipe technique, vous recevrez un e-mail de notre part vous informant de son état (validé ou refusé).

En cas de refus, vous recevrez les points à corriger. Vous aurez la possibilité de répondre directement à l’équipe via un lien présent dans l’e-mail de refus afin d’obtenir plus d’informations.
A vous ensuite de suivre ces recommandations et de nous soumettre à nouveau votre module !

Vous souhaitez en savoir plus sur les normes de PrestaShop ?
Rendez-vous directement dans le Guide Du Développeur !

Bonnes ventes sur PrestaShop Addons !