Wie binde ich eine Ansicht in einen Knoten ein?


7

In Drupal 6 kann eine Ansicht wie folgt in einen Knoten eingebettet werden:

$viewName = 'LatestNews';
print views_embed_view($viewName);

Dies funktioniert nicht für Drupal 7. Mit welcher Funktion können Ansichten in Drupal 7 eingebettet werden?


Gemäß dieser Dokumentation Link of Views-Modul ist diese Funktion in Drupal 6 und 7 gleichermaßen verfügbar. Versuchen Sie es mit dem zweiten Parameter als $ display_id Ihrer Ansicht.
Shoaib Nawaz

Antworten:




5

Um eine Ansicht in einer Knotenvorlage anzuzeigen, verwenden Sie den folgenden Code.

// Load the view. 
$view = views_get_view('machine_name_of_view');
// Set the active display.
$view->set_display('your_view_display_name');
// Set any needed argument.
$view->set_arguments(array(arg(0), arg(1)));
// Execute the view.
$view->execute();
// Render the view.
print $view->render();

1
Sie sollten immer $ view-> pre_execute () aufrufen. vor $ view-> execute ();
Teegan

@Teegan - Wusste nicht, dass die Verwendung von nur Ausführen zu funktionieren scheint, aber ich werde mich pre_execute()vorher mit der Verwendung befassen execute().
Cyclonecode

4

Warum nicht:

print views_embed_view($view_machine_name, $view_display_name, $arg1, $arg2);

Dabei sind $ arg, $ arg2 usw. optional.

Oder verwenden Sie das Viewfield- Modul, um eine Ansicht als Feld einzubetten.


VIEWFIELD !!!! OH MEIN GOTT!!! Ich habe tagelang nach dieser Funktionalität gesucht und viele Module ausprobiert, das spart mir! : D danke!
DrCord

@DrCord, siehe auch die Module Eva und views_field_view, sie sind so ziemlich dasselbe.
timofey.com

Ich konnte EVA nicht dazu bringen, das zu tun, was ich wollte.
DrCord

1

Eine Lösung besteht darin, Panelizer zu verwenden, um den Inhalt des jeweiligen Knotens zu überschreiben.

Nehmen wir zum Beispiel an, Sie haben eine Handvoll einmaliger Seiten, an die eine Ansicht angehängt werden muss.

1) Sie können den Seiteninhaltstyp verwenden oder einen neuen Inhaltstyp erstellen, der speziell angezeigt wird.

2) Aktivieren Sie Panelizer für diesen Inhaltstyp. Stellen Sie sicher, dass "Displayauswahl pro Datensatz zulassen" so eingestellt ist, dass Sie mehrere Panelizer-Anzeigen einrichten können, die auf jede einzelne Seite zugeschnitten sind. (An jedes Panelizer-Display können eigene Ansichten angehängt werden.)

3) Von hier aus erstellen Sie einfach eine Ansicht (ich verwende hierfür gerne Inhaltsfenster) und fügen sie der Panelizer-Inhaltsanzeige Ihrer Wahl hinzu.

Auf diese Weise können Sie einen einzelnen Inhaltstyp wiederverwenden, für den keine eigenen Felder erforderlich sind, der jedoch möglicherweise zum Verweisen auf andere Entitäten (als Feld) oder zum Verweisen auf Ansichten verwendet werden kann.

Wenn Sie das Absatzmodul eingeben, haben Sie einen Inhaltstyp für das Schweizer Taschenmesser. Apropos, das wäre ein perfekter Name für den benutzerdefinierten Inhaltstyp, der für diesen Zweck verwendet wird ... Hmm ....


0

Lassen Sie uns nur erwähnen, dass der erste Parameter der Ansichtsname und der zweite Anzeigename ist und Sie danach kontextbezogene Filterparameter übergeben können.

Damit "$ node-nid", der dritte Parameter, von Ihrer Ansicht abhängt ... was es für den ersten Kontextfilter erwartet - id muss nicht node id sein. Natürlich sind Sie nicht auf einen Parameter beschränkt - übergeben Sie so viele, wie Sie in der Ansicht haben ... oder übergeben Sie keine, wenn Ihre Ansicht keine Kontextfilter enthält.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.