¿Cómo incrusto una vista dentro de un nodo?

7

En Drupal 6, una vista se puede incrustar en un nodo de la siguiente manera:

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

Esto no funciona para drupal 7. ¿Cuál es la función para incrustar vistas en drupal 7?

Natkeeran
fuente
De acuerdo con este enlace de documentación del módulo de vistas, esta función está igualmente disponible en Drupal 6 y 7. Pruebe con el segundo parámetro como $ display_id de su vista.
Shoaib Nawaz

Respuestas:

5

El módulo EVA también puede adjuntar vistas a nodos.

uwe
fuente
5

Para mostrar una vista en una plantilla de nodo, utilice el siguiente código.

// 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();
Código ciclónico
fuente
1
Siempre debe llamar a $ view-> pre_execute (); antes de $ view-> execute ();
Teegan
@Teegan - No sabía eso, usar solo ejecutar parece funcionar, pero lo investigaré pre_execute()antes execute().
Cyclonecode
4

Por qué no:

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

donde $ arg, $ arg2, etc. son opcionales.

O utilice el módulo Viewfield para incrustar una vista como campo.

Artur
fuente
VIEWFIELD !!!! ¡¡¡DIOS MIO!!! He buscado durante días esta funcionalidad, probando muchos módulos, ¡esto me salva! : D gracias!
DrCord
@DrCord, también vea los módulos Eva y views_field_view, son más o menos lo mismo.
timofey.com
No pude lograr que EVA hiciera lo que quería.
DrCord
1

Una solución es usar Panelizer para anular el contenido del nodo respectivo.

Digamos, por ejemplo, que tiene un puñado de páginas únicas que necesitan una vista adjunta.

1) Puede usar el tipo de contenido de la página o tal vez crear un nuevo tipo de contenido que se panelizará específicamente.

2) Habilite Panelizer para ese tipo de contenido, asegúrese de configurarlo en "Permitir opción de visualización por registro" de esa manera puede configurar múltiples pantallas de panelizador que se adaptarán a cada una fuera de la página. (cada pantalla del panelizador puede tener su propio conjunto de vistas adjuntas)

3) Desde aquí, simplemente crea una vista (me gusta usar los paneles de contenido para esto) y la agrega a la pantalla de contenido del Panelizador de su elección.

Esto le permite reutilizar un solo tipo de contenido que realmente no necesita su propio conjunto de campos, pero que podría usarse para hacer referencia a otras entidades (como un campo) o para hacer referencia a vistas.

Agregue los párrafos módulo y tendrá un tipo de contenido de navaja suiza. Hablando de eso, sería un nombre perfecto para el tipo de contenido personalizado utilizado para este propósito ... Hmm ...

phil
fuente
0

Mencionemos que el primer parámetro es el nombre de la vista, el segundo nombre para mostrar y luego puede pasar los parámetros del filtro contextual.

De modo que "$ node-nid", el tercer parámetro depende de su vista ... lo que espera para el primer filtro contextual: la identificación no tiene que ser la identificación del nodo. Por supuesto, no está limitado a un parámetro: pase tantos como tenga a la vista ... o no pase ninguno si su vista no tiene filtros contextuales.

MilanG
fuente
0

Un módulo Drupal 7 y 8 muy configurable es views_field_formatter que le permite incrustar una vista como formateador de campos

GiorgosK
fuente