Saya menggunakan kode berikut untuk memproses ulang variabel untuk templat saya:
function template_preprocess_imagegallery_format(&$vars) {
template_preprocess_image_formatter($vars);
$vars['image']['#theme'] = 'igimage';
$vars['image']['#thumbnail'] = ImageStyle::load('thumbnail')->buildUrl($vars ['image']['#uri']);
$vars['image']['#fullimage'] = file_create_url($vars ['image']['#uri']);
}
Variabel #uri sudah ada, dan jika saya memodifikasinya semuanya berfungsi dengan baik. Tapi saya perlu menambahkan variabel tambahan di sini karena saya perlu dua gaya berbeda dari gambar yang sama. Tetapi hanya menambahkan variabel-variabel ke array tidak bekerja.
Jika saya membuang variabel yang tersedia di templat Twig saya {{ dump(_context|keys) }}
, saya tidak melihat variabel yang saya tambahkan di sana. Jika saya mencoba menggunakannya di template saya, tidak ada yang dimasukkan.
Saya bisa melihat bahwa nilai ditambahkan ke array, ketika saya membuang variabel gambar di tema yang membuat seluruh bidang, saya melihat variabel saya di array. Tapi mereka masih belum tersedia di templat yang membuat variabel gambar itu sendiri.
Apa lagi yang harus saya lakukan untuk menambahkan variabel dalam fungsi preproses saya yang dapat saya gunakan dalam templat Ranting saya?
$vars
dan kunci Anda (misalnya['image']
). Saya cukup yakin itu tidak diizinkan.template_preprocess_imagegallery_format
tetapi 'template' harus diganti dengan tema atau nama modul Anda. Anda juga perlu cache yang jelas.Jawaban:
Saya akhirnya memecahkan masalah, ternyata masalahnya adalah saya mencoba menambahkan variabel dalam preprocessor yang salah. Mengedit tema # berfungsi di sana, tetapi untuk menambahkan variabel, saya perlu memproses ulang tema yang saya atur di sana:
sumber
Nama tema: atvdirect
gunakan {{logopath}} di page.html.twig
sumber