Come ottenere ogni valore di campo in views-views-non formattato - view-machine-name.html.twig?


19

Ho un file di ramoscelli: views-view-unformatted - 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 %}

Voglio avere Titlee il body campo deve essere in 1 riga separata da una virgola come:

titolo, corpo

Come posso ottenere il valore di 'title' o 'body' o di qualsiasi altro campo in questa vista durante il debug?

Ho usato kint (titolo) e kint (body) ma non funziona. Ho anche creato un debug = TRUE;file di servizi.

Ma non riesco a capire come avere valore dei campi in un ramoscello HTML non formattato.

Risposte:


20

Come puoi vedere in views-view-unformatted.html.twig , dice ciò che dice anche il codice commentato che hai mostrato, non ci sono variabili di campi. Pertanto, questo modello non viene utilizzato per i campi.

Variabili disponibili:

  • titolo: il titolo di questo gruppo di righe. Potrebbe essere vuoto
  • righe: un elenco degli elementi della riga della vista.
    • attributi: gli attributi HTML della riga.
    • content: il contenuto della riga.
  • view: l'oggetto view.
  • default_row_class: un flag che indica se le classi predefinite devono essere utilizzate sulle righe.

Se si desidera utilizzare i campi in un modello di visualizzazione, utilizzare views-view-fields - [view-name] - [machine-name] .html.twig . Qui puoi stampare i tuoi campi in questo modo:

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

view_name con underscore mantenuto, mentre machine-name con underscore trasformato in virgola
Matoeil

1
views-view-fields.html.twig può essere copiato dalla cartella / core / modules / views / templates e quindi rinominato come sopra. Per una determinata vista con un nome_macchina di foobar, il nuovo nome può essere views-view-fields - foobar.html.twig. Maggiori informazioni sulle convenzioni di denominazione sono disponibili qui: drupal.org/docs/8/theming/twig/twig-template-naming-conventions
bkudrle

13

Ho trovato un modo usando Kint, puoi ottenere i valori dei campi in views-view - unformatted.html.twig

se vuoi un campo specifico

Per ottenere il valore dei campi di testo

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

Per ottenere i campi immagine src

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

Per ottenere alt, titolo, larghezza, altezza dell'immagine

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

Nota: sostituire il nome della macchina del campo con il nome della macchina dei campi

Se vuoi scorrere in più campi

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

Se vuoi un valore grezzo

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

7

Ho immaginato un modo usando kint.

All'interno di views-view-unformatted.html.twig utilizzare il seguente codice per visualizzare i singoli campi:

{% for row in rows %}

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

{% endfor %}

Come usare il campo immagine. Quando uso Field_image, non c'è output. L'URL dell'immagine non viene visualizzato o visualizzato!
Harish ST

4

Di seguito è riportato il codice di esempio per accedere ai valori dei campi nel file 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 %}

Perfetto! Questa è la cosa che voglio sapere, grazie Renuka.
Niladri Banerjee - Uttarpara,

3

È necessario creare tre file per sovrascrivere le visualizzazioni utilizzando i file ramoscello.
1. views-view - foobar.html.twig
2. views-view-non formattato - foobar.html.twig
3. views-view-fields - foobar.html.twig

Lo scopo di tutti e tre i file è descritto di seguito:
1: implementazione del tema predefinita per il modello della vista principale.
2: implementazione del tema predefinita per visualizzare una vista di righe non formattate.
3: modello di visualizzazione predefinito per visualizzare tutti i campi in una riga.

Dovresti usare "views-view-fields - foobar.html.twig" per generare ciascuno dei tuoi campi nelle viste.

Di seguito è riportato un esempio:

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

Ciao, ho provato quanto sopra in views-view-foobar.html.twig ma non sono in grado di stampare un singolo campo. Eseguo il debug dei campi usando kint () mostra l'array "niente" in alto.
Shakil Ahmad,

0

Dalla mia esperienza, non esiste un modo semplice per ramificare in views-views-non formattato - view-.html.twig un valore da campi che non fanno parte della struttura dell'entità.

Molto per stampare un text (plain)campo. Così doloroso per stampare una flag_field, entity_referencee così via.

Dovendo raggiungere questo obiettivo senza esaminare l'intero codice di base della vista, ho dovuto creare questo hack:

  1. aggiungere un'entità campo di testo semplice falso
  2. agganciare il valore del campo di visualizzazione in un modulo personalizzato:
  3. ramoscello (finalmente) il valore desiderato nel modello

Maggiori dettagli qui /drupal//a/288316/13760

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.