Şablondaki ön sayfa olup olmadığını kontrol edin


14

Drupal 8 test web sitemin ön sayfasındayken içerik göstermeye çalışıyorum, ancak içerik her sayfada gösteriliyor:

{% if front_page %}
  <header role="banner">
    {% if logo %}
      <a href="{{ front_page }}" title="{{ 'Home'|t }}" rel="home">
        <img src="{{ logo }}" alt="{{ 'Home'|t }}"/>
      </a>
    {% endif %}
    <h1 style="color:black">TESTTESTTESTESTAET</h1>
<h1>test</h1

    {{ page.header }}
  </header>
{% endif %}

Bu neden çalışmıyor ve bunu nasıl yapabilirim?

Yanıtlar:


24

Aradığınız değişkenin adı is_front:

{% if is_front %}

Bir şablon için kullanılabilir değişkenler .html.twig dosyasının en üstünde belgelenmiştir, ancak tüm şablonlar için kullanılabilen bir dizi varsayılan değişken de vardır (bunlar her bir şablonda belgelenmemiştir). Bunları _template_preprocess_default_variables () içinde bulabilirsiniz .


Teşekkürler bu çalıştı! if ifadesinden sonra {{elseif}} eklemenin bir yolu var mı?
Stefan

Evet, Twig belgelerinde bununla ilgili ayrıntılar var: twig.sensiolabs.org/doc/tags/if.html
Cottser

21

Olmayan $variables['is_front']şablonlara sağlamak istiyorsanız , bunu ilgili önişleme işlevine ekleyebileceğinizi unutmayın.

function themename_preprocess_menu(&$variables) {
  try {
    $variables['is_front'] = \Drupal::service('path.matcher')->isFrontPage();
  }
  catch (Exception $e) {
    $variables['is_front'] = FALSE;
  }
}

Aynı şekilde template_preprocess_page için de yapılır page.html.twig.

Aynı cevap burada


1
"İs_front" varsayılan olarak html.html.twig
ben.hamelin

Sanırım url.path.is_frontönbellek bağlamı da eklemelisin . Bu yoruma bakın .
Andy

4

Kullandığınız şablonun page.html.twig olduğunu varsayarsanız, aradığınız değişken is_front; aşağıdaki kodla front_pagebaşlatılan ön sayfanın URL'sini içerir template_preprocess_page().

$variables['front_page'] = \Drupal::url('<front>');

Diğer şablon dosyaları için Drupal, kullanıcının ön sayfayı ziyaret edip etmediğini söyleyen değişkenler sağlamaz. Kullanılana benzer bir kod kullanarak template_preprocess_page(), bu değişkeni kullandığınız şablonun önişleme işlevinde ayarlayabilirsiniz.

function mymodule_preprocess_HOOK(&$variables) {
  // An exception might be thrown.
  try {
    $variables['is_front'] = \Drupal::service('path.matcher')->isFrontPage();
  }
  catch (Exception $e) {
    // If the database is not yet available, set the default value.
    $variables['is_front'] = FALSE;
  }  
}

HOOKŞablon türüyle değiştirin (örn . Field.hmtl.twig şablonu alanı ).


4

Root_path kullanarak doğrudan html.html.twig içinde alabilirsiniz. Gövde sınıfını ayarlamak için zaten 31 satırında çıktı:

{% değilse root_path%}

KOD

{% endif%}

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.