Page.html.twig içinde bir düğüm alanı oluşturun


12

İçerik türümde (field_hero_image) bir görüntü alanım var.

Node.html.twig dosyasında görüntülenmesini istemiyorum. Ancak, page.html.twig dosyasında işlemek istiyorum. Özellikle, sayfa başlığının yanında işlemek istiyorum.

Düğüm düzeyi alanlarına erişmek ve bunları oluşturmak için page.html.twig dosyamda hangi kodu kullanırdım?

(Benzer bir soru gönderildi, ancak sorunumu çözmek için orada verilen cevabı kullanamadım.)

Bu Drupal 8 teması için.


2
@kiamlaluno - sorumu neden düzenlediniz ?? Başlıkta VE soruda "Drupal 8" olması, potansiyel asnwer sağlayıcıları için açıkça anlaşılıyor VE Drupal 6 ve 7 içeriğinin yaygınlığı göz önüne alındığında Google'da bulunmayı çok daha kolay hale getiriyor; Drupal 8 sorularını / cevaplarını çok açık hale getirmek, D8'e özel cevaplar bulma konusundaki görüşlerine yardımcı olur. Bunu değiştirmek için nedeninizin ne olduğunu merak ediyordum.
kraftybasterd

Lütfen soru başlıklarındaki etiketleri kopyalamayın; Etiketler bir sorunun görüldüğü her yerde görünür olduğundan soru başlığında da etiket kullanmaya gerek yoktur.
kiamlaluno

2
Kesinlikle, burada yeniyim ... ama meta etiketler (bu durumda, "8") arama motoru sonuçlarına yardımcı olur mu? Drupal 8 veya Drupal 7 içeren içerik başlıklarının Google üzerinden yanıt arayan kişilere yardımcı olabileceğini düşünüyorum ... sadece bir fikir.
kraftybasterd

Yanıtlar:


26

Biraz daha araştırma yaptıktan sonra, yapmak istediklerime ulaşmak için diğer sorularda ve drupal.org'da yeterince parça bulabildim.

Bu yanıt için ön işleme gerek yoktur, bu nedenle mytheme.theme dosyanıza kod eklenmesi gerekmez.
Bu değişkenlerin tümüne varsayılan olarak page.html.twig adresinden erişilebilir.

Bir alanın varsayılan değerini page.html.twig içinde oluşturmak için genellikle olduğu gibi bir Twig değişkeni kullanırsınız {{ node.field_some_name.value }}.

Bir resim alanınız varsa ve page.html.twig şablonunun içindeki alanda depolanan resmin URL'sini oluşturmak istiyorsanız, kullanırsınız {{ file_url(node.field_some_image.entity.fileuri) }}.

Son olarak, page.html.twig şablonunda bir düğümün başlığını oluşturmak istiyorsanız, şunu kullanırsınız {{ node.label }}.

Ayrıca benim özel sorunum için bazı Twig koşullarını nasıl kullanacağımı öğrendim, ancak bu soru / cevabın kapsamı dışında.


Şüpheliydim, D7'de bu tür şeylerin her zaman örneğin bir önişleme işlevinde olması gerektiği izlenimine kapıldım. Bununla birlikte, file_url()dokümanlardaki örnek ( drupal.org/docs/8/theming/twig/functions-in-twig-templates ) tam olarak bunu yapar, bu yüzden kaldırılmıştır.
Graham C

Belirli bir içerik türü arasında nasıl geçiş yaparsınız ve alan değerlerini içeride page.html.twignasıl çıkarırsınız ?
Naourass Derouichi

2

Bununla çalışmak için üç kullanışlı yöntem vardır, bunların hepsi karmaşık render dizilerinde zaman kazanmanızı sağlar.

  1. Display Suite'i kullanarak (ds_extras alt modülüyle), kahraman bölgesine farklı bir görüntüleme modu olan bir blok ("blok bölgesi") atayabilirsiniz (yani, yalnızca kahraman görüntüsünü içeren bir blok). Böylece aynı anda iki farklı ekran modu elde edersiniz. Bazı önişleme kancalarının bu işlemi beklediğiniz gibi çıkmayabileceğini unutmayın.

  2. Twig_tweak modülü büyük ölçüde bu tür görevleri basitleştiren ve alan değerleri için daha kolay dal ifadeleri verebilir. Bir göz atın hile levha : Bazı yaygın kullanımlar için {{ drupal_field('field_image', 'node', 1) }}işlev imzası geçerli:drupalField($field_name, $entity_type, $id = NULL, $view_mode = 'default', $langcode = NULL)

  3. Twig_field_value modülü daha basit dal açıklamalar yapar. README.txt başına:<img src={{ file_url(content.field_image|field_target_entity.uri.value) }} alt={{ content.field_image|field_raw('alt') }} />

Bunu daha önce bilseydim, bana çok zaman kazandırırdı!


1
Bu doğru cevap. Tecrübelerime göre, {{ node.field_some_name.value }}vermez hale alanını. Tam tema sistemini çağırmaz (önişleme fonksiyonu, şablon vb.). OTOH, twig_tweakmodülü kullanırsanız, tamamen işlenmiş alanı alabilirsiniz{{ node.field_some_name|view }}
kentr
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.