Saya perlu mengendalikan rendering field_admin_tags
bidang dalam node.html.twig
templat.
Ini bekerja:
{{ content.field_admin_tags }}
- Memberikan semuanya (label + semua nilai bidang){{ content.field_admin_tags.0 }}
- Memberikan hanya nilai pertama di bidang, dan tidak ada label
MASALAH: Saya tidak memiliki kendali atas markup yang mengelilingi tag, mis <ul><li>...</li></ul>
.
Jadi ide saya adalah untuk beralih di atas render array .
Tapi itu TIDAK berhasil:
{% for tag in content.field_admin_tags %}
{{ tag }}
{% endfor %}
Saya mendapatkan: Exception: Object of type Drupal\node\Entity\Node cannot be printed
.
Saya pikir saya mengulangi kunci / nilai array render vs item di dalam bidang (jika saya mencetak "X" di setiap loop, saya mendapatkan 20 X sementara saya hanya memiliki dua atau tiga nilai di bidang ini) .
Saya ingin iterate atas content.field_admin_tags.0
, content.field_admin_tags.1
, dll
Adakah cara untuk memperbaikinya? Terima kasih.
Jawaban:
Anda bisa memperbaiki ini di ranting bidang. Di sana Anda dapat menggunakan loop yang ada untuk beralih item item:
node.html.twig
bidang - bidang-admin-tags.html.twig
Contoh ini menggantikan
<div>
dengan<ul>
. Jangan menghapus{{ attributes }}
atau memintas templat bidang, lihat Apa yang dapat merusak quickedit, dan bagaimana cara memperbaikinya?sumber
{{ content.field_admin_tags }}
Setuju dengan 4k4 templat bidang adalah tempat terbaik, jika Anda benar-benar menginginkannya dalam templat entitas (misal simpul), Anda dapat melakukan sesuatu seperti ini:
Tapi jujur saya pikir itu agak jelek, templat bidang adalah tempat yang tepat.
sumber
Jika Anda, seperti saya, sedang mencari cara untuk beralih melalui paragraf pada templat ranting sebuah simpul, berikut ini cara melakukannya:
Misalkan Anda memiliki simpul dengan bidang paragraf multinilai, sehingga editor konten dapat membuat beberapa paragraf dan Anda ingin mengulangi setiap paragraf pada templat ranting node (misalnya untuk menambahkan pembungkus di sekitar setiap paragraf):
UPDATE: Saya perlu menemukan cara lain untuk mencetak semua paragraf tanpa menggunakan konten. Variabel konten berisi semua yang Anda atur di bagian 'Kelola tampilan' dari node, tetapi metode pekerjaan saya saat ini adalah untuk tidak pernah menggunakan 'Kelola tampilan' atau tata letak karena Anda benar-benar dapat mengakses semua data dalam file ranting node, dan hampir semua pengaturan yang akan Anda lakukan pada 'Kelola tampilan', seperti menerapkan gaya gambar, atau pengaturan format tanggal, ... dapat Anda lakukan langsung di ranting.
Bagi saya ini adalah keuntungan karena saya tahu bahwa semua yang saya lihat berasal dari file ranting, dan saya tidak perlu mencari beberapa pengaturan bidang yang tidak jelas yang dapat menambah kelas di suatu tempat. Jadi semua yang saya lihat berasal dari hanya satu tempat (file ranting node) dan bukan kombinasi dari file ranting dan layar tampilan kelola.
Bagaimanapun, dengan menggunakan modul Twig Tweak yang mengagumkan, berikut adalah cara mencetak bidang paragraf multi nilai dalam file ranting simpul tanpa harus menggunakan variabel konten:
sumber
Saya telah menemukan
#items
properti itu berguna ketika membangun loop dengan panjang yang tidak diketahui di Twig:sumber
Jika Anda ingin menempatkan pembungkus tambahan di sekitar bidang di dalam bidang paragraf atau karena alasan tertentu nilai bidang referensi paragraf tertentu, Anda dapat melakukan hal berikut:
Dengan melakukan
{{kint(content.paragraph_field_name[key])}}
, Anda akan melihat bahwa bidang dapat diakses di dalam bagian ['#paragraph'] dari array.sumber