¿Cómo obtener cada valor de campo en views-views-sin formato - view-machine-name.html.twig?


19

Tengo un archivo de ramita: views-view-sin formato - view-machine-name.html.twig

{#
/**
 * @file
 * Default theme implementation to display a view of unformatted rows.
 *
 * Available variables:
 * - title: The title of this group of rows. May be empty.
 * - rows: A list of the view's row items.
 *   - attributes: The row's HTML attributes.
 *   - content: The row's content.
 * - view: The view object.
 * - default_row_class: A flag indicating whether default classes should be
 *   used on rows.
 *
 * @see template_preprocess_views_view_unformatted()
 *
 * @ingroup themeable
 */
#}
{% if title %}
  <h3>{{ title }}</h3>
{% endif %}
{% for row in rows %}
  {%
    set row_classes = [
      default_row_class ? 'views-row',
    ]
  %}
  <div{{ row.attributes.addClass(row_classes) }}>
    {{ row.content }}
  </div>
{% endfor %}

Quiero tener Titley body campo para estar en 1 línea separados por comas como:

título, cuerpo

¿Cómo puedo obtener el valor de 'título' o 'cuerpo' o cualquier otro campo en esta vista durante la depuración?

Usé kint (título) y kint (cuerpo) pero no funciona. También hice debug = TRUE;en el archivo de servicios.

Pero no puedo encontrar la manera de tener valores de campos en una ramita html sin formato.

Respuestas:


20

Como puede ver en views-view-unformatted.html.twig , dice lo que también dice el código comentado que ha mostrado, no hay campos variables. Por lo tanto, esta plantilla no se usa para campos.

Variables disponibles:

  • title: el título de este grupo de filas. Puede estar vacio
  • filas: una lista de los elementos de fila de la vista.
    • atributos: los atributos HTML de la fila.
    • contenido: el contenido de la fila.
  • vista: El objeto de vista.
  • default_row_class: una marca que indica si las clases predeterminadas deben usarse en filas

Si desea usar campos en una plantilla de vista, use views-view-fields - [view-name] - [machine-name] .html.twig . Allí, puede imprimir sus campos de esta manera:

<span>{{ fields.title.content }},</span><span>{{ fields.body.content }}</span>

view_name con guión bajo mantenido, mientras que el nombre de máquina con guión bajo transformado en coma
Matoeil

1
views-view-fields.html.twig puede copiarse de la carpeta / core / modules / views / templates y luego cambiarse de nombre como se indicó anteriormente. Para una vista dada con un nombre_máquina de foobar, el nuevo nombre puede ser views-view-fields - foobar.html.twig. Más información sobre convenciones de nombres está disponible aquí: drupal.org/docs/8/theming/twig/twig-template-naming-conventions
bkudrle

13

He encontrado una manera usando Kint, puede obtener valores de campo en vistas-vista - unformatted.html.twig

si quieres un campo específico

Para obtener el valor de los campos de texto

{{row.content['#row']._entity.field machine name[0].value}}

Para obtener campos de imagen src

{{file_url(row.content['#row']._entity.field machine name.entity.uri.value)}}

Para obtener la imagen alt, título, ancho, alto

{{row.content['#row']._entity.field machine name[0].alt/title/width/height}}

Nota: reemplace el nombre de la máquina de campo con el nombre de su máquina de campo

Si desea recorrer varios campos

{% for i in range(0, 10) %}
  {{ row.content['#row']._entity.body[i].value }}
{% endfor %}

Si quieres valor bruto

{% for i in range(0, 10) %}
  {{ row.content['#row']._entity.body[i].value|raw }}
{% endfor %}

7

He descubierto una forma de usar kint.

Dentro de su views-view-unformatted.html.twig use el siguiente código para mostrar sus campos individuales:

{% for row in rows %}

{{ row.content['#view'].style_plugin.render_tokens[ loop.index0 ]['{{ YOUR_FIELD_NAME }}'] }}

{% endfor %}

Cómo usar el campo de imagen. Cuando uso field_image, no hay salida. ¡La URL de la imagen no se muestra ni se procesa!
Harish ST

4

A continuación se muestra el código de muestra para acceder a los valores de campo en el archivo views-view-unformatted.html.twig -

{% for row in rows %}
  {% set photo = file_url(row['content']['#row']._entity.field_page_photo.entity.fileuri) %}          
  <li><img src={{ photo }} class="img-responsive img-circle"></li>
{% endfor %}

¡Perfecto! Eso es lo que quiero saber, gracias Renuka.
Niladri Banerjee - Uttarpara

3

Debe crear tres archivos para anular las vistas utilizando archivos de ramita.
1. views-view - foobar.html.twig
2. views-view-sin formato - foobar.html.twig
3. views-view-fields - foobar.html.twig

El propósito de los tres archivos se describe a continuación:
1: Implementación del tema predeterminado para la plantilla de vista principal.
2: Implementación de tema predeterminada para mostrar una vista de filas sin formato.
3: Plantilla de vista predeterminada para mostrar todos los campos en una fila.

Debe usar "views-view-fields - foobar.html.twig" para mostrar cada uno de sus campos en las vistas.

A continuación se muestra una muestra:

<li>
<p>{{ fields.title.content }}</p> // Title field
<p>{{ fields.body.content }}</p> // Body field
<span>{{ fields.created.content }}</span> // Node authored date field
<a href="{{ fields.path.content }}" class="readmore"> read more </a> // Link to actual page
</li>

Hola, he probado lo anterior en views-view-foobar.html.twig pero no puedo imprimir un solo campo. Elimino errores campos usando Kint () que 'nada' espectáculos matriz en la parte superior.
Shakil Ahmad

0

Según mi experiencia, no hay una manera fácil de dividir en views-views-sin formato - view-.html.twig un valor de los campos que no forman parte de la estructura de la entidad.

Muy para imprimir un text (plain)campo. Tan doloroso para imprimir un flag_field, entity_referencey así sucesivamente.

Teniendo que lograr esto sin pasar por todo el código central de la vista, tuve que construir este truco:

  1. agregar una entidad de campo de texto plano falso
  2. enganchar el valor del campo de vista en un módulo personalizado:
  3. ramita (finalmente) el valor deseado en la plantilla

Más detalles aquí /drupal//a/288316/13760

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.