herve

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

Optimiser développement de modules Prestashop : Mise en place de l’environnement de développement Lire la suite »

Nouvelle série : optimiser le développement de modules Prestashop

Si comme moi vous développez des modules Prestashop vous avez sans doute déjà rencontrés pas mal de difficultés et perdu du temps sur des événements redondants.

Au cours des prochaines semaines, je vais donc partager avec vous les astuces utilisées quotidiennement dans mes développements.

Cette série d’articles devrait donc vous permettre d’optimiser le développement de modules Prestashop.
N’hésitez pas à partager vos astuces pour optimiser encore plus ces articles ! 🙂

Voici les différentes étapes qui seront détaillées :

Étape 1 : mise en place de l’environnement de développement

  • Oubliez wamp, utilisez vagrant
  • Versionnez vos sources ( github / git local / svn )
  • Mettez en place des outils de validation et de corrections des normes

Étape 2 : Industrialiser l’installation de Prestashop et des modules

  • Proposition du structure sur le serveur
  • Installer Prestashop via la ligne de commande
  • Gérer ses modules avec le module eiinstallmodulecli

Étape 3 : Tester fonctionnellement vos modules avec Phpunit et Selenium

  • Configuration de l’environnement pour exécuter les tests
  • Mise en place d’un framework de tests fonctionnels
  • Premiers tests fonctionnels

Étape 4 : Éviter les régressions avec l’intégration continue

  • Mise en place d’une plateforme d’intégration continue avec jenkins

 

Dans le cadre de cette série, les exemples seront liés à la solution Prestashop, mais ces bonnes pratiques peuvent être mises en œuvre sur de nombreux projets 🙂…

Nouvelle série : optimiser le développement de modules Prestashop Lire la suite »

Prestashop : Afficher la référence fournisseur dans la liste admin des produits

Si vous souhaitez rajouter la référence fournisseur dans la liste des produits dans l’administration afin de pouvoir filtrer les produits via ce paramètre voici comment faire :

( Attention en raison de la méthode de stockage, ceci fonctionne uniquement pour les produits qui n’ont pas de déclinaisons )

Créer un override de la classe AdminProductControllers dans l’emplacement override/controllers/admin/ et insérer le code suivant :

<?php
class AdminProductsController extends AdminProductsControllerCore
{
    
    public function __construct()
    {
        
        parent::__construct();
        
        // On joint la table ps_supplier ou la référence est stockée
        $this->_join .= ' LEFT JOIN '._DB_PREFIX_.'product_supplier ps ON ( a.id_product = ps.id_product AND ps.id_product_attribute = 0 )';
        
        //Ajout du champs dans la liste des champs affichés dans l'amdin
        $this->fields_list['product_supplier_reference'] = array(
            'title' => $this->l('Supplier Reference'),
            'align' => 'left',
            'filter_key' => 'ps!product_supplier_reference',
            'width' => 80
        );
    }
}

Prestashop : Afficher la référence fournisseur dans la liste admin des produits Lire la suite »

Monitorer sites mutualisés avec Nagios

Si vous gérez plusieurs hébergements mutualisé et que vous souhaitez les monitorer facilement depuis votre serveur dédié, voici comment procéder avec Nagios.
Pour l’installation qui est assez complexe je vous laisse consulter l’article suivant qui est très bien réalisé :

http://www.unixmen.com/how-to-install-nagios-4-1-in-ubuntu-15-04/

Une fois l’installation effectuée nous allons créer un dossier « websites » dans « /usr/local/nagios/etc/ » dans lequel nous placerons toutes nos nouvelles configurations.
Pour charger automatiquement ces configurations il faut rajouter la ligne suivante dans le fichier :
/usr/local/nagios/etc/nagios.cfg

cfg_dir=/usr/local/nagios/etc/websites

Voici ensuite un fichier template qui vous servira de configuration pour vos sites

################ 
# Groupe des hotes : ( UN groupe par client )
###############
define hostgroup{
        hostgroup_name  Google
        alias           Google
}
 
################ 
# Définitions des hotes à tester
###############
 
#Modele de verification
define host{
 name google-host ;Changer le nom du host
 use generic-host
 hostgroups  Google ;Prendre le nom du hostgroup defini plus haut
 check_command check_http!

Monitorer sites mutualisés avec Nagios Lire la suite »

Prestashop 14 : Limiter la quantité des produits téléchargeables à 1 dans le panier

Petite astuce rapide pour Prestashop 1.4.
Si vous vendez des produits téléchargeables qui n’ont aucun intérêt  à être ajouté au panier plus d’une fois, voici comment limiter cela rapidement.

Dans le fichier override/classes/Cart.php saisissez le code suivant :

Les codes ajoutés sont lignes 42,43 et 53-55

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?php

Prestashop 14 : Limiter la quantité des produits téléchargeables à 1 dans le panier Lire la suite »

Ovh mutualisé copier une base de données dans une autre avec ssh

Voici un petit script bash qui vous permettra de copier facilement le contenu d’une base de données à une autre depuis un hébergement mutualisé ovh.
( Ce script fonctionne uniquement à partir des hébergements pro, car il nécessite un accès ssh )
Le déroulé du script est le suivant :

  • Export de la bdd à copier
  • Sauvegarde de la bdd de destination
  • Suppression des données de la bdd de destination
  • Insertion des données de la bdd à copier dans la bdd de destination
#!/bin/bash
 
#Saisir les paramètres des bases de données
serveurProd="mysql.ovh"
userProd="user"
passProd="password"
 
serveurPreprod="mysql.preprod"
userPreprod="preprod"
passPreprod="preprod"
 
#Export de la base de donnees de prod
echo "Sauvegarde base de prod"
mysqldump --host=$serveurProd --user=$userProd --password=$passProd $userProd | gzip > backup-prod_$(date +"%Y-%m-%d").sql.gzip
 
#Sauvegarde de la base de donnees de preprod
echo "Sauvegarde base de preprod"
mysqldump --host=$serveurPreprod --user=$userPreprod --password=$passPreprod $userPreprod | gzip > backup-preprod_$(date +"%Y-%m-%d").sql.gzip

Ovh mutualisé copier une base de données dans une autre avec ssh Lire la suite »

Alternative a wampserver : Vagrant

Si comme moi, vous développez sous Windows, et que vous utilisez wampserver pour faire tourner vos sites locaux, vous avez sans doutes déjà été agacé par les installations d’outils spécifiques sous windows ( composer , npm , phpunit ect… )

Voici donc une alternative simple et rapide à mettre en place.
Cela prendra un peu plus de temps que d’installer wamp mais une fois votre plateforme en place, vous aurez à votre disposition un linux en local.

Pour mettre l’infrastructure en place, voici les étapes à réaliser

Une fois les logiciels installés, vous pouvez maintenant installer des centaines de machines virtuelles préconfigurées en fonction de vos usages, celles-ci sont acessibles sur la plateforme https://atlas.hashicorp.com/boxes/search

Pour du développement local, je me suis basé sur l’image « Scotch Box » : https://box.scotch.io/ qui dispose entre autre des fonctionnalités suivantes :

Serveur : ( MySQL, PHP 5.5, Ruby, Git,Composer,Apache … )
Front End : (NPM, Grunt, Bower… )

Pour l’installer, il suffit de cloner le projet github

git clone https://github.com

Alternative a wampserver : Vagrant Lire la suite »

Magento : Ajouter un attribut personnalisé à la grid des produits via les observers

Vous avez forcément sur votre boutique Magento, des attributs produits spécifiques à votre site.
Si vous souhaitez les afficher dans la grid des produits, et pouvoir filtrer les produits via cet attribut, voici comment procéder.

Le méthode la plus propre est de passer par les observers de Magento, ceci évitera de créer des surcharges pouvant entrainer des problèmes de compatibilités.
Je passe volontairement toute la partie liée à la création du module pour se concentrer uniquement sur la partie spécifique à l’affichage de l’attribut dans la grid.

Pour que notre modification fonctionne, le module va se greffer sur les événements suivants :

  • core_block_abstract_to_html_before : Pour afficher l’attribut dans la grid des produits
  • eav_collection_abstract_load_before : Pour charger les valeurs de l’attribut dans la collection des produits

Voici donc les données  à faire figurer dans le fichier de configuration config.xml de votre module :
Veuillez à bien remplacer le nom du modèle ( hhennes_productgridfilter ) par le nom de votre module

<adminhtml>
        <events>
            <core_block_abstract_to_html_before>
                <observers>
                   <product_filter_reference>
                        <class>hhennes_productgridfilter/observer</class>
                        <method>onBlockHtmlBefore</method>
                    </product_filter_reference>
                </observers>
            </core_block_abstract_to_html_before>
            <eav_collection_abstract_load_before>
                <observers>
                    <product_filter_reference_load>
                        <class>hhennes_productgridfilter/observer</class>
                        <method>onEavLoadBefore</method>
                    </product_filter_reference_load>
                </observers>
            </eav_collection_abstract_load_before>
        </events>
  </adminhtml>

Passons à présent à l’édition de l’observer du module qui sera situé dans modulename/Model/Observer.php

Magento : Ajouter un attribut personnalisé à la grid des produits via les observers Lire la suite »

Prestashop : Ajouter des champs à l’inscription

C’est une question qui revient souvent sur Prestashop, comment ajouter des champs lors de l’inscription d’un client ?
Nous allons voir ensemble comment réaliser cela simplement.

Pour l’exemple, nous allons permettre à l’utilisateur de choisir son groupe client lors de l’inscription.
Si vous souhaiter rajouter des champs dans le formulaire d’édition client, vous pouvez consulter l’article : Prestashop : Ajouter des champs dans l’édition client
Si vous souhaitez pouvoir envoyer des fichiers lors de la création du compte client vous pouvez consulter l’article : Prestashop : Envoyer des fichiers lors de la création du compte client

Edit : Le fonctionnement change avec prestashop 1.7 , consulter l’article pour le tutoriel actualisé : Prestashop 1.7 : Ajouter des champs clients

Pour faire cela nous allons créer un nouveau module qui va se greffer sur les hooks prestashop disponibles pour cet usage :

  • displayCustomerAccountForm : ce hook permets de rajouter du contenu dans le formulaire de création de compte.
  • actionCustomerAccountAdd : ce hook permets de récupérer les informations transmises lors de la création du compte client.

Prestashop : Ajouter des champs à l’inscription Lire la suite »

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

Magento : Module Alertes Lire la suite »