Muszę przejąć kontrolę nad renderowaniem field_admin_tags
pola w node.html.twig
szablonie.
To działa:
{{ content.field_admin_tags }}
- Renderuje wszystko (etykieta + wszystkie wartości pól){{ content.field_admin_tags.0 }}
- Renderuje tylko pierwszą wartość w polu i brak etykiety
PROBLEM: Nie mam kontroli nad znacznikami otaczającymi tagi, np <ul><li>...</li></ul>
.
Więc moim pomysłem było iterowanie po tablicy renderowania .
Ale to NIE DZIAŁA:
{% for tag in content.field_admin_tags %}
{{ tag }}
{% endfor %}
I otrzymujemy: Exception: Object of type Drupal\node\Entity\Node cannot be printed
.
Myślę , że iteruję po kluczach / wartościach tablicy renderowania w porównaniu do elementów wewnątrz pola (jeśli wydrukuję „X” w każdej pętli, dostanę 20 X, a mam tylko dwie lub trzy wartości w tym polu) .
Chciałbym iteracyjne nad content.field_admin_tags.0
, content.field_admin_tags.1
itp
Jakiś pomysł jak to naprawić? Dzięki.
Odpowiedzi:
Możesz to naprawić za pomocą gałązki polowej. Tam możesz użyć istniejącej pętli do iteracji elementów pola:
node.html.twig
field - field-admin-tags.html.twig
Ten przykład zastępuje
<div>
się<ul>
. Nie usuwaj{{ attributes }}
ani nie omijaj szablonu pola, zobacz Co może zepsuć quickedit i jak to naprawić?źródło
{{ content.field_admin_tags }}
Zgadzam się z 4k4, szablon pola jest najlepszym miejscem, jeśli naprawdę chcesz go w szablonie encji (np. Węzeł), możesz zrobić coś takiego:
Ale szczerze mówiąc, myślę, że to trochę brzydkie, szablon pola jest właściwym miejscem.
źródło
Jeśli, podobnie jak ja, szukasz sposobu na iterację akapitów na szablonie gałązki węzła, oto jak to zrobić:
Załóżmy, że masz węzeł z polem akapitu wielowartościowego, więc edytor treści może tworzyć wiele akapitów i chcesz iterować każdy akapit w szablonie gałązek węzłów (na przykład, aby dodać opakowanie wokół każdego akapitu):
AKTUALIZACJA: Musiałem znaleźć inny sposób na wydrukowanie wszystkich akapitów bez korzystania z treści. Zmienna content zawiera wszystko, co skonfigurowałeś w sekcji „Zarządzaj wyświetlaniem” węzła, ale moją obecną metodą pracy jest nigdy nie używać „Zarządzaj wyświetlaniem” ani układów, ponieważ możesz faktycznie uzyskać dostęp do wszystkich danych w pliku gałki węzła i prawie wszystkich ustawienia, które możesz wprowadzić w „Zarządzaj wyświetlaniem”, takie jak zastosowanie stylu obrazu lub ustawienie formatu daty, ... możesz to zrobić bezpośrednio za pomocą gałązki.
Dla mnie jest to zaleta, ponieważ wiem, że wszystko, co widzę, pochodzi z pliku gałązki i nie muszę szukać pewnych niejasnych ustawień pól, które mogłyby gdzieś dodawać klasy. Więc wszystko, co widzę, pochodzi tylko z jednego miejsca (plik gałązek węzłów), a nie z kombinacji pliku gałązki i ekranu zarządzania.
W każdym razie, korzystając z niesamowitego modułu Twig Tweak, oto jak wydrukować pole akapitu o wielu wartościach w pliku gałązki węzła bez konieczności używania zmiennej content:
źródło
Uważam, że
#items
właściwość ta jest przydatna podczas tworzenia pętli o nieznanej długości w Gałązce:źródło
Jeśli chcesz umieścić dodatkowe opakowania wokół pól wewnątrz pola akapitu lub z jakiegoś powodu potrzebujesz określonej wartości pola odwołania do akapitu, możesz wykonać następujące czynności:
W ten sposób
{{kint(content.paragraph_field_name[key])}}
zobaczysz, że pola są dostępne w części ['#paragraph'] tablicy.źródło