web-dev-qa-db-fra.com

Comment intégrer une vue à l'intérieur d'un nœud?

Dans Drupal 6 une vue peut être incorporée dans un nœud comme suit:

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

Cela ne fonctionne pas pour drupal 7. Quelle est la fonction pour intégrer des vues dans drupal 7?

7
Natkeeran

Dans Drupal 7, vous pouvez utiliser ce code.

  • Pour une page de visualisation

    print views_embed_view('name_of_view','page_1', $node->nid);
    
  • Pour un bloc de vue

    print views_embed_view('faculty_core','block_1', $node->nid);
    
9
Dave

Le module EVA peut également attacher des vues aux nœuds.

5
uwe

Pour afficher une vue dans un modèle de nœud, vous utilisez le code suivant.

// 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();
5
Cyclonecode

Pourquoi pas:

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

où $ arg, $ arg2, etc. sont facultatifs.

Ou utilisez le module Viewfield pour incorporer une vue en tant que champ.

4
Artur

Une solution consiste à utiliser Panelizer pour remplacer le contenu du nœud respectif.

Disons par exemple que vous avez une poignée de pages uniques qui nécessitent une vue attachée.

1) Vous pouvez utiliser le type de contenu Page ou peut-être créer un nouveau type de contenu qui sera spécifiquement panélisé.

2) Activez Panelizer pour ce type de contenu, assurez-vous de le configurer sur "Autoriser le choix d'affichage par enregistrement" de cette façon, vous pouvez configurer plusieurs affichages de panelizer qui seront adaptés à chaque page. (chaque panneau d'affichage peut avoir son propre ensemble de vues attaché)

3) À partir de là, vous créez simplement une vue (j'aime utiliser les volets de contenu pour cela) et l'ajoutez à l'affichage de contenu Panelizer de votre choix.

Cela vous permet de réutiliser un seul type de contenu qui n'a pas vraiment besoin de son propre ensemble de champs, mais qui peut potentiellement être utilisé pour référencer d'autres entités (en tant que champ) ou référencer des vues.

Ajoutez le module Paragraphs et vous avez un type de contenu Swiss Army Knife. En parlant de cela, cela ferait un nom parfait pour le type de contenu personnalisé utilisé à cet effet ... Hmm ....

1
phil

Disons simplement que le premier paramètre est le nom de la vue, le deuxième nom d'affichage et après cela, vous pouvez passer des paramètres de filtre contextuels.

Pour que "$ node-nid", le troisième paramètre dépend de votre affichage ... ce qu'il attend pour le premier filtre contextuel - id n'a pas à être id de nœud. Bien sûr, vous n'êtes pas limité à un paramètre - passez autant que vous en avez en vue ... ou n'en passez aucun si votre vue n'a pas de filtres contextuels.

0
MilanG

Un module Drupal 7 et 8 très configurable est views_field_formatter qui vous permet d'incorporer une vue en tant que formateur de champs

0
GiorgosK