Jump to content

Ouverture iframe thickbox dans une page CMS (comme le popup CGV)


Recommended Posts

Bonjour à tous,

Je souhaite avoir la possibilité dans une page CMS d'ouvrir un popup qui appel une autre page CMS.

Par exemple : j'ai un image dans une page cms, et quand on clique dessus je voudrais qu'un popup s'ouvre et affiche le contenu d'une autre page cms, comme pour les CGV de l'étape 4 du tunnel de commande.

Quelqu'un a t'il une solution?

Merci d'avance pour votre aide.

Quentin

Link to comment
Share on other sites

  • 6 months later...
  • 2 months later...

Commencez par lire le post suivant : solution avec override

 

C'est parti je vais essayer de tout expliquer correctement.

Faudra tester pour voir si ca marche.

 

Pré-requis un presta >1.4 car la fancybox a remplacée thickbox et le systeme de page cms est différent.

 

Problème : la modification de fichier php qu'on ne peut pas overrider (donc attention aux mises à jour !)

 

Etape 1 :

Problématique : le soucis des pages cms c'est qu'elles ne chargent ni le fichier *.js de la fancybox ni le fichier *.css il faut donc modifier le fichier modules--> blockcms --> blockcms.php .

 

Vers la ligne 755, l'avant dernière fonction appelée il faut y rajouter les appels qui manquent ; la fonction va s'écrire :

 

Etape 2 :

Ensuite il faut ajouter dans votre page cms un lien avec la bonne classe pour que cela déclenche la fancybox.

 

Donc dans votre page cms (via le BO) il faut écrire le lien comme cela en passant par l'éditeur html (c'est plus fiable) :

<a class="iframe" href="/content/3-conditions-generales-de-ventes?content_only=1">(lire)</a>

 

Ce qui est important c'est le class="iframe".

 

Etape 3 :

On pourrait croire que c'est fini mais malheureusement non !

 

Il faut relier la class au jquery. Pour cela il faut modifier dans votre thème le fichier cms.tpl . Vers la aligne 43 il faut rajouter l'appel javascript :

<div class="rte{if $content_only} content_only{/if}">
{$cms->content}
<script type="text/javascript">$('a.iframe').fancybox();</script>
</div>

 

Etape 4 :

Une fois cela fait dans BO --> préférences --> performances il faut :

- forcer la compilation

- désactiver le cache

- dans CCC il faut conserver le fonctionnement classique pour : "Smart cache" pour le code JavaScript

- dans CCC conserver le fonctionnement classique pour : Compression du JavaScript dans le code HTML

 

Apres sur votre ftp : vider les fichiers *js dans le dossier theme --> Montheme --> cache

 

Et normalement tout devrait marcher --> charger a ce moment la votre page cms (vous n'aurez pas a le refaire pour de nouvelles pages)

 

Vous pouvez ensuite reactiver dans BO --> préférences --> performances

 

 

 

J'espère que ce sera utile meme si ca parait pas tres propre. (en particulier pour le fichier php) et que l'effet espéré sera là !

Link to comment
Share on other sites

Grace a pasta.pesto (voir : ici) changement pour l'appel de la css et du js

 

Etape 1 : complétement modifiée (merci pasta.pesto)

 

Sur le ftp dans override/controllers créez un fichier nommé CMSController.php avec le code suivant :

 

<?php
class CmsController extends CmsControllerCore
{
public function setMedia()
{
parent::setMedia();
Tools::addCSS(_PS_CSS_DIR_.'jquery.fancybox-1.3.4.css', 'screen');
Tools::addJS(array(
_PS_JS_DIR_.'jquery/jquery.fancybox-1.3.4.js',
_PS_JS_DIR_.'jquery/jquery.serialScroll-1.2.2-min.js',
_THEME_JS_DIR_.'product.js'));
if (Configuration::get('PS_DISPLAY_JQZOOM') == 1)
{
Tools::addCSS(_PS_CSS_DIR_.'jqzoom.css', 'screen');
Tools::addJS(_PS_JS_DIR_.'jquery/jquery.jqzoom.js');
}
}
}
?>

 

Etape 2 : voir post précédent pour les liens textes (comme pour les cgv dans le processus de commande)

Pour ajouter l'effet sur les images écrire le code comme ceci :

<a href="url de la grande image" rel="other-views" class="thickbox">
<img src="url de la petite image" />
</a>

 

Etape 3&4 : pas de changements

 

Voilà c'est beaucoup plus propre :) enjoy

Link to comment
Share on other sites

  • 7 months later...
  • 5 months later...
  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...