Berikan bidang simpul di dalam page.html.twig


12

Saya memiliki bidang gambar pada tipe konten saya (field_hero_image).

Saya tidak ingin membuatnya dalam file node.html.twig. Namun, saya DO ingin merendernya di file page.html.twig. Secara khusus, saya ingin merendernya di samping judul halaman.

Kode apa yang akan saya gunakan dalam file page.html.twig untuk mengakses bidang level node dan merendernya?

(Ada pertanyaan serupa yang diposting, tetapi saya tidak dapat menggunakan jawaban yang disediakan di sana untuk menyelesaikan masalah saya.)

Ini untuk tema Drupal 8.


2
@kiamlaluno - mengapa Anda mengedit pertanyaan saya ?? Memiliki "Drupal 8" dalam judul DAN dalam pertanyaan membuatnya menjadi jelas bagi penyedia asnwer potensial DAN membuatnya lebih mudah ditemukan di Google, mengingat prevalensi konten Drupal 6 dan 7 di luar sana; membuat Drupal 8 pertanyaan / jawaban sangat jelas sangat membantu masyarakat pada umumnya mencari jawaban spesifik D8. Bertanya-tanya apa alasan Anda untuk mengubahnya.
kraftybasterd

Tolong jangan menduplikasi tag dalam judul pertanyaan; tag terlihat di setiap tempat pertanyaan terlihat, sehingga tidak perlu menggunakan tag juga dalam judul pertanyaan.
kiamlaluno

2
Jelas, saya baru di sini ... tetapi apakah tag meta (dalam hal ini, "8") membantu dengan hasil mesin pencari? Saya merasa seperti judul konten yang mengandung Drupal 8 atau Drupal 7 berpotensi membantu orang mencari jawaban melalui Google ... hanya sebuah gagasan.
kraftybasterd

Jawaban:


26

Setelah melakukan sedikit lebih banyak riset, saya dapat menemukan cukup banyak pertanyaan lain dan di drupal.org untuk mencapai apa yang ingin saya lakukan.

Tidak diperlukan pra-pemrosesan untuk jawaban ini, jadi tidak ada kode yang perlu ditambahkan ke file mytheme.theme Anda.
Semua variabel ini sudah dapat diakses di page.html.twig secara default.

Untuk merender nilai default bidang di dalam page.html.twig, Anda biasanya menggunakan variabel Twig seperti pada {{ node.field_some_name.value }}.

Jika Anda memiliki bidang gambar, dan ingin merender URL ke gambar yang disimpan di bidang itu di dalam halaman.html.twig template, Anda akan menggunakan {{ file_url(node.field_some_image.entity.fileuri) }}.

Terakhir, jika Anda ingin merender judul sebuah simpul di dalam template page.html.twig, Anda akan menggunakannya {{ node.label }}.

Saya juga belajar bagaimana menggunakan beberapa persyaratan Ranting untuk masalah khusus saya, tetapi itu berada di luar cakupan pertanyaan / jawaban ini.


Saya skeptis, mendapat kesan bahwa dalam D7 hal semacam ini harus selalu dalam misalnya fungsi preproses. Namun, contoh file_url()dalam dokumen ( drupal.org/docs/8/theming/twig/functions-in-twig-templates ) melakukan hal ini, jadi, dipilih.
Graham C

Bagaimana Anda mengulangi jenis konten tertentu dan menampilkan nilai bidangnya di dalamnya page.html.twig?
Naourass Derouichi

2

Ada tiga metode praktis untuk bekerja dengan ini, yang semuanya menghemat waktu Anda menggali dalam array render yang rumit.

  1. Menggunakan Display Suite (dengan submodule ds_extras) Anda dapat menetapkan blok wilayah ("wilayah blok") yang merupakan mode tampilan yang berbeda (yaitu hanya satu yang berisi gambar pahlawan). Dengan demikian Anda mendapatkan dua mode tampilan berbeda yang ditampilkan sekaligus. Perhatikan bahwa beberapa kait praproses mungkin tidak menyala seperti yang Anda harapkan jika Anda melakukan ini.

  2. The Modul twig_tweak sangat menyederhanakan tugas-tugas tersebut dan dapat memberikan pernyataan ranting mudah bagi nilai-nilai lapangan. Lihatlah lembar contekan untuk beberapa kegunaan umum: {{ drupal_field('field_image', 'node', 1) }}Fungsi tanda tangan adalah:drupalField($field_name, $entity_type, $id = NULL, $view_mode = 'default', $langcode = NULL)

  3. The twig_field_value modul membuat pernyataan ranting sederhana. Per README.txt:<img src={{ file_url(content.field_image|field_target_entity.uri.value) }} alt={{ content.field_image|field_raw('alt') }} />

Jika saya tahu ini sebelumnya, itu akan menyelamatkan saya banyak waktu!


1
Ini jawaban yang benar. Dalam pengalaman saya, {{ node.field_some_name.value }}jangan membuat bidang. Itu tidak memanggil sistem tema lengkap (fungsi preprocess, template, dll). OTOH, jika Anda menggunakan twig_tweakmodul, Anda bisa mendapatkan bidang yang sepenuhnya diterjemahkan dengan{{ node.field_some_name|view }}
kentr
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.