Puncte:1

Care este modalitatea corectă de a obține valorile câmpurilor redate într-un șablon de crenguță de vizualizare bloc?

drapel in

Am un bloc pe pagina principală a site-ului meu care afișează cele mai recente știri de la Știri pagina (ultimele 3 intrări). Aceasta este o vizualizare, iată setările acesteia:

introduceți descrierea imaginii aici

Încerc să fac acest bloc să arate mai bine. Deoarece aceasta este o vedere, o folosesc bloc--views-block--news-block-1.html.twig fișier șablon pentru scopul meu. Tot ce am vrut a fost să obțin valorile câmpurilor randate în el pentru a le împacheta pe fiecare într-o <div> cu propria sa clasă css. Am încercat de multe ori și prin încercare și eroare în cele din urmă am scris următorul cod:

{%
  setați clase = [
    'bloc',
    „block-” ~ configuration.provider|clean_class,
    „block-” ~ plugin_id|clean_class,
  ]
%}
<div class="container">
    <secțiunea{{ attributes.addClass(clasele) }}>
        {{ title_prefix }}
            <h2 class="article_title">Știri din district</h2>
        {{ title_sufix }}
        {% block content %}
            <ul class="content article_list">
                {% pentru rândul din conținut['#view'].result %}
                    <li class="article_item">
                        <div class="article_item-header">
                            <div class="article_release_date">
                                {{ content['#view'].field['published_at'].value(row)|date("d.m.Y") }}
                            </div> 
                            {{ content['#view'].field['title'].getItems(row) }}
                        </div>
                        <div class="article_description">
                            {{ content['#view'].field['body'].getItems(row) }}
                        </div>
                    </li>
                {% endfor %}
            </ul>
        {% endblock %}
        <div class="article_read_more">
            <a href="/news">Vedeți toate</a>
        </div>
    </section>
</div>

Funcționează satisfăcător: văd marcajele și variabilele din acest bloc pe pagina principală exact așa cum le-am conceput. Dar nu pot spune că funcționează perfect pentru că atunci când merg la „Mesaje de jurnal recente”, văd erori venind din aceasta .crenguţă fișier șablon. Mesajul de eroare este: Eroare utilizator: „raw” este o cheie de matrice de randare nevalidă în Drupal\Core\Render\Element::children() (linia 97 din core/lib/Drupal/Core/Render/Element.php). Când îmi șterg fișierul twig, eroarea nu mai apare. Deci întrebarea mea este: care este modalitatea corectă de a obține același marcaj fără astfel de erori? Poate că abordarea mea este total greșită și ar trebui să o schimb. Sau poate abordarea mea este corectă, dar există o mică greșeală în codul meu? Oricum, aș dori să știu de ce primesc o astfel de eroare în jurnal și cum o pot evita. Vă rog să mă ajutați.

sonfd avatar
drapel in
Vă recomand să vă actualizați vizualizarea pentru a afișa un mod de vizualizare al nodului de știri, apoi puteți face toată logica câmpurilor afișate și cum sunt afișate pentru fiecare articol de știre chiar într-un șablon dedicat.
Puncte:0
drapel eg

Cred că încercarea de câmpuri tematice în interiorul blocului nu este o bună practică.

Abordarea menționată în comentarii de sonfd este unul foarte bun.

În caz contrar, puteți tema fiecare câmp din vizualizare, suprascriind șablonul de câmp, cum ar fi:

views-view-field--{afișează numele mașinii}--{numele paginii sau blocului mașinii}--{numele câmpului}.html.twig

Aceasta ar fi o abordare mai bună.

Sper că asta vă răspunde la întrebare.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.