Astuce - Ouvrir une lightbox qui contient une view en page d'accueil

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à Tous,
voici une petit bout de code que je viens d'éditer,
il permet d'afficher le contenu d'une view dans un lightbox à l'ouverture de la page d'accueil.

tout d'abord,
- j'ai créé un type de contenu "popup"
- j'ai créé une view "popup", avec un bloc.
- j'ai dupliqué le fichier page.tpl.php en page-front.tpl.php et j'ai ajouté le contenu suivant sous le print $content

<?php      
     $requete
= db_query('SELECT type FROM node WHERE type = "popup"') OR die('Erreur de la requete MySQL'); 
    
$resultat = db_fetch_array($requete);
                        
     if (
$resultat != '')
     print
'<div id="lightboxAutoModal" style="display: none;" rel="lightmodal[|height: 200px;]">'.views_embed_view("popup", "block_1").'</div>';   
?>
         

je vous laisse le soin de l'ajuster à votre sauce.

Version de Drupal : 

mon site étant en 2 langues (merci i18n),
j'ai dû ajouter une condition, en gros, dans la bdd, je vais vérifier la langue.
Pourquoi,
bein, si vous publiez du contenu en prévoyant d'éditer une traduction plus tard, ça vous évitera d'avoir une lightbox vide qui s'ouvrira dans la l'autre langue.

<?php      
$requetefr
= db_query('SELECT type FROM node WHERE type = "popup" and language= "fr"') OR die('Erreur de la requete MySQL'); 
$resultatfr = db_fetch_array($requetefr);
$requeteen = db_query('SELECT type FROM node WHERE type = "popup" and language= "en"') OR die('Erreur de la requete MySQL'); 
$resultaten = db_fetch_array($requeteen);
global
$language;
                     
   if (
$language->language == "fr") {                
        if (
$resultatfr != '')
  print
'<div id="lightboxAutoModal" style="display: none;" rel="lightmodal">'.views_embed_view("popup", "block_1").'</div>';  
   }
   else if (
$language->language == "en") {
 if (
$resultaten != '')
   print
'<div id="lightboxAutoModal" style="display: none;" rel="lightmodal">'.views_embed_view("popup", "block_1").'</div>';  
?>
    

Pour information,
que ce soit pour ce code ou le précédent,
il faudra constamment supprimer le contenu (popup) une fois qu'il sera jugé obsolète pour que la lightbox ne s'ouvre plus.

en espérant que ça aidera certains !