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?


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.


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();

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.


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


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.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.