web-dev-qa-db-fra.com

Afficher les nœuds de vue dans la lightbox?

Quelle serait la meilleure façon d'afficher les nœuds à partir d'une vue dans une lightbox, déclenchée par une seule image? L'idée serait qu'une belle photo soit montrée en première page. Lorsque les utilisateurs cliquent dessus, une vue est ouverte dans une boîte lightbox/thickbox/colorbox/*. Cela montre alors tous les nœuds de la vue.

Je parviens actuellement à le faire uniquement pour les images avec colorbox, mais ce n'est pas suffisant car je voudrais montrer les légendes, etc. Je voudrais utiliser la fonctionnalité complète de colorbox, plutôt que juste l'image. J'ai essayé d'utiliser un iframe, mais cela signifiait que chaque nœud est affiché avec le thème complet du site (en-tête, logo, pied de page, etc.), ce qui n'est pas ce que je veux faire.

7
Bart Braem

J'ai géré mon projet en utilisant un modèle de page personnalisé et un paramètre get supplémentaire.

Template.php: (dans le répertoire du thème actif)

function phptemplate_preprocess_page(&$vars){
    if( isset($_GET['ajax']) && $_GET['ajax']=='true' ){
        $vars['template_files'][] = 'page-overajax'; # For Drupal 6
        $vars['theme_hook_suggestions'][] = 'page-overajax'; # For Drupal 7
    }
}

J'ai ensuite créé un fichier modèle (page-overajax.tpl.php) dans le répertoire du thème avec le contenu suivant:

<div id="overlay-content-wrapper">
   <?php print $content; ?>
</div>

Après cela (effacer tous les caches), vous pouvez utiliser n'importe quel chemin (page, vue, nœud) avec ?ajax=true à passer dans votre * boîte à charger si elle prend en charge le contenu AJAX.

Comme avec fancybox:

$("a.overajax").fancybox({
    'width': 400,
    'height': 400,
    ajax: {
        type     : "GET",
        cache    : false,
        url      : "user/user-posts?ajax=true",
        success: function(data) {
              $.fancybox(data);
        }
    }
});
7
Shoaib Nawaz

Vous pouvez utiliser le module Colorbox Node :

Donne à l'utilisateur la possibilité d'afficher N'IMPORTE QUELLE page à l'intérieur d'un modal colorbox sans l'en-tête et le pied de page.

Votre lien devrait ressembler à ceci: href = "blogs/mon-exemple? Width = 600 & height = 600"

2
milkovsky

Pour D7, j'ai dû suivre des conventions de dénomination plus strictes que dans la réponse de Shuaib Nawaz. Mon code ressemble à ceci:

function my_theme_preprocess_page(&$variables, $hook){
    if( isset($_GET['ajax']) && $_GET['ajax']=='true' ){
        $variables['theme_hook_suggestions'][] = 'page__ajax'; 
        // then use page--ajax.tpl.php for page template file.
    }
}

Peut-être que OP peut ajouter ceci aux commentaires sur la réponse acceptée, mon score est trop faible.

0
ryrye

Avez-vous essayé le module nœud Colorbox ? Je pense que c'est exactement ce dont vous avez besoin;)

0
user19544