Ansichtsknoten im Leuchtkasten anzeigen?

7

Was wäre der beste Weg, um die Knoten aus einer Ansicht in einem Leuchtkasten anzuzeigen, der durch ein einzelnes Bild ausgelöst wird? Die Idee wäre, dass ein schönes Foto auf einer Titelseite gezeigt wird. Wenn Benutzer darauf klicken, wird eine Ansicht in einer Lightbox / Thickbox / Colorbox / * Box geöffnet. Dies zeigt dann alle Knoten in der Ansicht.

Ich schaffe dies derzeit nur für Bilder mit Colorbox, aber das reicht nicht aus, da ich Untertitel usw. anzeigen möchte. Ich möchte die volle Colorbox-Funktionalität verwenden und nicht nur das Bild. Ich habe versucht, einen Iframe zu verwenden. Dies bedeutet jedoch, dass jeder Knoten mit dem vollständigen Site-Thema (Kopfzeile, Logo, Fußzeile usw.) angezeigt wird, was ich nicht tun möchte.

Bart Braem
quelle

Antworten:

7

Ich habe in meinem Projekt eine benutzerdefinierte Seitenvorlage und einen zusätzlichen get-Parameter verwendet.

Template.php: (Im aktiven Themenverzeichnis)

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
    }
}

Ich habe dann eine Vorlagendatei (page-overajax.tpl.php) im Themenverzeichnis mit folgendem Inhalt erstellt:

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

Danach (Alle Caches löschen) können Sie einen beliebigen Pfad (Seite, Ansicht, Knoten) verwenden ?ajax=true, um ihn zum Laden an Ihre * Box zu übergeben, wenn AJAX-Inhalte unterstützt werden.

Wie bei Fancybox:

$("a.overajax").fancybox({
    'width': 400,
    'height': 400,
    ajax: {
        type     : "GET",
        cache    : false,
        url      : "user/user-posts?ajax=true",
        success: function(data) {
              $.fancybox(data);
        }
    }
});
Shoaib Nawaz
quelle
1
Könnte es sein, dass dieser Vorschlag nur für Drupal 6 funktioniert? Der Schlüssel template_files scheint in Drupal 7 veraltet zu sein.
Bart Braem
Sie haben Recht :)
Shoaib Nawaz
2

Sie können das Colorbox Node- Modul verwenden:

Bietet dem Benutzer die Möglichkeit, JEDE Seite in einem Colorbox-Modal ohne Kopf- und Fußzeile anzuzeigen.

Ihr Link sollte folgendermaßen aussehen: href = "Blogs / mein Beispiel? Breite = 600 & Höhe = 600"

melkowski
quelle
0

Für D7 musste ich strengere Namenskonventionen befolgen als in Shuaib Nawaz 'Antwort. Mein Code sieht folgendermaßen aus:

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.
    }
}

Vielleicht kann OP dies zu den Kommentaren zur akzeptierten Antwort hinzufügen, meine Punktzahl ist zu niedrig.

Ryrye
quelle