Puncte:2

modalitate corectă de accesare a proprietății de modificare a revizuirii nodului în twig

drapel cn

Am un site web Drupal 8.9.17. Tema mea (bazată pe Ghirlandă) include în templates/page.html.twig:

{% dacă nodul %}
[...]
Ultima actualizare {{ node.changed.value|format_date('custom', 'D M d Y') }}
[...]
{% endif %}

Aceasta afișează proprietatea atunci când vizualizați nodurile la: /node/<nid>

Cu toate acestea, atunci când încercați să vizualizați revizuirile la /node/<nid>/revisions/<vid>/view, format_date() eșuează cu eroarea „null timestamp”, așa că presupun că revizuirea nu este încărcată corect.

Care este modalitatea corectă de acces la proprietate, astfel încât să funcționeze pe ambele rute?

apaderno avatar
drapel us
Modul corect ar trebui să fie afișat în fișierul șablon *node.html.twig*, care este folosit numai pentru noduri.
jhnc avatar
drapel cn
@apaderno este o revizuire a nodului, nu un nod?
jhnc avatar
drapel cn
@apaderno the page.html.twig are un comentariu că „Nodul încărcat complet, dacă există un nod încărcat automat” este disponibil. Nu ar trebui să se prindă `{% if node %}` dacă nu este cazul?
apaderno avatar
drapel us
Șablonul *node.html.twig* este folosit și pentru revizuirile nodurilor. Întrebarea este despre șablonul *page.html.twig*, care este șablonul folosit pentru fiecare pagină.
Puncte:1
drapel us

Pentru informațiile afișate pentru un nod, prefer node.html.twig șablon, deoarece nu necesită mai întâi să verificați dacă pagina este redată pentru un nod. The node.html.twig șablonul are deja următoarele rânduri.

{% dacă display_submitted %}
  <subsol>
    {{ author_picture }}
    <div{{ atribute_autor }}>
      {% trans %}Trimis de {{ author_name }} pe {{ data }}{% endtrans %}
      {{ metadate }}
    </div>
  </footer>
{% endif %}

Dacă aș dori să schimb modul în care este redată data sau data care este afișată, fără a elimina celelalte informații afișate în fișierul șablon, aș înlocui acele linii cu următoarele.

{% dacă display_submitted %}
  <subsol>
    {{ author_picture }}
    <div{{ atribute_autor }}>
      {% trans %}Ultima actualizare pe {{ node.getChangedTime()|format_date('custom', 'D M d Y') }}{% endtrans %}
      {{ metadate }}
    </div>
  </footer>
{% endif %}

Pentru tema Garland, care este acum o temă de contribuție, partea care trebuie schimbată este următoarea.

{% dacă display_submitted %}
  <span class="submitted">{{ data }} â {{ author_name }}</span>
{% endif %}

Puteți fie înlocui acele linii cu următoarele linii, fie cu următoarele, dacă doriți doar să schimbați formatul datei.

{% dacă display_submitted %}
  <span class="submitted">{% trans %}Ultima actualizare pe {{ node.getChangedTime()|format_date('custom', 'D M d Y') }}{% endtrans %}</span>
{% endif %}
{% dacă display_submitted %}
  <span class="submitted">{{ node.getChangedTime()|format_date('personalizat', 'D M d Y') }} â {{ author_name }}</span>
{% endif %}

Ca documentație pentru node.html.twig șablonul spune că nu toate proprietățile și metodele nodului sunt accesibile prin nodul; numai metodele ale căror nume încep cu obține, are, sau este sunt disponibile, împreună cu câteva metode comune, cum ar fi id, eticheta, și pachet.

jhnc avatar
drapel cn
Aceasta pare să fie diferită de [Garland node.html.twig](https://git.drupalcode.org/project/garland/-/blob/8.x-1.x/templates/node.html.twig) care nu contine ``. Sunt sigur că site-ul se va muta în cele din urmă la o temă mai bună, dar am rămas blocat cu ea pentru moment.
apaderno avatar
drapel us
Nu este mult diferit: priviți linia folosind `{{ data }}` și înlocuiți-o cu codul de care aveți nevoie, așa cum arată răspunsul actualizat.Nu am reușit să găsesc tema Garland; Nu m-am gândit să caut între temele contribuite.
jhnc avatar
drapel cn
Tocmai m-am uitat mai atent la ghirlanda personalizată care mi-a fost oferită și nu văd nimic care să impună ca codul să fie în page.html.twig, așa că utilizarea node.html.twig pare a fi cea mai bună soluție.

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.