Prestashop : bloquer les mises à jour de modules dans l’administration

Présentation du problème et solution

C’est un comportement bien connu et assez embêtant auquel je m’attaque aujourd’hui.

Qui n’a jamais pesté d’avoir mis à jour un module dans le back office de Prestashop alors qu’on souhaitait uniquement le configurer ..

Par défaut lorsqu’une mise à jour d’un module est disponible, c’est l’action « Upgrade » qui est l’action par défaut.

Un clic trop rapide et on se retrouve avec une version non testée et donc potentiellement des erreurs sur son site.

J’ai donc créé un petit module qui permets de désactiver l’action du bouton de mise à jour et qui affiche un autre message à la place.

Il est possible de configurer le comportement ( normal ou bloqué ) directement depuis la configuration du module.

Fonctionnement technique

Pour gérer cela nous allons créer un module hh_modulesupdater

Ce module va utiliser la possibilité de surcharger les templates symfony du core en reprenant simplement leur chemin dans un module.

Nous allons donc créer un fichier :
modules/hh_modulesupdater/views/PrestaShop/Admin/Module/Includes/action_button.html.twig

Lire la suite...
Pas de commentaires

Utiliser et configurer un proxy socks en local avec votre serveur dédié

Un petit tutoriel rapide pour faire face à une problématique que j’ai rencontré récemment.

Avec mon fournisseur d’accès à internet je n’ai pas d’adresse ip fixe, c’est gênant pour accéder à certains environnements dont l’accès est soumis à des restrictions d’ips.

Je possède en revanche plusieurs serveurs dédiés sur internet qui eux ont bien des ips fixes.
Vous l’aurez compris l’idée va être de se connecter à travers l’un de ces serveurs pour obtenir une ip fixe également.

La configuration de cette connexion est facile et ne prendra pas plus de 2 minutes 🙂

Les prérequis sont les suivants :

  • Accès ssh à un serveur
  • Système linux ou WSL disponible
  • Extension FoxyProxy

Gestion de la connexion ssh

Pour se simplifier la vie on va configurer ce proxy directement dans le fichier ~/.ssh/config de la même manière que pour n’importe quelle connexion ssh :

Host herve.tunnel
 Hostname myserverNameOrIP
 User ServeurUser
 Port ServerPort
 DynamicForward 8000 #Attention à cette ligne

Remplacez bien évidemment les informations du hostname de l’user et du port par les accès à votre serveur.…

Lire la suite...
Pas de commentaires

Prestashop : gagnez du temps lors la personnalisation des fichiers pdf ( factures / livraisons … )

Une petite note rapide pour donner et historiser une astuce bien pratique dans le cas ou vous souhaitez faire des modifications sur les fichiers pdfs générés par Prestashop dans l’administration.

Ceci concerne tout ceux qui sont générés  par le controller : controllers/admin/AdminPdfController.php

  • Les factures
  • Les livraisons
  • Commandes fournisseurs

Par défaut le comportement est que le fichier pdf est téléchargé par le navigateur, ce qui devient relativement pénible lorsque les modifications sont assez lourdes.

Pour forcer l’affichage du pdf dans le navigateur il vous suffit de modifier la fonction generatePDF du controller  controllers/admin/AdminPdfController.php et de rajouter l’option « I » dans l’appel à la fonction render

public function generatePDF($object, $template)
    {
        $pdf = new PDF($object, $template, Context::getContext()->smarty);
        $pdf->render('I'); //Changement de code ici
    }

Le contenu du fichier pdf sera ensuite affiché directement dans le navigateur ce qui fera gagner un temps précieux dans la visualisation des modifications pdf 🙂

Cette astuce a été testée sur une 1.7.4 et une 1.7.6 , mais je pense qu’elle doit fonctionner sur l’ensemble des versions 1.7…

Lire la suite...
Pas de commentaires

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

Lire la suite...
Pas de commentaires

Prestashop : utilisation avancée des AdminController – Les formulaires

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 est encore d’écriture et présente les informations spécifiques aux formulaires

Informations générales

Les formulaires dans les controllers d’administration sont gérés par la classe HelperForm dont le code complet est visible ici :

https://github.com/PrestaShop/PrestaShop/blob/develop/classes/helper/HelperForm.php

Le rendu est ensuite affiché à partir du template : admin-dir/themes/default/template/helpers/form/form.tpl

 

Les types de champs possibles

La bonne nouvelle et qu’il existe une page de démonstration de l’ensemble des possibilités de ces champs dans tous les sites prestashop 🙂

Pour y accéder il faut aller dans votre administration et saisir l’adresse :

http://www.votre-site.comt/admin-dir/index.php?controller=…

Lire la suite...
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…

Lire la suite...
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
Lire la suite...
Pas de commentaires

Simplifiez vous la console sous windows avec Terminal

Pour des raisons techniques j’ai récemment du repasser sous windows pour quelques jours récemment.

En étant habitué la console linux c’est un énorme retour en arrière d’utiliser la console standard de windows  ( cmd ) d’autant quelle ne gère pas nativement la connexion ssh

Mon usage de la console est essentiellement basé autour la connexion à des serveurs web, ou des commandes git sous windows j’utilise le sous-sytème wsl pour gérer toutes ces commandes.

J’utilisais déjà pour remédier à ça l’alternative cmder https://cmder.net/

Qui rendait déjà les choses bien plus pratiques avec sa gestion multi-onglets et le chargement de profils.
Mais  j’avais pas mal de problèmes dans la gestion des flèches lors de l’édition des fichiers avec vim qui me faisait souvent perdre du temps

J’ai donc profiter la sortie officielle de la version 1.0 de terminal et j’ai été assez séduit par son fonctionnement et son utilisation :

  • Gestion multi-onglets
  • Types de fenêtres ( cmd / powershell / wsl )

Si vous utilisez souvent la console sous windows je pense que c’est un outil que vous adopterez très vite 🙂

Vous pouvez l’installer depuis le lien suivant :
https://www.microsoft.com/fr-fr/p/windows-terminal/9n0dx20hk701?activetab=pivot:overviewtab

Lire la suite...
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

Lire la suite...
Pas de commentaires

Mantis Bugtracker : Gestion des cron

J’utilise la solution mantis depuis pas mal d’années pour suivre l’ensemble des mes projets personnels, à ce titre j’ai déjà développé quelques plugins spécifiques à mes différents besoins.
 ( La grande majorité sont disponibles sur github ou sur ce blog )

J’ai de plus en plus de plugins qui nécessitent l’exécution de tâches planifiées ( cron ), et à part ajouter manuellement les crons de chaque plugin dans la crontab du serveur je n’ai pas trouvé de solution pratique sur mantis bugtracker pour gérer ces crons.

C’est donc l’occasion de faire un nouveau plugin qui va permettre de simplifier tout cela 😀

Ce plugin nécessite les droits d’administrateur pour pouvoir visualiser et configurer les informations

Principe de fonctionnement

Ce plugin va collecter l’ensemble des tâches planifiées de l’ensemble des autres plugins via un événement personnalisé.
Il ne sera donc nécessaire que d’entrer la page de ce module dans la crontab de votre serveur
Nous verrons dans la dernière partie comment ajouter des tâches planifiées via un plugin.…

Lire la suite...
Pas de commentaires

Archives

Compte Github