Prestashop

Logo PrestashopPrestashop est une solution e-commerce facile et pratique à mettre en œuvre.
C’est également une plateforme sur laquelle je travaille quotidiennement depuis presque 10 ans.
A travers une centaines d’articles écrits durant cette période, j’ai creusé de nombreuses problématiques liées à cette solution, des versions 1.4.x jusqu’aux dernières versions 1.7
J’ai également partagé des canevas de modules et creusé des points spécifiques de la solution, essentiellement une vision orientée module ( ç’est à dire comment interagir le plus simplement avec Prestashop via un module )

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 »

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 »

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…

Prestashop : Mettre en place un captcha sur les commentaires produits Lire la suite »

Prestashop : Mettre en place un captcha sur le formulaire « envoyer à un ami »

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

Vous pouvez désormais utiliser un captcha sur le formulaire « Envoyer à un ami » situé sur la fiche produit.

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/sendtoafriend/sendtoafriend.js sur votre site via ftp
    dans le dossier themes/default-bootstrap/js/modules/sendtoafriend/ ( remplacer le fichier existant )
  • Envoyer le fichier views/templates/modules/sendtoafriend/sendtoafriend-extra.tpl sur votre site via ftp
    dans le dossier themes/default-bootstrap/modules/sendtoafriend/ ( remplacer le fichier existant )

 

Une fois ces changements en place, le captcha sera disponible sur le formulaire « Envoyer à un ami »

Ei Captcah send to a friend

 

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

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

Dans le fichier themes/default-bootstrap/modules/sendtoafriend/sendtoafriend-extra.tpl

Prestashop : Mettre en place un captcha sur le formulaire « envoyer à un ami » Lire la suite »

Prestashop 1.5 : Requête ajax dans la configuration d’un module

J’ai perdu dernièrement pas mal de temps en tentant de mettre en place des appels ajax dans la configuration d’un module Prestashop version 1.5.
Les méthodologies qui fonctionnent très bien avec les dernières version de prestashop ne fonctionnaient pas du tout.

Après analyse du code, il s’avère que la gestion des requêtes ajax pour les modules prestashop telle que nous la connaissons n’est pas implémentée pour les versions inférieures à la version 1.6.0.3

Pour corriger cela, il est nécessaire de surcharger la fonction postProcess de la classe AdminController.

Pour faire cela proprement il faut donc créer un override dans le fichier :
override/classes/controller/AdminController.php

avec le contenu suivant :
( j’ai tout simplement repris celui des dernières version )

<?php 
class AdminController extends AdminControllerCore {
 
    /**
     * @todo uses redirectAdmin only if !$this->ajax
     */
    public function postProcess() {
        if ($this->ajax) {
 
            // from ajax-tab.php
            $action = Tools::getValue('action');
            // no need to use displayConf() here
            if (!

Prestashop 1.5 : Requête ajax dans la configuration d’un module Lire la suite »

Prestashop : liens dynamiques dans l’éditeur nouvelle version

Edit 2020-02-09 :

Ce module est prévu pour les version 1.6 et inférieures de Prestashop.
Il existe une alternative pour la version 1.7 faite par un autre développeur qui est disponible ici : https://github.com/SeyitDuman/sd_eicmslinks

Je viens de lancer une nouvelle version du module EicmsLinks, qui permets de mettre en place des liens dynamiques dans les pages cms de Prestashop. ( pour l’ancienne version vous pouvez consulter l’ancien article ici )

La version précédente permettait uniquement d’ajouter des liens vers des pages cms.
Cette nouvelle version permets d’ajouter de la même manière, des liens vers les catégories de produits, et les produits eux-mêmes.

Voici un aperçu des nouvelles fonctionnalités :

Insertion d’un lien vers une catégorie de produits :

Ei cms links Categories

Insertion d’un lien vers un produit :

Ei cms links product

 

L’ensemble des informations sur ce module sont désormais centralisées sur la page suivante :

Prestashop : Liens dynamiques dans l’éditeur wysiwyg tinymce

Prestashop : liens dynamiques dans l’éditeur nouvelle version Lire la suite »

Prestashop : installer la dernière version depuis github

Si vous souhaitez tester la dernière version de Prestashop sur votre serveur voici un script qui vous permettra de l’installer via la ligne de commandes depuis github.

Attention , j’insiste bien sur le mot tester, car la version sur github est la version de développement qui ne doit pas être mise en production.
Pour télécharger la dernière version stable rendez-vous sur la page suivante : https://www.prestashop.com/fr/telechargement

Ce script est configuré pour installer prestashop via l’url http://example.com/prestashop/nightly/
Il est basé sur l’article suivant : Installer une version de prestashop en ligne de commande

#chemin d'installation
dir="/home/user/public_html/prestashop/"
nightlyDir="nightly"
domaineName="example.com"
 
#Accès base de données ( Remplacer par les bonnes informations )
dbuser="user"
dbpassword="password"
dbname="prestashop_nigthly"
 
#Accès administration (Remplacer par les bonnes informations
contactEmail="[email protected]"
adminpass="mypassword123"
 
#On se place dans le dossier ou on veut installer le site
cd $dir
 
#Si le dossier existe deja on le supprime
if [ -d "$nightlyDir" ]; then
echo "Le dossier $nightlyDir existe deja suppression des fichiers existants"
rm -rf $nightlyDir
#exit
fi
echo "Creation du dossier $nightlyDir"
mkdir $nightlyDir
 
#On clone la dernière version de la solution
git clone --recursive https://github.com

Prestashop : installer la dernière version depuis github Lire la suite »

Prestashop : Utiliser la liste des catégories produits dans un module

Si vous souhaitez utiliser la liste des catégories de produits Prestashop dans votre module voici comment procéder.

Prestashop 1.5

$categoryTree = new Helper();
	/**
	 *
	 * @param array $root array with the name and ID of the tree root category, if null the Shop's root category will be used
	 * @param type $selected_cat array of selected categories
	 *					Format
	 *						Array
	 * 					(
	 *							 [0] => 1
	 *						 [1] => 2
	 *					)
	 * 					OR
	 *					Array
	 *					(
	 *						 [1] => Array
	 *							  (
	 *									[id_category] => 1
	 *									[name] => Home page
	 *							  )
	 *					)
	 * @param string $input_name name of input
	 * @param bool $use_radio use radio tree or checkbox tree
	 * @param bool $use_search display a find category search box
	 * @param array $disabled_categories
	 * @param bool $use_in_popup
	 * @param bool $use_shop_context
	 * @return string
	 */
echo $categoryTree->renderCategoryTree(null,array(),'id-category-for-insert');

Prestashop 1.6

$categoryTree = new HelperTreeCategories('categories-tree', $this->l('Check the category to display the link'));
echo $categoryTree->setAttribute()
->setInputName('id-category')
->render();

Par contre ces helpers ne fonctionnent malheureusement qu’en back office.…

Prestashop : Utiliser la liste des catégories produits dans un module Lire la suite »

Mise en place d’une plateforme d’intégration continue ( Partie 1 )

Afin de suivre le bon déroulement de vos projets, il est important de pouvoir tester de manière régulière que votre applications fonctionne bien.
Ceci peut être réalisé via la mise en place de tests unitaires et fonctionnels, d’analyse de code etc…

Pour suivre cela de manière optimale, la mise en place d’une plateforme d’intégration continue est la suite logique de l’évolution de votre projet dès lors qu’il atteint une taille importante, ou qu’il comporte de nombreuses fonctionnalités spécifiques.

Il existe plusieurs plateforme pour réaliser cela, mais je vais me baser sur la plus connue : Jenkins (ex Hudson )

L’objectif à la fin de ce guide est d’avoir une plateforme de tests fonctionnels opérationnelle.
Celle ci-sera basée sur phpunit et selenium et firefox en mode headless
La procédure étant assez longue, ce sujet va être séparé en 2 articles :

– Installation des éléments nécessaires aux tests fonctionnels
– Installation et configuration de jenkins pour l’exécution des tests fonctionnels

Installation des éléments nécessaires aux tests fonctionnels.

Mise en place d’une plateforme d’intégration continue ( Partie 1 ) Lire la suite »

Bonnes pratiques : Mise en place d’un environnement de développement normalisé avec NetBeans

Avec leur multiples contributeurs, la maintenabilité des solutions open-source est relativement complexe.
C’est pourquoi celles-ci instaurent des normes de développement qui garantissent la qualité et l’apparence du code.
Ces normes peuvent avoir pour nom « PSR-1 », « PSR-2 » etc..

Je vais vous détailler comment mettre en place un environnement de développement qui vous permettra de suivre au mieux ces normes.
Selon les développeurs, l’éditeur peut varier, pour ma part j’utilise NetBeans au quotidien et j’en suis vraiment très satisfait.

Je vais donc vous détailler comment procéder pour tout configurer avec cet éditeur 🙂 sous Windows
( Certains points sont communs à l’ensemble des éditeurs // Cette méthode ne prétends pas être la meilleure mais détaille l’ensemble des étapes nécessaires à la mise en place)

Installation de Wampserver

Télécharger le fichier d’installation en 32 ou 64 bits en fonction de votre ordinateur depuis le site : http://www.wampserver.com/
Procéder à l’installation standard de Wampserver dans sa dernière version.
( Nous partirons du postulat que Wamp sera installé dans le dossier c:/wamp/ )

Une fois l’installation de wampserver effectuée, il faut se connecter à la console Windows ( Touches Windows + R / puis cmd )
Puis il faudra se rendre dans le dossier c:/wamp/bin/php/php.x.x.x

Bonnes pratiques : Mise en place d’un environnement de développement normalisé avec NetBeans Lire la suite »