prestashop

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 »

Prestashop 1.4 : Afficher le prix produit sans l’écotaxe

Par défaut l’affichage du prix des produits sous Prestashop ( version 1.4 ) inclus l’écotaxe dans son montant.
Si pour différentes raison il vous est nécessaire de modifier cet affichage voici comment l’afficher sans l’écotaxe.

Pour commencer il est nécessaire de surcharger la classe Product dans le fichier override/classes/Product.php
Dans cette classe nous allons ajouter 2 fonctions qui vont récupérer les prix sans l’écotaxe.

<?php
 
/**
 * Surcharge de la classe produits
 *
 */
class Product extends ProductCore {
 
 
    /**
     * Reprise de la fonction getPrice mais en appellant la fonction getProductPriceStatic avec le paramètre ecotaxe à false
     *
     * @param boolean $tax With taxes or not (optional)
     * @param integer $id_product_attribute Product attribute id (optional)
     * @param integer $decimals Number of decimals (optional)
     * @param integer $divisor Util when paying many time without fees (optional)
     * @return float Product price in euros
     */
    public function getPriceWithoutEcotax($tax = true, $id_product_attribute = NULL, $decimals = 6, $divisor = NULL, $only_reduc = false, $usereduc = true, $quantity = 1) {
        return Product::getPriceStatic((int) ($this->id), $tax, $id_product_attribute, $decimals, $divisor, $only_reduc, $usereduc, $quantity,false, NULL, NULL, NULL, $this ,false);
    }
    
    /**
     * Reprise de la fonction getPrice mais en appellant la fonction getProductPriceStatic avec le paramètre ecotaxe à false
     *
     * @param boolean $notax
     * @param intege $id_product_attribute
     * @return float Product price in euros
     */
    public function getPriceWithoutReductWithoutEcotax($notax = false, $id_product_attribute = false)
    {
        return Product::getPriceStatic((int)($this->id), !

Prestashop 1.4 : Afficher le prix produit sans l’écotaxe Lire la suite »

Prestashop 1.4 : Créer un controller Front Office pour un module

Dans sa version 1.4, la gestion des controllers front office des modules n’est pas aussi optimisée que sur les versions suivantes.
Malgré tout cette version reste encore assez utilisée sur des anciennes boutiques.

Voici donc comment créer « proprement » un module qui disposera d’un controller front office.
Par proprement j’entends un module qui déposera les fichiers nécessaires aux bons emplacements, et qui peut être désinstallé sans laisser de traces 🙂

Le nom du module sera « sample » et sa structure sera la suivante :

Structure du module sample

Les contenus des fichiers css,js et tpl n’ayant pas d’importance je ne détaillerais pas leur contenu. ( il s’appelleront respectivement sample.css , sample.js et sample.tpl )

Voici le contenu du fichier de gestion du module « sample.php »
C’est dans ce fichier via les fonction _installModuleController et _uninstallModuleController que le controller Front office du module est bien installé ou supprimé

<?php
 
if (!defined('_PS_VERSION_'))
exit;
 
class Sample extends Module {
 
/** Nom de la page Front Office du module */
private $_module_page_name = 'sample_front_office_page';
 
 
public function __construct() {
 
$this->name = "sample";
$this->tab = "others";
$this->version = '0.1.0';
$this->author = "Hennes Herve";
$this->need_instance = 0;
 
parent::__construct();
$this->displayName = $this->l("Sample Module");
$this->description = $this->l("Sample module with front controller");
}
 
/**
* Installation du module
*/
public function install() {
 
//Installation Standard du module
if (!

Prestashop 1.4 : Créer un controller Front Office pour un module Lire la suite »

Prestashop : Installer des modules sans passer par l’administration

Voici un module Prestashop qui vous permettra d’installer un module en appelant directement une page web ( depuis un navigateur ou la ligne de commande )

Ceci peut être pratique dans le cas ou il est nécessaire de déployer un module sur de nombreux sites différents

Une fois les fichiers déposé par ftp sur l’hébergement concerné , il vous suffit d’appeller la page http://www.site.com/modules/eiinstallmodulescli/install_module.php?module_name=module_name et le module sera automatiquement installé.

Le code exécuté est des plus basiques :-p , mais de mon côté cela m’a déjà permis de gagner pas mal de temps 🙂

require_once(dirname(__FILE__).'/../../config/config.inc.php');
 
//Nom du module à installer
$module_name = Tools::getValue('module_name');
 
if ( $module_name ) {
 
	//Inclusion de la classe du module
	if ( ! is_file(dirname(__FILE__).'/../'.$module_name.'/'.$module_name.'.php' ) )
		die (' Erreur : Impossible d\'inclure le fichier du module');
 
	include_once ( dirname(__FILE__).

Prestashop : Installer des modules sans passer par l’administration Lire la suite »

Prestashop : Tri des produits et catégories par Ordre alphabétique

Voici comment lister les produits et les catégories Prestashop par ordre alphabétique :

( Cette méthode est valide avec prestashop 1.4.x et prestashop 1.5.x , je ne l’ai pas testé avec la version 1.6 )

Les procédures à exécuter sont les suivantes :

  • Ordre des catégories dans le module blockCatégories
  • Ordre des produits dans les préférences produits
  • Override de la récupération des sousCatégories

 

Ordre des catégories dans le module blockCatégories :

Dans l’administration « modules » , rechercher le module « bloc catégories »
Block Catégories Prestashop
Dans la configuration du module ,  cocher « par nom » dans l’option Trier et sauvegarder

Ordre des produits dans les préférences produits

Dans l’administration « Préférences » puis « Produits »

Tri des produits prestashop

Dans « pagination / Tri par défaut » sélectionner l’option « Nom  du produit » et sauvegarder

Override de la récupération des sousCatégories

Afin de pouvoir trier les sous catégories d’une catégorie par ordre alphabétique il va être nécessaire d’overrider la fonction getSubCategories de la class « Category »
Créer donc un fichier Category.php…

Prestashop : Tri des produits et catégories par Ordre alphabétique Lire la suite »