herve

Prestashop : Filtrer les emails de produits hors stocks

Dans Prestashop il est possible d’être notifié lorsque des commandes sont passées sur des produits qui ne sont bientôt plus en stock.
Ce paramétrage est accessible depuis l’administration sur chaque fiche produit en cochant la case « M’envoyer un email quand la quantité est en dessous ou égale à ce niveau. »

Cette fonctionnalité est très pratique pour le marchant, mais en revanche ces emails n’ont aucun intérêt pour le développeur ou l’agence qui gère le site.
C’est la ou le fonctionnement natif de Prestashop n’est pas très pratique, car pour chaque commande d’un produit avec cette option cochée, l’ensemble des utilisateurs de l’administration  avec un accès en lecture à la page des stocks vont être notifiés.

Ces derniers temps je suis spammé par ce genre d’email et j’ai donc décidé de m’attaquer au problème 🙂

Une solution simple pourrait être de retirer cet accès pour les profils administrateurs, mais ceci nécessite de créer un nouveau rôle spécial et de ne pas avoir de visualisation sur cette page en back office.…

Prestashop : Filtrer les emails de produits hors stocks Lire la suite »

Prestashop : Utiliser les pages cms comme des blocks

Vous souhaitez afficher des contenus éditables depuis l’administration un peu partout dans votre thème ?
C’est très facile à faire et nous allons voir comment. ( Pour un usage basique directement dans les fichiers smarty )
L’idée est d’utiliser les pages cms de Prestashop.
Pour les ranger, vous pouvez faire une catégorie cms désactivée « Blocs Cms » et mettre toutes les pages dedans.

Pour gérer l’affichage nous allons créer un module hhcmspagewidget
Et le contenu de la page de démo sera le suivant.

Fonctionnement basique

Pour un fonctionnement de base le code suivant sera suffisant

class Hhcmspagewidget extends Module implements WidgetInterface
{
 
    public function __construct()
    {
        $this->name = 'hhcmspagewidget';
        $this->tab = 'others';
        $this->version = '0.1.0';
        $this->author = 'hhennes';
        $this->bootstrap = true;
        parent::__construct();
 
        $this->displayName = $this->l('Hh Cms page widget');
        $this->description = $this->l('Allow to display cms page as block through a widget');
    }
 
 
    /**
     * [FRONT OFFICE] Widget utilisé pour afficher le bloc cms
     * @param string $hookName
     * @param array $configuration
     * @return string
     */
    public function renderWidget($hookName = null, array $configuration)
    {
        if ( isset($configuration['id_cms']) ){
            return $this->getWidgetVariables($hookName,$configuration);
        }
 
        return '';
    }
 
    /**
     * [FRONT OFFICE] Widget utilisé pour récupérer les informations d'affichage
     * @param string $hookName
     * @param array $configuration
     * @return string
     */
    public function getWidgetVariables($hookName = null, array $configuration)
    {
        try {
 
            $idCms = (int)$configuration['id_cms'];
            $cms = new CMS($idCms,$this->context->language->id);
 
            //Exécution du hook pour appliquer le filtrage des contenus cms
            if ( false !=

Prestashop : Utiliser les pages cms comme des blocks Lire la suite »

Prestashop: Afficher les commentaires produits dans les onglets de la fiche produit

Petit tutoriel rapide aujourd’hui sur une optimisation que j’ai voulu faire cette semaine et qui s’est avérée un peu plus embêtante que prévue.
Le besoin est relativement simple je veux déplacer le contenu des commentaires dans les onglets affichés sur la fiche produit. ( Dans un thème basé sur classic )
Les commentaires utilisent le module natif de Prestashop productcomments
L’affichage du contenu des onglets est géré par le hook displayProductExtraContent
Voici une capture du comportement avant :

Et voici une capture du comportement que je souhaite obtenir après.

Plusieurs approches techniques sont possibles pour faire cela, pour ma part j’ai choisi de le faire un module complémentaire hhproductcomments qui dépends du module natif productcomments.
Cela présente l’avantage de ne pas toucher devoir toucher ni au module natif, ni au thème pour gérer cet affichage.
L’idée est de greffer ce nouveau module sur le hook displayProductExtraContent pour gérer l’affichage en onglet et d’appeller le hook natif displayFooterProduct du module productcomments

Le gros point d’attention à avoir , c’est que la fonction hookDisplayFooterProduct attends une instance de  \PrestaShop\PrestaShop\Adapter\Presenter\Product\ProductLazyArray et non pas un instance du produit ( Product ) telle qu’on la reçoit dans le hook initial.…

Prestashop: Afficher les commentaires produits dans les onglets de la fiche produit Lire la suite »

Magento 2 : Ajouter une validation du numéro de téléphone

Nous allons voir comment ajouter facilement une règle de validation spécifique sur le numéro de téléphone de l’adresse client sur les formulaires suivants :

  • Ajout / Édition d’adresse dans le compte client
  • Ajout d’adresse dans le tunnel de commande.

Pour faire cela nous allons créer un module CustomerPhoneValidation ( les sources complètes sont sur github et le lien disponible en fin d’article
Cet article est basé sur la version 2.4.1

Fonctionnement général

Les données des formulaires magento sont validées via l’objet javascript « validator » de magento, qui utilise ensuite la librairie jquery validate.
L’objet « Validator » dispose d’un certains nombre de règles de base qui sont visibles dans le fichier : lib/web/mage/validation.js
Il est possible assez facilement via les mixins d’ajouter nos propres règles de validation.
L’environnement de validation de données utilisées dans le compte clients et dans le tunnel de commandes étant différents il faudra créer 2 mixins.

Voici donc comment ajouter la nouvelle règle de validation
Cette règle vérifiera que le format du téléphone est au format français ( 10 chiffres  commençant par 0 )

Pour commencer créér le fichier view/frontend/requirejs-config.js

Magento 2 : Ajouter une validation du numéro de téléphone Lire la suite »

Prestashop : Ajouter des champs à une catégorie

Cette article inaugure une nouvelle série d’articles à venir sur comment étendre les entités Prestashop sans surcharges.
C’est connu depuis très longtemps qu’il est déconseillé d’utiliser les surcharges pour ajouter des champs, pour autant il n’y avait pas forcément d’autres solutions, c’est de moins en moins vrai 🙂

Ce tutoriel est uniquement compatible avec les versions de Prestashop supérieures à la 1.7.6 ( Lorsque la page de gestion admin est passée sous symfony )
Mais le hook essentiel filterCategoryContent est présent depuis la version 1.7.1
La même logique avec une autre gestion dans l’administration est donc possible.

Pour l’exemple nous allons donc créer un module hh_categoryfields qui va ajouter 3 champs aux catégories :

  • Code erp , type texte commun à toutes les langues et tous les sites
  • Description SEO , type texte avec possibilité de le traduire pour chaque langue installée dans chaque boutique
  • Image : Image commune à toutes les langues et tous les sites.

 

Ajout des champs dans le formulaire d’édition admin

Pour l’ajout des champs dans le formulaire d’administration j’ai déjà détaillé le concept de fonctionnement dans l’article : https://www.h-hennes.fr/blog/2019/08/05/prestashop-1-7-ajouter-des-champs-dans-un-formulaire-dadministration/

Prestashop : Ajouter des champs à une catégorie Lire la suite »

Nouvelle fonctionnalité : Évaluez la compatibilité de l’article avec votre version de Prestashop

Constat

L’écosystème Prestashop évolue rapidement en ce moment, et sur ce blog je partage des astuces sur cette solution depuis déjà pas mal d’années.
L’information telle qu’elle est écrite au moment de la rédaction d’un article n’est du coup plus forcément vraie quelques mois ou années plus tard.

Afin de préciser les compatibilités de l’article avec telle ou telle version de Prestashop j’avais déjà mis en place dans l’entête un bloc récapitulatif des versions compatibles.
Et en complément sur les articles qui datent de plus d’un an je rajoute également un bloc avec cette information.

Je pense que c’est assez exhaustif et que cela permets déjà d’avoir une idée sur la pertinence de l’information.
En revanche le gros inconvénient c’est que je passe  devrait passer régulièrement sur l’ensemble des articles pour vérifier que l’information est toujours d’actualité.

Optimisation

A compter d’aujourd’hui les choses changent et j’ai introduis 2 nouveautés :

  • Tous les visiteurs pourront évaluer le fonctionnement des articles avec leur version de Prestashop.

Nouvelle fonctionnalité : Évaluez la compatibilité de l’article avec votre version de Prestashop Lire la suite »

Magento 2 module pour visualiser les pdfs dans le navigateur

J’avais rencontré la même problématique sur un développement prestashop ( cf. https://www.h-hennes.fr/blog/2020/07/13/prestashop-gagnez-du-temps-lors-la-personnalisation-des-fichiers-pdf-factures-livraisons/ ), dans le cas ou on souhaite personnaliser les fichiers pdfs pour changer des éléments ou de la mise en forme c’est relativement pénible de devoir à chaque fois télécharger le fichier pdf pour le visualiser.

J’ai donc créé un module magento 2 pour visualiser les pdf dans le navigateur , celui-ci fonctionne pour les pdfs suivants dans l’administration

  • Factures ( Invoices )
  • Livraisons ( Shipping)
  • Avoirs ( Creditmemo )

Celui-ci a uniquement été testé sur Magento 2.4.
Le module est disponible sur mon dépot github avec des exemples d’extensions magento 2.
https://github.com/nenes25/magento2_samplemodules/tree/master/Hhennes/SalesAdminPdfViewer

Configuration

Il est possible d’activer ou non l’affichage des pdfs via la configuration dans :

Configuration / Hhennes Extensions / Pdf Print

Penser à vider le cache une fois la modification appliquée, et une fois celui-ci actif les fichiers pdfs sont affichés directement dans le navigateur :

Il est ensuite possible de voir les changements dès le rafraîchissement de la page, et sans devoir télécharger le fichier.…

Magento 2 module pour visualiser les pdfs dans le navigateur Lire la suite »

WordPress hacké , que faire ?

Suite à la remarque d’un visiteur ( que je remercie encore au passage ), j’ai découvert récemment que le blog avait été hacké et que du contenu de spam était hébergé sur mon domaine.
Ce blog comme beaucoup d’autres utilise WordPress, et à la fois la version globale de WordPress et les plugins sont mis à jour régulièrement.
Je n’ai pas trouvé quelle est la faille initiale qui a permis l’envoi de fichier compromis.
En revanche voici comment j’ai procédé pour corriger.

Installer le plugin WordFence

Après quelques jour du jeu de la chat et la souris de suppression manuelle des fichiers qui revenaient quelques heures plus tard, je me suis décidé à chercher un plugin qui pourrait corriger cela tout seul.

J’ai trouvé Wordfence : https://fr.wordpress.org/plugins/wordfence/ qui est noté plus de 4,5/5 sur près de 4 millions d’installations.
C’est un module freenium ( version gratuite mais avec des fonctionnalité avancées payantes)
La version gratuite est tout à fait suffisante.
L’outil permets de faire directement un scan des fichiers du core wordpress ainsi que de l’ensemble des plugins installés:
Il identifie l’ensemble des fichiers modifiés et permets de visualiser les différences, et même de corriger et nettoyer les fichiers directement depuis le back office en un clic.…

WordPress hacké , que faire ? Lire la suite »

Nouveau design pour le blog

Vous l’aurez certainement remarqué, mais le blog vient de faire peau neuve !

L’ancien design design datait de 2013, et j’avais uniquement fait quelques optimisations mobiles en 2015.
Il était donc temps de changer cela.

Le design et les technologies front n’étant pas forcément le point qui m’intéressent le plus, je suis parti sur un thème relativement populaire dans la communauté WordPress.
Sur lequel j’ai rapidement changé quelques couleurs mais rien de très élaboré.
N’hésitez pas à remontez votre avis et à signaler si il y’a des petites coquilles à des endroits.

Nouveau design pour le blog Lire la suite »