Posts Tagged ‘modules’

Prestashop 1.7 : Nettoyer la liste des modules

Dans le listing des modules Prestashop, un point m’a toujours dérangé.
Des modules partenaires et payants remontent et se mélangent aux modules installés sur le site, ce qui fait que c’est souvent le bordel pour s’y retrouver.
J’avais déjà cherché un peu comment remédier à ce point sur la version 1.6 sans trouver de solution satisfaisante …

La bonne nouvelle sur cette version 1.7, c’est que ça devient relativement facile à faire  !  ( Par contre je n’ai pas dit que c’était propre 😉 )

La modification doit être réalisée dans une partie de Prestashop qui n’est pas suchargeable, il est donc nécessaire de modifier le fichier coeur

src/Core/Addon/Module/ModuleRepository.php

Dans la fonction getList() , mettez le contenu suivant :

public function getList()
    {
        //On ne renvoie que la liste des modules sur le disque ( c'est à dire physiquement présents sur le serveur)
        return $this->getModulesOnDisk();
        /*
         Ancien Code
        return array_merge(
            $this->getAddonsCatalogModules(),
            $this->getModulesOnDisk()
        );*/
    }

Voici un aperçu de la page des modules avant  la modification

Liste des modules avant modification

Et après 🙂

Liste modules après filtre

Seuls les modules physiquement présents sur le serveur sont listés, ce qui est beaucoup plus clair et plus propre de mon point de vue.…

4 commentaires

Prestashop : Gestion des taches cron

Contrairement à d’autres plateformes l’exécution et la planification des tâches cron sur prestashop n’a rien d’intuitif pour l’utilisateur de l’administration ou pour le développeur.
C’est assez dommage sachant qu’elles sont indispensables pour faire tourner correctement une boutique et pour raffraichir entre autre les indexes de recherches ou de la navigation à facettes.

Nous allons voir ensemble comment gérer les cron ( ou tâches planifiées ) sur la dernière version 1.7 de Prestashop. ( La logique est la même pour les anciennes versions )

Installation du module cronjobs

Prestashop propose un module gratuit « cronjobs« qui est inclu nativement pour les versions antérieures, mais celui-ci n’est plus trouvable sur la version 1.7
Sa seule limite, et que la granularité des tâches est d’une heure, ce qui est amplement suffisant pour l’essentiel des sites e-commerce basiques.

Pour l’installer il faut récupérer le code sur github : https://github.com/PrestaShop/cronjobs

Une fois le module installé dans sa configuration, il faut choisir le mode « Expert » car le mode basique qui permettait de lancer des crons via un service proposé par Prestashop, n’est plus fonctionnel c’est malheureusement inutile d’essayer de l’utiliser 🙁

Cronjobs prestashop

Le mode expert nous donne l’url à définir dans la crontab de notre serveur ( je reviendrais ultérieurement sur la configuration sur un hébergement OVH mutualisé ) .…

24 commentaires

Prestashop : Gérer les dépendances de vos modules

Un petit article rapide qui présente une fonctionnalité qui existe depuis très longtemps  ( version 1.5  de prestashop ), la dépendances de modules.
Pour la mettre en place c’est tout simple.

Il vous suffit de rajouter la propriété « dependencies » dans la fonction construct de votre module.
Avec le nom du module tel que défini dans son fichier.

public function __construct()
    {
        $this->name = 'samplemodule';
        $this->tab = 'others';
        $this->version = '0.1.0';
        $this->author = 'hhennes';
        $this->bootstrap = true;
        parent::__construct();
 
        $this->displayName = $this->l('sample module');
        $this->description = $this->l('sample module');
 
        //Mettre ici le nom des modules dont dépends votre module
        $this->dependencies = array('blockcategories');
    }

Avant d’installer votre module Prestashop vérifiera automatiquement si le ou les modules requis sont bien installés.…

Pas de commentaires

Prestashop : Ajouter des champs dans un formulaire d’administration

Depuis la version 1.6 de Prestashop, il est possible de rajouter rapidement et facilement le formulaire d’édition d’un objet dans l’administration via un module personnalisé.
Et ceci sans surcharge particulière en utilisant tout simplement les hooks existants.

Les objets éditables via cette méthodes sont notamment les suivants :

Cette modification est réalisable via les hooks dynamiques suivants :

Dans la fonction renderForm de la classe AdminController

Hook::exec('action'.$this->controller_name.'FormModifier')

Dans la fonction postProcess de la classe AdminController via aux choix les hooks suivants :

//Avant l'exécution de l'action du controller admin
Hook::exec('actionAdmin'.ucfirst($this->action).'Before', array('controller' => $this));
Hook::exec('action'.get_class($this).
34 commentaires

Optimiser le développement de modules Prestashop : Éviter les régressions avec l’intégration continue

Cet article fait partie de la série : Optimiser le développement de modules Prestashop

  1. Mise en place de l’environnement de développement
  2. Industrialiser l’installation de Prestashop et des modules
  3. Tester fonctionnellement vos modules avec Phpunit et Selenium
  4. Éviter les régressions avec l’intégration continue

Pour finir notre série sur le développement de modules Prestashop, nous allons nous intéresser à l’intégration continue.
L’objectif de celle-ci est de nous assurer que tout fonctionne correctement lorsque nous faisons évoluer notre module. ( c’est à dire que les changements apportés n’entrainent pas l’apparition de nouveaux problèmes ou régressions )

Pour cela nous avons dans l’étape précédente écrits des tests fonctionnels qui sont chargés de vérifier que tout fonctionne correctement. Nous souhaitons donc que ces tests soient lancés automatiquement lors de la publication de chaque modifications.

Plusieurs possibilités existent pour réaliser ce suivi, mais je vais vous présenter une solution basée sur jenkins

Installation de jenkins

Pour l’installer connectez-vous à votre machine virtuelle et saissez les commandes suivantes :

wget -q -O - https://jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

Puis lancer le service via la commande

sudo service jenkins start

Une fois jenkins installé vous pouvez y accéder via le port 8080 , et donc via l’adresse http://192.168.33.10:8080

Installation des modules complémentaires.

Pas de commentaires

Prestashop : Utiliser l’arbre des catégories dans le formulaire d’administration d’un module

Si vous souhaitez utiliser l’arbre des catégories de Prestashop dans le formulaire d’administration d’un module.

Voici un petit snippet qui vous permettra de le faire facilement avec Prestashop 1.6 et supérieurs lors de la déclaration des paramètres de votre formulaires :
( Cette solution est nativement implémentée )

 $fields_form = array(
            'form' => array(
                //Entête du formulaire
                'legend' => array(
                    'title' => $this->l('Form Name'),
                    'icon' => 'icon-cogs'
                ),
                //Champs du formulaire
                'input' => array(
                    array(
                        'type' => 'categories', //Type de champ à mettre à catégories
                        'label' => $this->l('Category'),
                        'name' => 'category_tree',
                        'desc' => $this->l('Select category to display'),
                        'required' => true,
                        'empty_message' => $this->l('Please fill the category id'),
                        //Informations spécifiques de l'arbre
                        'tree' => array(
                            'id' => 'category_tree',
                            'selected_categories' => $selected_categories) // Catégorie sélectionnées ( variable array )
                        ),
                    ),  
                ),
                //Boutons de soumission du formulaire
                'submit' => array(
                    'title' => $this->l('Save'),
                    'class' => 'button btn btn-default pull-right',
                )
            ),
        );

Le rendu obtenu est ensuite le suivant :

Catégories admin form prestashop

2 commentaires

Optimiser développement de modules Prestashop : Mise en place de l’environnement de développement

Cet article fait partie de la série : Optimiser le développement de modules Prestashop
  1. Mise en place de l’environnement de développement
  2. Industrialiser l’installation de Prestashop et des modules
  3. Tester fonctionnellement vos modules avec Phpunit et Selenium
  4. Éviter les régressions avec l’intégration continue

Pour commencer notre série sur l’optimisation du développement des modules Prestashop, nous allons commencer par la mise en place de l’environnement de développement.

Si vous en avez la possibilité, travailler directement sous Linux apporte directement l’ensemble des fonctions qui sont disponibles sur votre serveur, sur votre poste de travail.
Si c’est déjà votre cas vous pouvez passer directement à la partie sur le versionning de vos sources.

Installer une machine virtuelle en local.

Si vous travaillez avec un environnement Windows vous avez sans doute déjà travaillé avec Wampserver.
Mais pour ma part je trouve que cette solution est à présent trop limitée, d’autant plus que l’installation des outils les plus pratiques actuellement ( git / composer … ) est plus compliquée sous l’ environnement windows.…

Pas de commentaires

Magento : Module Alertes

Voici un nouveau module Magento qui permets d’envoyer des alertes via emails aux administrateurs ou aux gestionnaires du site.

Vous pouvez-vous ci-dessous une capture de l’écran de configuration d’une alerte.
( Accessible via le menu Rapports / Alertes )

Création Alerte Magento

Dans cet exemple, je récupère toute les commandes du jour qui ont utilisé le coupon de réduction « TEST ».
Nous allons voir ensemble comment remplir une alerte.
( Je passe volontairement les détails sur les champs qui sont transparents : Nom / Description / Actif / )

Dans le champ condition , entrez la requête SQL à effectuer pour récupérer les données ( Seuls les SELECT sont autorisés ).

Si vous souhaitez recevoir un email, passer le champ Envoyer un email  à « Yes », renseignez ensuite les destinataires ( séparer les emails par ; ), un sujet et le texte de votre email.

Si vous souhaitez exporter les résultats en csv , passer le champ Exporter les résultats en csv à « Yes », puis renseignez le nom du fichier csv souhaité ainsi que l’emplacement ou il sera stocké ( dans var/export/ ).…

Pas de commentaires


Compte Github