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

7

Dans Drupal 6, une vue peut être intégré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?

Natkeeran
la source
Selon ce lien de documentation du module de vues, cette fonction est également disponible sur Drupal 6 et 7. Essayez avec le deuxième paramètre comme $ display_id de votre vue.
Shoaib Nawaz

Réponses:

5

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

uwe
la source
5

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();
Cyclonecode
la source
1
Vous devez toujours appeler $ view-> pre_execute (); avant $ view-> execute ();
Teegan
@Teegan - Je ne savais pas que l'utilisation de l'exécution uniquement semble fonctionner, mais je vais examiner l'utilisation pre_execute()avant execute().
Cyclonecode
4

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.

Artur
la source
VIEWFIELD !!!! OMG!!! J'ai cherché pendant des jours cette fonctionnalité, en essayant de nombreux modules, cela me sauve! : D merci!
DrCord
@DrCord, voir également les modules Eva et views_field_view, c'est à peu près la même chose.
timofey.com
Je ne pouvais pas faire en sorte qu'EVA fasse ce que je voulais.
DrCord
1

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

phil
la source
0

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

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.

MilanG
la source
0

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

GiorgosK
la source