Un client désirait insérer un système de pop-up dans la page cms de Prestashop
Je ne voulais pas installer un n-ième module pour faire simplement cela ni insérer un autre script/bibliothèque que ceux inclus dans Prestashop.
Cette astuce Prestashop est valable pour la version 1.6
Voilà l’astuce.
————
1) Ouvrir un ficher qui se nommera Validate.php, insérer le code suivant puis enregistrer le dans override/classes/Validate.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php class Validate extends ValidateCore { public static function isCleanHtml($html, $allow_iframe = false) { /*if (preg_match('/<[\s]*script/ims', $html) || preg_match('/('.$events.')[\s]*=/ims', $html) || preg_match('/.*script\:/ims', $html)) return false; if (!$allow_iframe && preg_match('/<[\s]*(i?frame|form|input|embed|object)/ims', $html)) return false; */ return true; } } |
————
2) Ouvrir un ficher qui se nommera FrontController.php, insérer le code suivant puis enregistrer le dans override/classes/controller/FrontController.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php class FrontController extends FrontControllerCore { public function setMedia() { parent::setMedia(); // Execute Hook FrontController SetMedia $this->addjqueryPlugin('fancybox'); $this->addCSS(_PS_CSS_DIR_.'jquery.fancybox-1.3.4.css', 'all'); // @TODO Hook::exec('actionFrontControllerSetMedia', array()); } } ?> |
————
3) Dans le dossier fichier footer.tpl situé dans montheme/footer.tpl rajouter avant la balise :
1 2 3 |
<script> $('a.iframe').fancybox(); </script> |
————
4) Dans le back-office / Préfence / cms :
1 |
<a class="iframe" href="votrelien?content_only=1">Nom de votre lien</a> |
A noter : ?content_only=1 permet de ne pas avoir le footer et le header dans la fenêtre popup.
Bonjour,
Merci pour cette astuce, fort utile.
Pour mon site en version Prestashop 1.6.1.3, je rencontre toutefois un problème, par ex les CGV ne s’affichent pas dans un popup mais en pleine page. J’ai résolu cette difficulté en remplaçant :
$(‘a.iframe’).fancybox();
Par :
$(document).ready(function() {
$(‘a.iframe’).fancybox({
‘type’ : ‘iframe’,
‘width’:680,
‘height’:700
});
});
Par ailleurs, j’aimerais savoir à quoi sert l’ajout dans l’override/classes de Validate.php
Si je ne l’ajoute pas, tout semble fonctionner quand même.
Cordialement
JF David
bonjour,
C’est exactement ce que je recherchais.
Par contre j’ai également rajouter le code de JF David mais le fenêtre ne s’ouvre toujours pas en pop up.
Merci
En fait il fallait tout simplement rajouter type= »text/javascript » pour que la balise soit prise en compte.
$(document).ready(function() {
$(‘a.iframe’).fancybox({
‘type’ : ‘iframe’,
‘width’:600,
‘height’:600
});
});
Merci
Bonjour,
Je souhaite insérer un lien qui ouvrira une fenêtre popup sur ma page panier, donc un lien à insérer donc mon fichier shopping-cart.tpl, j’ai donc créé le fichier validate.php que j’ai enregistré, pour le deuxième fichier à créer « frontControler.php, de mon côté il existe déjà… Que dois je faire svp?
Merci 🙂
Bonjour,
il me faudrait le code de l’override du fichier frontControler.php
Dans ce cas, il ne faut ajouter que »
public function setMedia()
{
parent::setMedia();
// Execute Hook FrontController SetMedia
$this->addjqueryPlugin(‘fancybox’);
$this->addCSS(_PS_CSS_DIR_.’jquery.fancybox.css’, ‘all’); // @TODO
Hook::exec(‘actionFrontControllerSetMedia’, array());
}
» juste après « class FrontController extends FrontControllerCore
{ »
Merci pour cette astuce!
Comme JF David, je n’ai pas modifié Validate.php et ça fonctionne à merveille. À quoi sert ce code ?
Merci encore!
Ok cela fonctionner merci ! Juste un petit souci pour afficher un formulaire mail chimp 🙂
salut,
http://www.reussir-mon-ecommerce.fr/2015/12/23/afficher-le-formulaire-de-mailchimp-dans-un-popup/
Tu peux regarder sur cette vidéo
Bonjour à tous,
J’ai pris en compte toutes vos remarques,
ça s’ouvre toujours dans une nouvelle page et non onglet 🙁
helppp 🙂
bouton : plus de détails
Bonjour,
Difficile de dire sans voir mais
1) vous n’avez pas nettoyé le cache de Prestashop (supprimant le ficher class_index.php qui se situe dans le dossier cache)
2) Votre thème ne permet pas de le faire
3) Le code n’est pas bon
Sinon vous avez ce module : http://www.store-opart.fr/p/4-opartajaxpopup.html