Jump to content

Christophe Boix

Members
  • Posts

    232
  • Joined

  • Last visited

About Christophe Boix

  • Birthday 07/25/1984

Profile Information

  • Location
    HuaHin - Thailand
  • Activity
    Freelancer

Recent Profile Visitors

5,460,570 profile views

Christophe Boix's Achievements

Newbie

Newbie (1/14)

15

Reputation

  1. Bonjour, pour replier le texte, on peut par exemple créer deux boutons, l'un sera masqué, l'autre sera affiché, et on inverse la class hidden au clic. Replacer : <a href="#" onclick="$('#category_description_short').hide(); $('#category_description_full').show(); $(this).hide(); return false;" class="lnk_more">{l s='More'}</a> par : <a href="#" onclick="$('#category_description_short').show();$('.voir_plus').addClass('hidden');$('.voir_moins').removeClass('hidden');return false;" class="lnk_more voir_plus">{l s='Voir plus'}</a> <a href="#" onclick="$('#category_description_short').hide();$('.voir_plus').removeClass('hidden');$('.voir_moins').addClass('hidden');" class="lnk_more voir_moins hidden">{l s='Voir moins'}</a> PS: en effet c'est mieux de mettre une balise "div" au lieu d'une balise "p" pour afficher la description.
  2. Bonjour, Et donc parce que je ne suis pas l'auteur du "code original", je ne peux pas partager une solution facile à mettre en place ? Comme je disais dans mon post, je partage juste la marche à suivre pour que le soucis de spam soit réglé en 5 minutes. Moi ce que je trouve honteux, ce sont les gens qui vendent ce genre de prestation, donc si ce post peut permettre à des gens de fixer leur problème facilement, tant mieux.
  3. Bonjour, Ces jours ci, plusieurs clients m'ont demandé de sécuriser leurs formulaires de contacts, et il parait que certains font des devis énormes pour ajouter un simple captcha.. Je partage la marche à suivre que j'ai trouvé sur d'autres forums, je ne suis pas l'auteur de ce code, je l'ai juste un peu personnalisé. En espérant que cela puisse aider le max de personnes. Peut etre que je ferais un module à l'occasion, mais pas le temps en ce moment. 1/ Inscrivez votre site sur : https://www.google.com/recaptcha/admin Choisissez reCAPTCHA V2 (le 1er choix), puis saisissez votre nom de domaine ( 1 site par ligne) Vous aurez ensuite la "clé public" ou "clé du site" (à placer dans le header de votre theme) et la clé secrète (à placer côté serveur, dans le ContactController.php) 2/ Créez ou modifier ce fichier : /override/controller/ContactController.php afin de modifier la fonction postProcess, comme ci-dessous. N'oubliez pas de modifier le $secret_key <?php /* * 2007-2015 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/osl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to [email protected] so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <[email protected]> * @copyright 2007-2015 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ class ContactController extends ContactControllerCore { public function postProcess() { if (Tools::isSubmit('submitMessage')) { $secret_key="YOUR SECRET KEY"; /* TODO: tune this https://www.google.com/recaptcha/admin */ $human=1; if (empty($_REQUEST['g-recaptcha-response'])){ sleep(25); die('not human'); $human=0; } $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => http_build_query( array( 'secret' => $secret_key, /* TODO: tune this https://www.google.com/recaptcha/admin */ 'response' => $_REQUEST['g-recaptcha-response'], ) ), ), ); $stream = stream_context_create($opts); $captcha = @json_decode(file_get_contents('https://www.google.com/recaptcha/api/siteverify', false, $stream), true); if (empty($captcha) || empty($captcha['success']) || !$captcha['success']){ sleep(25); // die('not human'.PHP_EOL.print_r($captcha,1)); die('not human'); $human=0; } if($human==1){ parent::postProcess(); } } } } 3/ Modifier votre fichier header.tpl dans votre theme, en rajoutant simplement juste avant le </head>, et en modifiant la variable de la key "YOUR-PUBLIC-KEY" . Pour la 1.7, il faut aller dans le theme puis layout, puis modifier layout-both-columns.tpl . {if $page_name=="contact"} {literal} <script> var googlecaptchasitekey = 'YOUR-PUBLIC-KEY'; /* TODO: tune this https://www.google.com/recaptcha/admin */ $(document).ready(function(){ var $forms = $('form.contact-form-box'); if ($forms.length > 0){ var captcha = $('<div class="g-recaptcha" data-sitekey="'+ googlecaptchasitekey + '">'); var $submit = $forms.find('#submitMessage'); $submit.before(captcha); $submit.click(function(event){ if ($forms.find('#g-recaptcha-response').val().length == 0) { event.preventDefault(); event.stopPropagation(); return false; } }); } }); </script> <script src='https://www.google.com/recaptcha/api.js?hl={$language_code}'></script> {/literal} {/if} Si votre formulaire de contact n'a pas la class="contact-form-box", alors il faudra adapter mon code. Attention pour la 1.7, le page_name est différent. Il faut marquer : {if $page.page_name=="contact"} ... {/if} Voilà c'est tout, votre formulaire devrait être sécurisé, si vous avez bien renseigné les 2 clés. Il doit surement exister d'autres techniques. Je partage juste ma méthode en espérant pouvoir aider. ContactController.php
  4. Essayez avec ce code css, à mettre dans product_list.css (ou ailleurs, peu importe) : @media (max-width: 767px) { .product-description .hidden-xs {display: block; } .product-description .hidden-sm {display: block; } .product-description .hidden-md {display: none; } .product-description .hidden-lg {display: none; } } @media (min-width: 768px) { .product-description .hidden-xs {display: none; } .product-description .hidden-sm {display: none; } .product-description .hidden-md {display: block; } .product-description .hidden-lg {display: block; } }
  5. Bonjour, Il faut regarder du côté de /classes/PaymentModule.php (en faisant un override c'est mieux) Rechercher order_conf.html puis un peu au dessus, vous verrez les variables générées pour cet email, il suffit de rajouter le $order->order_message dans les variables du mail.
  6. Bonjour, Je pense qu'il suffit de déplacer le hook_left_column dans le header.tpl vers le footer.tpl, après la fermeture de la div center_column
  7. Bonjour, dans la page de commande, si vous inspectez la div avec la liste des autres modules de paiements, voyez-vous le module stripe queqlue part dans le code html ? Il est peut etre juste masqué ou peut être un autre probleme de css ? (sinon control+U sur la page de paiement, puis recherchez "stripe")
  8. Bonjour, Le texte de la couleur se trouve dans la class="sr-only" (dans la div class="product-variants"), du fichier product.tpl Il suffit de changer le CSS de cette classe
  9. Bonjour, je vous conseilles "notepad++" pour l'éditeur de fichier Sur Firefox, faites un clic droit pour "inspecter" un élément et récupérer la classe ou l' id à rechercher. Dans le fichier TPL, faites ensuite un "Control+F" pour rechercher l' ID ou la classe.
  10. Bonjour, voici le complément de la solution incomplète proposée ci-dessus <span class="h3 product-title block" itemprop="name"> <a href="{$product.url}"> <span class="hidden-xs hidden-sm">{$product.name|truncate:30:'...'}</span> <span class="hidden-md hidden-lg">{$product.name|truncate:20:'...'}</span> </a> </span> Explication : le SPAN avec les classes suivantes sera masqué sur que les petits écrans : hidden-xs hidden-sm le SPAN avec les classes suivantes sera masqué que sur les plus gros érans : hidden-md hidden-lg Vous pouvez déplacer le hidden-sm dans le 2emes span si besoin. En espérant avoir pu vous aider
  11. Bonjour, Lorsqu'on choisit un paiement par paypal, on est redirigé sur le site Paypal et parfois Paypal change la langue selon le pays où l'on se trouve. Par exemple, mon client est à HongKong, il a un site seulement en anglais, et souhaites que Paypal soit en anglais. Hélas, parfois la langue est le chinois. Pour forcer l'anglais, il suffit de modifier ce fichier : /PLANTINKAVIARI.HK/modules/paypal/express_checkout/payment.php Et rajouter ces lignes en début de fichiers (voir ci-dessous), avant ou apres les premiers include_once. Il doit exister d'autres solutions, je partageais juste ce que j'ai trouvé, peut être que cela permettra d'aider d'autres personnes dans le meme cas. (PS : pour l'anglais, c'est 'en' au lieu de 'fr' et 'en_EN' au lieu de 'fr_FR') $_POST['lc']='fr'; $_POST['country.x']='fr'; $_POST['locale.x']='fr_FR'; $_POST['localecode']='fr_FR';
  12. Hi, my customer have website based in Hong-Kong, but only using english langage. When people want to order with Paypal, Paypal was in Chinese. I not find how to fix this problem on the forum, i share my solution, but others solutions may exists for fix this problem. Here is a simple tips for change the langage of the Paypal payment page : Open : /PLANTINKAVIARI.HK/modules/paypal/express_checkout/payment.php And simple adding this lines, for forcing english langage on Paypal page. You can copy this where you want near the start of page. For exemple, before the first include_once. $_POST['lc']='en'; $_POST['country.x']='en'; $_POST['locale.x']='en_US'; $_POST['localecode']='en_US';
  13. Bonjour, puis-je voir le contenu des 2 fichiers modifiés svp ? Merci
  14. Bonjour, Il faut créer un override de indexcontroller.php Ensuite dans ce fichier, voici un exemple pour générer des produits selon un ID de catégorie : class IndexController extends IndexControllerCore { public function init() { parent::init(); $id_category=2; $this->home_category = new Category($id_category, $this->context->language->id); $this->nbProducts = $this->home_category->getProducts(null, null, null, $this->orderBy, $this->orderWay, true); $this->pagination((int)$this->nbProducts); // Pagination must be call after "getProducts" $this->cat_products = $this->home_category->getProducts($this->context->language->id, (int)$this->p, (int)$this->n, $this->orderBy, $this->orderWay); $this->context->smarty->assign(array( 'HOOK_HOME' => Hook::exec('displayHome'), 'HOOK_HOME_TAB' => Hook::exec('displayHomeTab'), 'HOOK_HOME_TAB_CONTENT' => Hook::exec('displayHomeTabContent'), 'nb_products' => $this->nbProducts, 'products'=> $this->cat_products )); } } Bon courage
  15. Bonjour, dans order-detail.tpl , il devrait y avoir une simple ligne pour le transporteur : {if $carrier->id} <div class="info-order box"> <p>{l s='Carrier'} : <strong>{$carrier->name|escape:'html':'UTF-8'}</strong></p> <p>{l s='Payment method'} : <strong>{$order->payment}</strong></p> (...) </div> {/if} mais on dirait que dans votre theme, il y a un foreach. Peut etre qu'en mettant simplement ma ligne (en rouge), ça résoudra le probleme. Pouvez-vous me copier/coller le code ou le fichier order-detail svp ?
×
×
  • Create New...