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?
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?
Antworten:
In Drupal 7 können Sie diesen Code verwenden.
Für eine Ansichtsseite
print views_embed_view('name_of_view','page_1', $node->nid);
Für einen Ansichtsblock
print views_embed_view('faculty_core','block_1', $node->nid);
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();
pre_execute()
vorher mit der Verwendung befassen execute()
.
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.
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 ....
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.
Ein sehr konfigurierbares Drupal 7- und 8-Modul ist views_field_formatter , mit dem Sie eine Ansicht als Feldformatierer einbetten können