Posts Tagged ‘prestashop’

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.…

Pas de commentaires

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…

Pas de commentaires

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
Pas de commentaires

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

Pas de commentaires

Prestashop : problème login administration

Ceci sera uniquement une petite note rapide sur un problème que j’ai rencontré récemment dans le cas d’un changement de serveur d’un site prestashop ( version 1.7.5.2 ) , mais je pense qu’elle peut se produire sur les autres version également.

Les accès à l’administration étaient fonctionnels et j’arrivais bien à entrer dans le dashboard.

En revanche lorsque je souhaitais cliquer sur n’importe quel lien dans j’étais systématiquement redirigé vers le formulaire d’authentification.
Ce problème était présent également en navigation privée.

La solution à ce problème a été de désactiver la vérification de l’ip des cookies directement via une requête sql 😀

UPDATE ps_configuration SET VALUE = 0 WHERE name ='PS_COOKIE_CHECKIP'

Si vous avez accès à l’administration sur un autre poste, vous pouvez faire cette manipulation directement dans l’administration.
Il faut passer l’option « Vérifier l’adresse ip du cookie » à non dans « Paramètres avancés / Administration / Paramètres généraux »

 

5 commentaires

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' .
61 commentaires

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 🙂

 

 …

2 commentaires

Prestashop: Générer des modèles via la console

Cet article est la suite de Prestashop : Générer des modules via la console.

Toujours dans la même logique d’optimisation de création des modules via la ligne de commande 🙂

Je rappelle également  que cette fonctionnalité n’est pas disponible via la console native de Prestashop ( disponible à partir de prestashop 1.7 ) mais sur mon outil de console externe : prestashopConsole ( cf. https://github.com/nenes25/prestashop_console )

Cette fois-ci l’idée est de pouvoir générer rapidement et facilement un modèle associé à votre module qui héritera de la classe ObjectModel de Prestashop, le tout sans écrire une seule ligne de code 🙂

Une nouvelle commande fait donc son apparition :

module:generate:model

Les paramètres obligatoires sont :

  • Nom du module
  • Classe du Modèle.

Voici par exemple comment créer un objet Sample pour le module hhdev

./prestashopConsole.phar module:generate:model hhdev Sample

Une saisie interactive va ensuite vous demander les informations nécessaires à la création de votre modèle.

Pour l’exemple nous souhaitons que cet objet ait les propriétés suivantes :

  • table : sample ( Nom de la table sql sans le prefix )
  • primary : id_sample ( Clé primaire de l’objet )
  • Champs :
    • name ( Nom du champ )
      • type : string
      • obligatoire : oui
      • validation : isName
      • longueur : 100 ( Longueur maximum du champ )
      • langue : Non
    • firstname
      • type: string
      • obligatoire : non
      • validation : isName
      • longueur : 120
      • langue: non
    • email
      • type: string
      • obligatoire : oui
      • validation: isEmail
      • longueur : 100
      • langue : non
    • description
      • type : string
      • obligatoire : non
      • validation: isCleanHtml
      • langue : oui

Voici l’aperçu des informations qui sont saisies pour générer ce modèle.…

Pas de commentaires

Prestashop : Simplification de la mise en page des emails

Note :
A compter la version 1.7.6 de Prestashop la gestion des emails a été changée et cet article n’est plus d’actualité.

Les emails dans Prestashop ne permettent aucune factorisation, chaque email comprends son code html complet, lorsque vous souhaitez modifier du contenu dans l’entête ou dans le pied de page d’un email il est nécessaire de réaliser la modification sur l’ensemble des emails du site.

Ce n’est pas très pratique et cela peut être source de perte de temps.
Nous allons voir dans cet article qu’il existe des solutions natives et rapides pour optimiser ce point.
Via des créations de modules comme souvent 🙂
Nous allons créer dans cet article un module hhmail dont vous retrouverez le code complet en fin d’article

Principe Technique et prérequis

Lors de l’envoi d’un email de nombreux événements sont exécutés dans la fonction Mail::send,  mais ceux qui nous intéressent sont les suivants :

  • actionEmailAddBeforeContent : exécuté avant la récupération du template de l’email
  • actionEmailAddAfterContent : exécuté après la récupération du template de l’email

Grâces à ces hooks nous pouvons donc injecter du contenu avant et après le contenu de l’email, il est donc aisé de gérer un header et un footer commun pour l’ensemble des emails 🙂

Pour éviter d’ajouter ces contenus sur des emails qui le contiennent déjà, il faudra restreindre la liste des templates sur lesquels ces contenus s’ajouteront, dans cette version je part du principe que seuls les emails surchargés dans le thème seront impactés.

2 commentaires

Prestashop : Générer des modules via la console.

Note : Cette fonctionnalité n’est pas disponible via la console native de Prestashop ( disponible à partir de prestashop 1.7 ) mais sur mon outil de console externe : prestashopConsole ( cf. https://github.com/nenes25/prestashop_console )

J’ai dernièrement du créer de nombreux modules sous Prestashop et le fait de les copier / coller des différents modules à chaque fois m’a fait perdre pas mal de temps.
Et je ne connais pas forcément par coeur l’ensemble des syntaxes nécessaires.
Pour optimiser tout cela j’ai donc cherché un moyen de créer facilement et rapidement des modules.
Il existe déjà la possibilité de créer un module via le générateur de module de Prestashop ( disponible ici ) , en revanche cela ne correspondait pas vraiment à mon besoin.
Le plus simple est donc de le gérer via la ligne de commandes, j’ai donc implémenté des nouvelles commandes dans la console de prestashop pour gérer cela.

Voyons ensemble comment créer facilement et rapidement un module via cet outil.…

2 commentaires


Archives

Compte Github