Archives pour la catégorie ‘ Prestashop’

Prestashop : Ajouter des champs dans l’édition client

En complément de mon précédent article, Prestashop : Ajouter des champs à l’inscription , voici comment rajouter des champs sur le formulaire d’édition d’un client. ( IdentityController )

L’exemple reste le même, à savoir que le client peut choisir son groupe client.
J’ai retiré le code qui était relatif à l’ajout des champs sur le formulaire d’inscription pour plus de clareté, mais les 2 peuvent bien évidemment cohabiter.

La procédure est un peu plus complexe car elle nécessite la création d’un nouveau hook pour pouvoir sauvegarder les données souhaitées.
Le module va être greffé sur le hook prestashop displayCustomerIdentityForm ( attention il n’existe qu’à partir de la version 1.6.0.11 ), et nous allons créer un nouveau hook actionCustomerIdentityFormSubmit

Voici le code du module

<?php
class hhregistration extends Module {
 
    public function __construct() {
        $this->name = 'hhregistration';
        $this->tab = 'hhennes';
        $this->author = 'hhennes';
        $this->version = '0.1.0';
        $this->need_instance = 0;
 
        parent::__construct();
 
        $this->displayName = $this->l('HH Registration');
        $this->description = $this->l('Sample module which show how to add fields to identity controller');
    }
 
    /**
     * Installation du module : Installation Standard + greffe sur les hooks nécessaires
     * @return boolean
     */
    public function install() {
        if (
                !
11 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

6 commentaires

Optimiser le développement de modules Prestashop : Tester fonctionnellement vos modules avec Phpunit et Selenium

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

3ème étape de notre série sur l’optimisation du développement de module prestashop.

Après la configuration de l’environnement et l’industrialisation des installations qui ont permis de mettre en place la structure de développement, il est temps de passer aux tests fonctionnels de nos modules.
Ceci nous permettra de vérifier que le comportement utilisateur est bien celui attendu.

Configuration de l’environnement pour exécuter les tests

Pour cela nous allons déjà installer les programmes suivants sur le serveur

  • Xvfb : permettra de lancer une application graphique sans serveur X
  • Firefox : navigateur
  • Java : JDk

Pour installer ces éléments saisissez les commandes suivantes

sudo apt-get install xvfb
sudo apt-get install firefox
sudo apt-get install default-jdk

Nous allons ensuite installer également phpunit et selenium, cependant ces éléments peuvent être installé de manière globale ou via composer

Installation globale

PhpUnit

#Téléchargement de phpunit
wget https://phar.phpunit.de
Pas de commentaires

Optimiser le développement de modules Prestashop : Industrialiser l’installation de Prestashop et des modules

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

Cet article est la 2ème étape de notre série sur l’optimisation de modules Prestashop.
Merci de prendre connaissance de la partie 1 : mise en place de l’environnement de développement afin de pouvoir suivre cet article.

Notre environnement de développement est à présent en place, nous allons donc passer à l’industrialisation de l’installation de Prestashop, mais également de ces modules.
L’idée de cette étape est d’avoir des outils pour mettre en place rapidement et automatiquement les versions souhaitées de Prestashop sur notre serveur.

Proposition du structure des fichiers sur le serveur.

Le dossier racine de notre installation est /var/www/public/, dans ce dossier nous allons créer un dossier « prestashop » qui va contenir l’ensemble de nos installations Prestashop.

Celles-ci seront installées dans des sous-dossiers « prestashop_1.x.x.x/

4 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

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

Pas de commentaires

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
        );
    }
}
3 commentaires

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
2 commentaires

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.
114 commentaires

Prestashop : Mettre en place un captcha sur les commentaires produits

La nouvelle version de mon module de captcha eicaptcha ( version 0.4.3 ) apporte une nouvelle possibilité.

Vous pouvez désormais utiliser un captcha sur le formulaire de soumission des commentaires produits.

Voici comment activer cette fonctionnalité, si vous utilisez le thème par défaut.

Télécharger la dernière version du module eicaptcha
( Installer le module sur prestashop si ce n’est pas encore le cas :  module captcha Prestashop )
Extraire l’archive sur votre poste
Envoyer le fichier js/modules/productcomments/productcomments.js sur votre site via ftp
dans le dossier themes/default-bootstrap/js/modules/productcomments/ ( remplacer le fichier existant )
Envoyer le fichier views/templates/modules/productcomments/productcomments.tpl sur votre site via ftp
dans le dossier themes/default-bootstrap/modules/productcomments/ ( remplacer le fichier existant )

Une fois ces changements en place, le captcha sera disponible sur le formulaire de soumission des commentaires produits

Eicaptcha commentaire produit

Si vous utilisez un thème personnalisé, voici comment procéder.

Envoyer le fichier js/modules/productcomments/productcomments.js sur votre site via ftp
dans le dossier themes/default-bootstrap/js/modules/productcomments et adaptez le en fonction de votre design

Dans le fichier themes/default-bootstrap/modules/productcommentsproductcomments.tpl…

7 commentaires


Archives

Compte Github