Mehrere Views auf einer Seite

Manchmal kann es nützlich sein, mehrere Views auf einer Seite zu haben. Ein mögliches Szenario dafür könnte sein:

  • Eine Newsseite mit verschiedenen Typen von Artikel. Die Artikel sollen jetzt nicht einfach "durcheinander" aufgelistet werden, sondern gruppiert nach Typ.

Das Vorgehen dafür ist eigetlich ganz einfach:

  1. Die Views machen.
  2. Eine neue Page erstellen.
  3. In dieser Page die Views einfügen.
  4. Nicht vergessen den Filter auf PHP zu stellen. That's it.

Hier also der Code dafür:

<?php

$view_name
= 'list_all_games'; //Name der Views
$view = views_get_view($view_name);
   
$myview_args = array();
print
views_build_view('embed', $view, $myview_args, false, 4);
?>

Die wichtige Zeile ist eigentlich views_build_view(). Argument 4 ist ob ein Pager auf der Seite angezeigt werden soll und Argument 5 ist die Anzahl an Nodes, welche aufgelistet werden sollen.

Über $myview_args können zusätzlich Argumente an die Views übergeben werden. Diese können dann über Views ausgewertet werden. Das wäre es dann eigentlich auch schon. Es können jetzt nach dem gleichen Prinzip beliebig viele Views hinzufgefügt werden. Ich glaube es gibt auch ein Modul dazu, aber über das embeded lässt sich das sehr gut lösen. Zudem kann dadurch die Anzahl an Modulen reduziert zu werden.

Hier noch der Link zur offiziellen Views Doku.

Das geht noch ein wenig

Das geht noch ein wenig einfacher (in einer Zeile), denn die Funktion theme_view bündelt die gleichen Schritte schon:

print theme_view($view_name, 4, false, 'embed', $myview_args);

Hallo Rapsli, so ganz versthe

Hallo Rapsli,

so ganz versthe ich es noch nicht...
wenn Du sagst
Nicht vergessen den Filter auf PHP zu stellen.
Meinst Du dann unter 'Einstellungen - Eingabeformate'?
Aber ich möchte eigentlich nicht, dass andere User php eingeben können, nur der admin... aber auch als ich php zugelassen habe, wurde mir der php-Code angezeigt anstatt ihn zu interpretieren.
Da stehe ich leider irgendwie auf dem Schlauch.
hast Du noch einen Tipp??

Danke,
Poko

Es gibt einen PHP Filter,

Es gibt einen PHP Filter, welcher

<?php

?>
in leserlichen Code umwandelt und dann gibt es noch einen PHP Execute Filter (der muss in den Modulen speziell aktiviert sein). Den meine ich. Damit lässt sich dann code ausführen.

-> Hier in diesem Kommentar ist der Filter aktiv, welcher PHP Code leserlich macht, aber nicht ausführt.

Da es mich am vergangenen

Da es mich am vergangenen Wochenende viel Zeit gekostet hat, hier die Version für Drupal 6, Views in eine Seite einzubinden:

<?php
views_embed_view
("view_name","block_1", $arg);
?>

block_1 ... ist die Variante des Views (statt "block" auch "page",... möglich)
Die benötigte Nummer gibts in der Statusleiste des Browsers. Einfach die Maus auf eine Viewvariante schieben.

Und hier kommt das Wissen her:
Embed View without insert_view module

(manchmal lohnt sich der Blick ins Handbuch eben doch...)

Hi Rapsli, ich find deine

Hi Rapsli,

ich find deine Seite und der Versuch eine "Anleitung" sehr nett, allerdings fühl ich mich sehr schnell abgehängt ...

1. Die Views machen. - kein Thema
2. Eine neue Page erstellen. - Was für eine Page? Einen neuen Inhaltstyp? Was genau ist gemeint?
3. In dieser Page die Views einfügen. - Wie? Nehm ich den Inhaltstyp und leg eine *.php an?
4. Nicht vergessen den Filter auf PHP zu stellen. That's it. - Wo? In der View?

Gruß, ein Drupler

Hallo Drupler Hier ein paar

Hallo Drupler

Hier ein paar Erklärungen:
2. Ja. Das kann einfach eine normale Seite sein. Inhaltstype "page" zum Beispiel. Dort gibt es ein Body Feld. Zudem muss der PHP Filter aktiviert sein und der Benutzer muss die Berechtigung haben.

3. Eben so wie im Codeschnippsel.

Hoffe, das hilft weiter

Eine Newsseite mit

Eine Newsseite mit verschiedenen Typen von Artikel. Die Artikel sollen jetzt nicht einfach "durcheinander" aufgelistet werden, sondern gruppiert nach Typ.

Könnte man auch ohne PHP-Eingriff lösen:

Als erstes erstellt man eine Ansicht und gibt als Feld "Node-Typ" mit an, schließt ihn aber von der Anzeige aus.
Dann sucht man sich alle Felder aus, die angezeigt werden sollen (eigl. klar) Man könnte z.B. den Nodetitel nehmen.
Um das ganze jetzt nach Typ zu sortieren, klickt man unter Design: Tabelle (kann auch Grid etc. sein) das kleine Rädchen an und wählt und "Gruppierungsfeld" Node-Typ aus.

hth und kann einige Arbeit ersparen ;)

Alex