prestashop

Prestashop : gérer les images produits via l’api

En compléments des informations déjà disponible sur la documentation développeur de prestashop sur la gestion globale des images : https://devdocs.prestashop.com/1.7/webservice/tutorials/advanced-use/image-management/
Cet article détaille brièvement la gestion des images des produits via l’api sous Prestashop.

Les tests ont été fait sur une version 1.7.6.x de prestashop mais l’api ayant assez peu bougé cela doit être fonctionnel sans doute sur les versions 1.6 également.

Le point essentiel à retenir dans les api étant qu’une url peut avoir un comportement différent en fonction de la méthode par laquelle elle est appellée ( GET / POST / PUT )

Je pars du principe que les accès nécessaire à l’api sont déjà définis, et la gestion de l’api est effectuée via la librairie proposée par Prestashop en php ( cf. https://devdocs.prestashop.com/1.7/webservice/tutorials/prestashop-webservice-lib/ )

Pour mon exemple d’illustration je me sers d’une version démo de prestahop avec les produits de base.
Dont l’url sera http://www.prestashop.local/tests/1769/
Et on va jouer avec l’identifiant produit 19 , le « mug personnalisable »

Les appels webservice qui seront exécuté via la lib Prestashop seront wrappés dans le code suivant
Et je rajoute également une fonction qui va permettre de simplifier les appels à la librairie curl .…

Prestashop : gérer les images produits via l’api Lire la suite »

Prestashop : gérer les emails dans vos modules

Dans cet article nous allons creuser tout de qui concerne la gestion des emails dans les modules prestashop.

Dans un premier temps comment envoyer un email bien sûr, mais nous verrons ensuite qu’il est très facile d’interagir avec les emails systèmes via les hooks.

Ce tutoriel s’applique à la version 1.7 de Prestashop, certains hooks n’existent pas dans la version 1.6  dont le hook hookActionEmailSendBefore , il reste cependant assez facile de les implémenter manuellement en surchargeant la classe Mail

Pour illustrer et tester tout ça nous allons passer par la création d’un module de POC hh_demoemails

L’archive sera disponible en fin d’article, mais je précise bien que c’est un module de démo et d’apprentissage et pas du tout en module destiné à être mis en production 😉

Fonctionnement général

La gestion de l’envoi dans Prestashop est relativement basique car elle est centralisée dans une seule fonction qui est la fonction send de la classe Mail voici ses paramètres, la signature de la fonction est relativement explicite

/**
     * Send Email.

Prestashop : gérer les emails dans vos modules Lire la suite »

Prestashop : Ajout des conditions à valider dans le tunnel de commande

Petite découverte de la semaine d’une possibilité relativement pratique d’ajouter des conditions à valider dans le tunnel de commande.

La bonne nouvelle c’est que c’est très facile à faire via un module puisqu’il existe un hook pour cela 🙂
Voyons donc cela dans un module hhcgv dont voici le code

<?php
if (!defined('_PS_VERSION_')) {
    exit;
}
 
//Attention à bien include ceci
use PrestaShop\PrestaShop\Core\Checkout\TermsAndConditions;
 
class Hhcgv extends Module
{
 
    public function __construct()
    {
        $this->name = 'hhcgv';
        $this->tab = 'others';
        $this->version = '0.1.0';
        $this->author = 'hhennes';
        $this->bootstrap = true;
        parent::__construct();
 
        $this->displayName = $this->l('Module de demo cgv');
        $this->description = $this->l('Ajout de cgv personnalisées');
    }
 
    /**
     * Installation du module
     * @return bool
     */
    public function install()
    {
        if (
            !

Prestashop : Ajout des conditions à valider dans le tunnel de commande Lire la suite »

Prestashop : Utilisation avancée des AdminController – Les options

Cet article fait partie d’une série d’articles qui présentent les fonctionnalités avancées disponibles dans un controller d’administration Prestashop. ( adminController )
Les exemples sont réalisés dans le cadre d’un module mais s’appliquent également à tous les anciens controllers de l’administration qui n’utilisent pas encore l’infrastructure symfony
Vous pouvez-consulter les autres articles de la série :

Dans cet article nous allons à présent nous intéresser à la gestion des options de notre controller et voir les cas suivants :

  • Ensemble des cas d’affichage d’options
  • Traitement spécifique d’une option

Les options sont définies dans la fonction __construct() du controller
Voici un code qui génère une grande partie des cas  avec les commentaires explicatifs de leur fonctionnement.

Attention car les valeurs des options seront stockées dans la table globale de configuration de Prestashop.
Pensez donc à bien supprimer ces informations lors de la désinstallation de votre module.…

Prestashop : Utilisation avancée des AdminController – Les options Lire la suite »

Prestashop : utilisation avancée des AdminController – Les listings

Cet article fait partie d’une série d’articles qui présentent les fonctionnalités avancées disponibles dans un controller d’administration Prestashop. ( adminController )
Les exemples sont réalisés dans le cadre d’un module mais s’appliquent également à tous les anciens controllers de l’administration qui n’utilisent pas encore l’infrastructure symfony
Vous pouvez-consulter les autres articles de la série :

Cet article détaillera les fonctionnalités suivantes

  • Fonctionnement général
  • Champs active / non active
  • Ajouter un callback sur un champ
  • Ajouter des actions de masse personnalisée
  • Récupérer les données de plusieurs tables

Fonctionnement général

Les listings dans les controllers admin prestashop sont gérés par le helper « HelperList » qui est disponible dans le dossier classes/helpers/HelperList.php

Pour le fonctionnement basique vous pouvez regarder cet article https://www.h-hennes.fr/blog/2018/11/15/prestashop-admincontroller-pour-un-module/
L’initialisation et l’affichage du la liste sont géré dans la fonction renderList() de la class AdminController

Cet article est en cours d’écriture et présentera les informations spécifiques aux listings…

Prestashop : utilisation avancée des AdminController – Les listings Lire la suite »

Prestashop : Créer un controller admin pour un module : Présentation des options avancées

Cet article fait partie d’une série d’articles qui présentent les fonctionnalités avancées disponibles dans un controller d’administration Prestashop. ( adminController )
Les exemples sont réalisés dans le cadre d’un module mais s’appliquent également à tous les anciens controllers de l’administration qui n’utilisent pas encore l’infrastructure symfony
Vous pouvez-consulter les autres articles de la série :

Cet article présent le plan général du sujet qui est assez vaste.
Il était initialement réparti en 2 articles mais pour clarifier les fonctionnalités j’ai séparé les informations par thématiques.

Voici les sujets qui seront traités, cette série ayant vocation a être assez exhaustive n’hésitez pas à partager vos astuces ou les points manquants

Général :

  • Gestion de la toolbar
    • Changement du titre
    • Ajout d’un bouton d’action
  • Ajouter une action
  • Validation spécifique
  • Gestion d’images
  • Appels Ajax
  • Surcharger le template

Listing :

  • Champs active / non active
  • Ajouter un callback sur un champ
  • Ajouter des actions de masse personnalisée
  • Récupérer les données de plusieurs tables

Formulaire :

  • Fonctionnement général
  • Visualisez l’ensemble des champs disponibles
  • Lier des champs en ajax
  • Afficher des contenus totalement personnalisé

Options :

  • Ensemble des cas d’affichage d’options
  • Traitement spécifique d’une option

Prestashop : Créer un controller admin pour un module : Présentation des options avancées Lire la suite »

Prestashop console : Nouvelle version 1.6

Ça fait un moment que je n’avais pas posté d’information à propos de mon outil de console sur Prestashop, PrestashopConsole ( depuis 2016 exactement 😀 )

A l’occasion de la sortie de la version 1.6,  c’est l’occasion le faire à nouveau pour balayer les nouveautés apportées par cette version, ainsi que l’ensemble des possibilités apportées par la console.

Je précise également que l’outil même si il peut être utilisé via un clone du dépôt github, a surtout vocation a être utilisé via son format phar, qu’il faut déposer à la racine de votre projet.

Voici les nouvelles fonctionnalités de cette version :

  • Amélioration de la qualité du code
  • Nouvelles commandes pour générer les fichiers htacess et robots.txt
  • Nouvelles commandes pour lister les hooks ( globalement ou par modules )
  • Nouvelle commande pour générer les miniatures d’images
  • Nouvelle commande pour exporter les images sous forme d’archive
  • Possibilité de renommer le fichier phar
  • Nouvelle commande pour générer des nouvelles commandes ( utilisation développement uniquement )

A compter de cette version, toutes les futures évolutions seront listées dans la page des releases sur github :

https://github.com/nenes25/prestashop_console/releases

Prestashop console : Nouvelle version 1.6 Lire la suite »

Prestashop 1.7 : Ajouter des champs dans un formulaire d’administration

Cet article est une mise à jour de l’article suivant https://www.h-hennes.fr/blog/2017/06/21/prestashop-ajouter-des-champs-dans-un-formulaire-dadministration/ qui s’applique aux controllers qui utilisent symfony, c’est le cas à partir 1.7.6 de Prestashop

Si vous avez des doutes si le controller sur lequel vous souhaitez ajouter des champs fonctionne avec ce méthode, n’hésitez pas à consulter l’article suivant pour l’identifier  : https://www.h-hennes.fr/blog/2019/07/25/prestashop-1-7-identifier-si-un-controller-admin-a-ete-migre-vers-symfony/

L’objectif est d’ajouter un nouveau champ dans un formulaire d’administration de manière propre via un module.

Fonctionnement technique

Comme pour les versions précédentes des hooks dynamiques sont présents dans le code prestashop pour vous permettre gérer des informations supplémentaires via vos modules dans les formulaires.

Pour ajouter des champs le hook est exécuté dans la fonction buildForm du fichier src/Core/Form/IdentifiableObject/Builder/FormBuilder.php

Les noms des hooks sont construits sous la forme suivante :

action . Container::camelize($formBuilder->getName()) . FormBuilderModifier

/**
     * @param string $formType
     * @param array $data
     * @param int|null $id
     * @param array $options
     *
     * @return FormInterface
     */
    private function buildForm($formType, $data, $id = null, array $options = [])
    {
        $formBuilder = $this->formFactory->createBuilder($formType, $data, $options);
        $this->hookDispatcher->dispatchWithParameters('action' .

Prestashop 1.7 : Ajouter des champs dans un formulaire d’administration Lire la suite »

Prestashop 1.7 Identifier si un controller admin a été migré vers symfony

Un petit article rapide qui fait suite aux nombreux retours que j’ai dans les commentaires de certains de mes tutoriels liés à l’administration de Prestashop.

Un des objectifs principal de cette version est de migrer l’ensemble de l’administration vers le framework symfony, au fur et à mesure des nouvelles versions le nombre de page migrées sera donc de plus en plus important.

Et par ricochet mes anciens articles ne seront plus applicables.

Le moyen le plus simple pour vérifier si le controller est migré vers symfony et de consulter son url.

Les anciennes urls ( non symfony ) sont sous la forme

https://prestashop-site.com/admin-dev/index.php?controller=AdminAddresses&

Le terme « controller » est présent dans l’url.

Visuellement les listings se présentent de cette manière :

Controller admin prestashop legacy

Les nouvelles urls (avec symfony ) sont sous la forme

https://prestashop-site.com/admin-dev/index.php/sell/customers/

Le terme « controller » n’est pas présent dans l’url.

Visuellement les listings se présentent de cette manière

Prestashop controller symfony

Ces éléments devraient être suffisant pour vous permettre d’identifier dans quel type de controller admin vous vous trouvez 🙂

 

 …

Prestashop 1.7 Identifier si un controller admin a été migré vers symfony Lire la suite »