web-dev-qa-db-fra.com

Insérez un bloc de vues dans un nœud dans Drupal 7

[Drupal 7]

J'ai un bloc que j'ai créé dans les vues appelé "handy_tips-block_1".

Maintenant, je veux l'insérer dans le champ corporel de mon nœud.

Comment puis-je faire cela?

J'ai trouvé un guide sur ici , qui suggère d'utiliser le code suivant:

<?php
print $block = module_invoke('views', 'block_view', 'handy_tips-block_1');
print render($block['content']['#content']);
?>

Cependant, tout ce qui est imprimé, ce sont les mots "Array". (J'ai activé le filtre d'entrée PHP pour le corps).

Remarque: dans le code publié, j'ai également essayé de remplacer les "vues" par divers éléments tels que "bloquer". J'ai utilisé 'handy_tips-block_1' comme ID, car c'est ce qui est affiché sur le lien de configuration de la page d'administration des blocs.

6
big_smile

La sortie est "tableau" car en effet c'est un tableau, alors je suppose que vous voulez imprimer votre tableau pour voir quels champs vous pouvez utiliser:

print_r($block);
print_r($block['content']['#content']);
print_r(render($block['content']['#content']);

À propos de l'affichage d'une vue, vous pouvez utiliser cette ligne de code dans votre modèle pour appeler une vue:

echo views_embed_view('view-name', $display_id = 'display-name');

par exemple, dans mon node.tl.php, je veux insérer une vue appelée test view et je veux utiliser son affichage Block avec le nom de la machine block_test, alors je peux utiliser:

echo views_embed_view('test_view', $display_id = 'block_test');

(N'oubliez pas d'utiliser nom de la machine de votre vue et nom de la machine de votre écran).

J'espère que ces informations vous seront utiles.

15
cigotete

Ma façon préférée d'incorporer des vues dans des fichiers de modèle est avec la fonction views_embed_view () .

C'est vraiment facile à utiliser:

<?php print views_embed_view('view-name', 'display-name','arguments'); ?>
  • L'argument 'display-name' correspond au type d'affichage dans votre vue, et le nombre de ces types est multiple. Donc, si selon vous, vous avez créé deux blocs, vous pouvez appeler l'un ou l'autre en utilisant 'block-1' ou 'block-2' dans l'argument 'display-name'.
  • Le troisième argument, "arguments", est facultatif et peut être utilisé pour transmettre tous les arguments de filtre contextuel dont votre vue dépend.
8
PJ McCormick

Je recommande d'utiliser soit le module Entity Views Attachment , qui vous permet d'insérer une vue dans votre module comme s'il s'agissait d'un champ, soit le module Display Suite qui vous permet de personnaliser la disposition de votre nœud et y insérez toutes sortes de blocs.

5
marcvangend

Je me rends compte que c'est un vieux fil maintenant, mais je le cherchais aussi et j'ai trouvé le module BlockReference . Il vous permet d'associer un bloc à un nœud en tant que champ.

Ça marche un régal!

1
JMC