जाँचें कि क्या यह टेम्पलेट में फ्रंट पेज है


14

जब मैं अपने ड्रुपल 8 परीक्षण वेबसाइट के सामने वाले पृष्ठ पर सामग्री दिखाने की कोशिश कर रहा हूं, तो यह सुनिश्चित करने की कोशिश की जाती है कि सामग्री हर पृष्ठ पर दिखाई दे:

{% 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 %}

यह काम क्यों नहीं करता है और मैं यह काम कैसे कर सकता हूं?

जवाबों:


24

वह चर जिसे आप खोज रहे हैं उसे कहते हैं is_front:

{% if is_front %}

किसी टेम्प्लेट के लिए उपलब्ध चर .html.twig फ़ाइल के शीर्ष पर प्रलेखित होते हैं, हालाँकि सभी टेम्प्लेट (जो प्रत्येक एकल टेम्प्लेट में प्रलेखित नहीं हैं) के लिए डिफ़ॉल्ट चर का एक सेट भी उपलब्ध है। आप उन्हें _template_preprocess_default_variables () में पा सकते हैं ।


धन्यवाद यह एक काम किया! क्या इस कथन के बाद {{और}} जोड़ने का कोई तरीका है?
स्टीफन

हाँ, ट्विग
Cottser

21

ध्यान दें कि यदि आप ऐसे $variables['is_front']टेम्प्लेट प्रदान करना चाहते हैं जो नहीं करते हैं, तो आप इसे संबंधित प्रीप्रोसेस फ़ंक्शन में जोड़ सकते हैं।

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

यह उसी तरह से किया जाता है जैसे के लिए template_preprocess_page में page.html.twig

यहाँ भी वही जवाब


1
यह मेरे लिए उपयोगी था template_preprocess_html, जैसा कि "is_front" html.html.twig में डिफ़ॉल्ट रूप से उपलब्ध नहीं है
ben.hamelin

मुझे लगता है कि आपको url.path.is_frontकैश संदर्भ के रूप में भी जोड़ना चाहिए । इस टिप्पणी को देखें ।
एंडी

4

यह मानते हुए कि आप जिस टेम्पलेट का उपयोग कर रहे हैं, वह page.html.twig है, तब आप जिस चर की तलाश कर रहे हैं is_front; निम्नलिखित कोड के साथ front_pageप्रारंभ में, फ्रंट पेज का URL शामिल है template_preprocess_page()

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

अन्य टेम्प्लेट फ़ाइलों के लिए, Drupal आपको यह बताने के लिए कोई चर प्रदान नहीं करता है कि क्या उपयोगकर्ता फ्रंट पेज पर जा रहा है। उपयोग किए गए कोड के समान कोड का उपयोग करके template_preprocess_page(), आप उस चर को प्रीप्रोसेस फ़ंक्शन में उस टेम्पलेट के लिए सेट कर सकते हैं जिसका आप उपयोग कर रहे हैं।

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टेम्पलेट प्रकार के साथ बदलें (जैसे फ़ील्ड के लिए फ़ील्ड ।hmtl.twig टेम्पलेट)।


4

आप इसे सीधे html.html.twig में root_path का उपयोग करके प्राप्त कर सकते हैं। बॉडी क्लास सेट करने के लिए लाइन 31 पर यह पहले से ही आउटपुट है:

{% नहीं तो root_path%}

कोड

{% अगर अंत %}

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.