Navigation

    aide prestashop

    PrestaHelp

    • S'inscrire
    • Se connecter
    • Recherche
    • Catégories
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Recherche
    1. Accueil
    2. doekia
    • Profil
    • Abonnements
    • Abonnés
    • Sujets
    • Messages
    • Meilleur sujets
    • Groupes

    doekia

    @doekia

    administrators

    32
    Réputation
    43
    Messages
    2353
    Vues
    2
    Abonnés
    1
    Abonnements
    Inscrit Dernière connexion
    Site web store.enter-solutions.com/

    doekia S'abonner
    legacy administrators

    Messages postés par doekia

    • RE: les routes sur mesures

      J'ai peut-être répondu trop vite dans mon dernier message car je ne suis finalement pas sûr de comprendre;
      De toute manière si un module veut implanter son propre controller front l'url simplifiée aura TOUJOURS la forme /module/<nom-du-module>/<nom-du-controller> et c'est d'ailleurs case sensitive

      posté dans Discussion générale
      doekia
    • RE: les routes sur mesures

      En effet le hook d'injection des routes ne fonctionne que pour un module
      Si le besoin est seulement de changer l'url simplifié, il suffit en 1.6.x de l'ajuster dans SEO & URL, en 1.7 c'est dans Paramètres de la boutique / Traffic et SEO.
      Pas besoin de coder quoique ce soit

      posté dans Discussion générale
      doekia
    • RE: les routes sur mesures

      Je ne suis pas sûr d'avoir exactement compris le use case.

      Je note néanmoins que le nouveau controlleur s'appelle FormocontactContactController mais que la route stipule controller "contact", comment le Dispatcher sait qu'il doit lancer FormocontactContact ?

      Mais je persiste je n'ai pas compris l'objectif

      posté dans Discussion générale
      doekia
    • RE: Des modules et des hacks - liste non exhaustive des modules présentant un risque

      Encore une serie:
      /modules/wdoptionpanel/wdoptionpanel_ajax.php
      /modules/wg24themeadministration/wg24_ajax.php

      posté dans Discussion générale
      doekia
    • RE: Des modules et des hacks - liste non exhaustive des modules présentant un risque

      De nouveaux arrivants dans le "game":
      /modules/marketplace/libs/filemanager/dialog.php
      /modules/ec_import/upload.php

      posté dans Discussion générale
      doekia
    • RE: Des modules et des hacks - liste non exhaustive des modules présentant un risque

      @mediacom87
      Comme spécifier en début de topic:
      "Si vous possédez l'un de ces modules et ne savez pas si votre version est corrigé, supprimez le immédiatement. Ne le renommez pas, supprimez le. Peu importe qu'il soit activé ou non, supprimez le."

      posté dans Discussion générale
      doekia
    • Patch de sécurité thèmes warehouse / iqit (Versions 1.5 & 1.6)

      Comme certains l'on oublié ou perdu ...
      C'est ici https://bb.enter-solutions.net/uploads/files/security%20hotfix%20-%20important.zip

      posté dans Discussion générale
      doekia
    • Créer un contrôleur front (indépendant)

      Il arrive de devoir créer un contrôleur front office pour y implémenter une logique particulière.
      Ici nous allons faire juste cela, totalement indépendant d'un module.

      pré-requis

      accès FTP
      notepad++
      5 minutes


      le contrôleur

      Nous allons créer le contrôleur. Nous pouvons le mettre directement dans le répertoire /controllers/front mais au cas où demain ne devions écraser notre prestashop, nous allons préférer le mettre dans /override/controllers/front. En plus de cette manière il est plus simple d'identifier à posteriori quel code a été ajouté.

      Nous devons impérativement dériver d'un FrontController, mais il est tout a fait possible de dériver un contrôleur qui en dérive. Supposons ici ContactController.
      /override/controllers/front/ContactControllerExtra.php

      <?php
      class ContactControllerExtra extends ContactController
      {
         public $php_self = 'contact-extra'; 
      }
      

      Vidons le cache (avec la gomme) ou supprimons le fichier /cache/class_index.php
      Oui c'est tout faire un contrôleur n'est pas compliqué. Mais bon soyons clair c'est pour l'instant une coquille vide.

      Avant d'aller plus loin nous allons le configurer coté back-office afin que nous puissions lui donner une belle url et un minimum de décence coté SEO.


      SEO & URL

      Dans le BO, rendons nous dans Préférences > SEO&URL
      Cliquer ajouter, et remplir

      • page: choisir contact-extra
      • titre: Contact étendu
      • description: Page de contact avancée
      • mots clé: vide
      • url: contact-avance

      Enregistrer

      Voila, vous pouvez/devez customiser les paramètres en fonction des langues afin qu'ils correspondent à vos besoins


      Le code utile

      Jusque maintenant nous n'avons qu'une coquille vide qui se contente de faire en tout point ce que fait le formulaire de contact. Écrivons un peu de code utile. Nous allons mettre en place un captcha très simple.
      Reprenons notre fichier contrôleur
      /override/controllers/front/ContactControllerExtra.php

      <?php
      class ContactControllerExtra extends ContactController
      {
         public $php_self = 'contact-extra'; 
      
        private function trivial_captcha() { return (int)($this->context->cookie->id_guest); }
      
        public function postProcess() {
          if (Tools::isSubmit('submitMessage')) {
            $captcha = Tools::getValue('captcha',0);
            if (!$captcha || $captcha != $this->trivial_captcha()) {
              $this->errors[] = Tools::displayError('Invalid captcha.');
              return;
            }
          }
          return parent::postProcess();
        }
      }
      

      Nous venons de créer un contrôle lors de la réception du formulaire et de vérifier que ce formulaire contient un captcha et que celui-ci est valide.

      Si nous essayons notre contrôleur maintenant nous obtenons systématiquement une erreur "Invalid captcha" lors de l'envoi du formulaire.


      la vue

      Nous devons bien sûr construire un template permettant la saisie du captcha. Pour cela nous allons "bêtement" copier le template normal, puis nous ajouterons notre code à l'intérieur

      Copions /themes/<votre-theme>/contact-form.tpl => /themes/<votre-theme>/contact-form-extra.tpl
      Éditons maintenant ce fichier et identifions où mettre notre code

                                      <div class="col-xs-12 col-md-9">
                                              <div class="form-group">
                                                      <label for="message">{l s='Message'}</label>
                                                      <textarea class="form-control" id="message" name="message">{if isset($message)}{$message|escape:'html':'UTF-8'|stripslashes}{/if}</textarea>
                                              </div>
      
                                              {* ***** Nous allons mettre notre code ICI ***** *}
                                                                           
                                              {hook h='displayGDPRConsent' moduleName='contactform'}
                                       </div>
                              </div>
                              <div class="submit">
                                      <input type="text" name="url" value="" class="hidden" />
                                      <input type="hidden" name="contactKey" value="{$contactKey}" />
                                      <button type="submit" name="submitMessage" id="submitMessage" class="button btn btn-default button-medium"><span>{l s='Send'}<i class="icon-chevron-right right"></i></span></button>
                              </div>
      

      Voici le code à mettre:

      <div class="form-group">
         <label for="captcha">{l s='Captcha'}</label>
         <input name="captcha" type="text" />
         <span class="captcha-help">{l s='Please enter this number in the captcha field'}: {$captval}</span>
      
      </div>
      

      Pour l'instant cette étape ne change rien.
      En effet nous devons maintenant câbler la vue pour que le contrôleur l'appelle.


      On air

      Enfin la dernière étape.
      Nous devons simplement appeler notre vue (le template) et nous aurons un contrôleur complet.

      Revenons dans le contrôleur.
      /override/controllers/front/ContactControllerExtra.php

      <?php
      class ContactControllerExtra extends ContactController
      {
         public $php_self = 'contact-extra'; 
      
        private function trivial_captcha() { return (int)($this->context->cookie->id_guest); }
      
        public function postProcess() {
          if (Tools::isSubmit('submitMessage')) {
            $captcha = Tools::getValue('captcha',0);
            if (!$captcha || $captcha != $this->trivial_captcha()) {
              $this->errors[] = Tools::displayError('Invalid captcha.');
              return;
            }
          }
          return parent::postProcess();
        }
        public function initContent() {
          parent::initContent();
          $this->context->smarty->assign(array(
             'captval' => $this->trivial_captcha(),
          ));
         $this->setTemplate(_PS_THEME_DIR_.'contact-form-extra.tpl');
        }
      }
      

      Il ne vous reste plus qu'a faire quelques réglages css, les traductions et vous avez terminé.

      Bien joué

      posté dans Tutoriels
      doekia
    • RE: Fourre-tout de trucs et astuces

      @Thierry
      Bien sûr, sans aucun problème. N'oublie pas d'enlever aussi le </IfModule> du premier snippet

      posté dans Tutoriels
      doekia
    • Fourre-tout de trucs et astuces

      J'ai mis à dispositions de nombreux petits snippets qui peuvent servir.
      C'est ici: https://area51.enter-solutions.com/snippets
      Ci-dessous un petit inventaire (incomplet):


      .htaccess (sauf indication contraire, avant le code prestashop)
      • forcer de manière saine le HSTS: https://area51.enter-solutions.com/snippets/100
      • redirection produit après suppression link-rewrite catégorie SEO&URL: https://area51.enter-solutions.com/snippets/44
      • redirection après suppression multi-langue: https://area51.enter-solutions.com/snippets/45
      • redirection url historiques après migration anciennes versions: https://area51.enter-solutions.com/snippets/48

      Sécurité
      • générer les index.php manquant: https://area51.enter-solutions.com/snippets/21
      • Rafraîchir et distribuer les signatures de virus pour clamav: https://area51.enter-solutions.com/snippets/71
      • Filtre fail2ban spécialisé anti-hack PrestaShop: https://area51.enter-solutions.com/snippets/81
      • Filtrage des noeuds TOR avec ipset et iptable: https://area51.enter-solutions.com/snippets/76
      • Mise en place recaptchav2 pour Presatshop: https://area51.enter-solutions.com/snippets/74
      • Bookmarklet pour vérifier l'implémentation du recaptcha: https://area51.enter-solutions.com/snippets/74

      Divers
      • Corriger le SSL d'OVH (déconnexion BO): https://area51.enter-solutions.com/snippets/98
      • Vérifier le support TLS1.2 du serveur: https://area51.enter-solutions.com/snippets/99
      • Générer les meta absentes après migrations: https://area51.enter-solutions.com/snippets/79
      • Description catégorie en HTML avec "voir plus" (pur CSS): https://area51.enter-solutions.com/snippets/73
      • Une page maintenance quand tout doit être détruit: https://area51.enter-solutions.com/snippets/46
      • Outil de backup filesystem d'urgence (mod): https://area51.enter-solutions.com/snippets/94
      posté dans Tutoriels
      doekia