Saltar al contenido

Drupal – ¿Cómo incrustar una vista en un nodo específico?

Solución:

Vistas de Twig Insertar

Este módulo permite incrustar vistas con función twig.

{{ views_embed_view('view_name', 'view_id') }}

El módulo anterior se depreció a favor de

Twig Tweak

El módulo Twig Tweak proporciona una extensión Twig con algunas funciones y filtros útiles que pueden mejorar la experiencia del desarrollador.

Ex: <dd>{{ drupal_view('view_name', 'view_machine_name') }}</dd>

Puedes encontrar el view_machine_name aqui

Esta es la forma en que funcionó para mí en el subtema Drupal 8 beta 12 de Classy.

En el archivo your_theme.info.theme

function stjameskidsclub_preprocess_node(&$variables){
  $stuff  = views_embed_view('policy_documents', 'embed_1', 28);
  $variables["my_view"] = Drupal::service('renderer')->renderRoot($stuff);
}  

Copié el node.html.twig y rodeé las etiquetas del artículo (o el área que desea reemplazar) con un bloque de ramitas. Coloqué esto en la carpeta / template / content.

{% block replace_area %}
  <article{{ attributes.addClass(classes) }}>

    ...

  </article>  
{% endblock replace_area %}

Luego creé un nodo – 2.html.twig (reemplace 2 con el nodo deseado) en la carpeta / template / content con el siguiente código.

{% extends "node.html.twig" %}

{% block replace_page %}
  {{ my_view }}
{% endblock %}

El primer problema con el que está luchando es que las entidades renderizadas como los nodos ahora se almacenan en caché de forma predeterminada, por lo que hook_node_view () solo se llama una vez después de borrar / guardar el caché de ese nodo.

Sin embargo, esto es bastante fácil de deshabilitar, consulte settings.local.php.

Entonces, poner la salida de una vista en $ build es bastante fácil y más o menos funciona como en 7.x. En lugar de usar la función de incrustación, considere usar $ views = Views :: getView () y luego $ views-> buildRenderable ()

Dos consejos:

  • Haga que la clave que usa para $ build esté disponible como un campo adicional en hook_entity_extra_field_info (), luego verifique la pantalla si el componente está habilitado (vea cómo user_user_view () hace eso. Eso le permite configurar el peso / ubicación de la vista en el UI y también ocultarlo en ciertos modos de vista.
  • Si su vista tiene una página, entonces es un poco más complicada, ya que la salida del nodo se almacena en caché. Debe hacer que la clave de caché sea consciente del buscapersonas, consulte comment_entity_build_defaults_alter () para ver un ejemplo (no es una vista, pero ese es el ejemplo más cercano que tiene el núcleo).
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *