Prestashop : Ajout des conditions à valider dans le tunnel de commande

Ce tutoriel est compatible avec les versions de Prestashop suivantes :
1.7 +
Cet article est assez ancien, malgré toute l'attention que j' apporte à mes contenus il est possible que celui-ci ne soit plus d'actualité.
N'hésitez pas à me le signaler si nécessaire via le formulaire de contact.

Petite découverte de la semaine d’une possibilité relativement pratique d’ajouter des conditions à valider dans le tunnel de commande.

La bonne nouvelle c’est que c’est très facile à faire via un module puisqu’il existe un hook pour cela 🙂
Voyons donc cela dans un module hhcgv dont voici le code

<?php
if (!defined('_PS_VERSION_')) {
    exit;
}
 
//Attention à bien include ceci
use PrestaShop\PrestaShop\Core\Checkout\TermsAndConditions;
 
class Hhcgv extends Module
{
 
    public function __construct()
    {
        $this->name = 'hhcgv';
        $this->tab = 'others';
        $this->version = '0.1.0';
        $this->author = 'hhennes';
        $this->bootstrap = true;
        parent::__construct();
 
        $this->displayName = $this->l('Module de demo cgv');
        $this->description = $this->l('Ajout de cgv personnalisées');
    }
 
    /**
     * Installation du module
     * @return bool
     */
    public function install()
    {
        if (
            !parent::install()
            || !$this->registerHook('termsAndConditions')
        ) {
            return false;
        }
 
        return true;
    }
 
    /**
     * Nouvelles conditions de commandes
     * @param array $param
     * @return array
     */
    public function hookTermsAndConditions($param)
    {
 
        $conditions = [];
        //Définition des conditions (ici c'est du texte direct )
        // mais vous pouver récupérer le contenu d'une page cms également
        $termsAndConditions = new TermsAndConditions();
        $termsAndConditions
            ->setText(
                "Je rajoute une condition "
            )
            ->setIdentifier('conditions-sup-1');
        $conditions[] = $termsAndConditions;
 
        $termsAndConditions2 = new TermsAndConditions();
        $termsAndConditions2
            ->setText(
                "Je rajoute encore une condition "
            )
            ->setIdentifier('conditions-sup-2');
        $conditions[] = $termsAndConditions2;
 
        //Renvoyer les conditions
        return $conditions;
    }
 
}

Les conditions sont bien à valider par les clients pour qu’ils puissent passer commande, il n’y a rien de plus à faire 🙂

10 réflexions sur “Prestashop : Ajout des conditions à valider dans le tunnel de commande”

  1. Intéressant, merci pour le partage !!
    Savez-vous si c’est possible d’ajouter une condition, suivant la méthode d’expédition par exemple

    1. Bonjour,
      Oui c’est tout à fait possible de rajouter une condition d’affichage.
      Il faut savoir que ce tunnel n’est pas exécuté en ajax, du coup la page est rechargée à chaque fois pour aller dans les étapes suivantes.
      Vous pouvez donc réévaluer les conditions d’affichage de l’étape lors de chaque changement.

      Cordialement,
      Hervé

      1. Merci beaucoup pour votre réponse.
        Auriez-vous un exemple de code pour faire une tel condition par rapport a l’étape des carrier. Je n’arrive pas a faire le lien entre les deux étapes.

        1. Bonjour,
          vous pouvez conditionner l’ajout de l’étape via une condition du genre ( dans le fichier d’override )

          //Vérification du transporteur courant du panier
          $id_carrier = 1; //Identifiant du transporteur valide
          if ( $this->context->cart->id_carrier == $id_carrier) {
          //Ajout de l'étape
          }

    1. Bonjour Laurent,

      Non malheureusement pas dans l’immédiat, car sur la version 1.6 ce point va déjà dépendre du type de tunnel utilisé ( one page checkout ou le standard en plusieurs pages )
      Et l’implémentation sera différente dans les 2 cas.

      Cordialement,
      Hervé

  2. Bonjour,
    très bons modules proposé sur votre shop.
    Concernant ce module de champs à valider, je souhaite ajouter une condition d’affichage selon le produit contenu dans le panier.
    Par exemple le produit ID 258 est inclus dans le panier, alors le module affiche la case à cocher, sinon, il n’affiche rien.
    J’ai tenté plusieurs possibilité en ajoutant des {if} mais j’ai une erreur à l’activation du module.
    Par exemple {if $product->id_product == 258} ou {if $this->context->cart->id_product == 258}
    Je suis sur PrestaShop 1.7.7.8
    Merci de votre aide

    1. Bonjour Greg,

      Pour votre besoin il faudrait mieux gérer la condition directement dans le code php.
      Dans la fonction
      Rajoutez un code du type : hookTermsAndConditions
      $displayConditions = false;
      foreach( $this->context->cart->getProducts() as $product){
      if ( $product['id_product'] == 258){
      $displayConditions = true;
      }
      }
      if ( $displayConditions){
      $termsAndConditions = new TermsAndConditions();
      $termsAndConditions
      ->setText(
      'Condition contionné'
      )
      ->setIdentifier('custom-condition');
      $conditions[] = $termsAndConditions;
      }

      Cordialement,
      Hervé

  3. Bonjour et merci pour les articles et solutions proposés sur votre blog pour Prestashop.

    Une question concernant ces cases à valider avant la confirmation de commande :
    Savez vous s’il est possible de retrouver une trace de cette acceptation ?
    Un log ou un champ dans la base de données Prestashop pouvant prouver que le client a bien coché la case ?
    Car j’ai beau chercher, je ne trouve rien dans la base ni dans le back office…
    Il y aurait peut être un peu de code à rajouter et un champ dans la base de données au niveau de la table _orders ?
    Je suis avec prestashop 1.7.8.7

    Merci d’avance de votre aide
    Cordialement
    David

    Merci

    1. Bonjour David,

      Non il n’y a effectivement aucun stockage de cette information.
      Vu qu’il est obligatoire pour le client de cocher la case pour pouvoir passer sa commande, il est forcément obligé d’avoir coché la case.
      Et la date d’acceptation doit correspondre au moment de la création de la commande.

      Cordialement,
      Hervé

Répondre à Laurent Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *