Saya ingin membuat gambar sebagai gambar latar belakang melalui gaya inline di ranting. Saya membuat bidang yang disebut bg_image dan melampirkannya ke halaman polos standar.
Setelah bermain-main selama berjam-jam saya bisa mendapatkan URL Gambar di node.html.twig
{{ file_url(node.field_bg_image.0.entity.uri.value) }}
tapi saya tidak bisa menjalankannya di dalam field - field-bg_image.html.twig
Bisakah saya mendapatkan node dari sana, jadi saya bisa mendapatkan gambar?
Bagaimana saya bisa mendapatkan URL gambar untuk digunakan sebagai gaya inline? Saya pikir mungkin saya bisa melewatkan variabel dari bidang - field-bg_image.html.twig ke image.html.twig dan kemudian render saja
{{ uri }}
dari pada
<img{{ attributes.addClass(classes) }} />
tapi saya tidak bisa mendapatkannya untuk lulus variabel di sana kecuali saya gunakan termasuk
{% include 'image.html.twig' with {'image': image, 'isFromField': isFromField} %}
(isFromField benar, ketika berasal dari bidang - field-bg_image.html.twig) Tapi itu tidak berhasil juga. Gambar tidak pernah dibuat seperti itu.
Akan sangat senang jika Anda dapat membantu - pengetahuan php saya sangat mendasar. Terima kasih
Jawaban:
Variabel
node
hanya dimuat di templat simpul (dan templat laman, jika url berisi simpul). Sekarang jika Anda ingin mengakses bidang simpul dalam templat bidang Anda harus mencari di tempat yang berbeda:field.html.twig:
element['#object']
adalah entitas induk dalam templat bidang dan Anda dapat mengakses bidang apa pun dari entitas ini (dalam kasus Anda simpul).Jika Anda ingin mengakses nilai mentah dari bidang aktual, lebih baik untuk mengikuti logika ranting bidang dan mengakses nilai di dalam loop item langsung dari objek item bidang
#item
:Sunting: Dapatkan url gaya gambar
Instal modul Twig Tweak dan Anda dapat menggunakan uri untuk mendapatkan url gaya gambar:
sumber
Hanya untuk menyebutkan bahwa jika Anda ingin melakukan hal yang sama di salah satu blok khusus baru ini berfungsi:
sumber
Saya menggunakan kode ini dalam file tema saya:
Itu bisa diperbaiki. Saya memeriksa bidang gambar, dan memuat url-nya dengan gaya gambar.
Kemudian di file node - page.html.twig saya punya ini:
Sekali lagi, itu bisa menggunakan beberapa perbaikan. Terima kasih
sumber
Saya akan melakukannya dengan cara lain. Dalam fungsi preprocess node Anda:
Kemudian, di templat Anda (simpul - NODETYPE.html.twig), cukup render gambar seperti itu:
Meskipun, jika Anda harus merender gambar dalam jumlah besar, saya sarankan Anda untuk memuat gaya dalam array sebelum Anda mengulang pada setiap gambar. Saya mengatakan bahwa karena saya mengalami masalah waktu buka yang serius karena saya harus memuat lebih dari 300 gambar dan untuk setiap gambar, saya memuat gaya secara individual alih-alih memuat semuanya sebelumnya, berikut ini contoh, pangkalan yang sama seperti di atas:
Kemudian lagi, di templat Anda (simpul - NODETYPE.html.twig), cukup render gambar seperti itu:
Saya belum benar-benar mengujinya dan saya mendapatkan semua ini dari kepala saya sehingga mungkin mengandung kesalahan, jangan ragu untuk memperingatkan saya jadi saya akan memperbaikinya :-).
sumber
Saya sudah cukup sukses menggunakan Background Image Module ketika use case memungkinkan untuk itu. Saya menggunakan salah satu opsi kode ini ketika saya membutuhkan struktur DOM yang disesuaikan.
sumber