logo

एक्स्ट्रा ब्लॉक टाइप्स (EBT) - नया लेआउट बिल्डर अनुभव❗

एक्स्ट्रा ब्लॉक टाइप्स (EBT) - स्टाइलिश, कस्टमाइज़ेबल ब्लॉक टाइप्स: स्लाइडशो, टैब्स, कार्ड्स, एकॉर्डियन्स और कई अन्य। बैकग्राउंड, DOM बॉक्स, जावास्क्रिप्ट प्लगइन्स के लिए बिल्ट-इन सेटिंग्स। आज ही लेआउट बिल्डिंग का भविष्य अनुभव करें।

डेमो EBT मॉड्यूल्स EBT मॉड्यूल्स डाउनलोड करें

❗एक्स्ट्रा पैराग्राफ टाइप्स (EPT) - नया पैराग्राफ्स अनुभव

एक्स्ट्रा पैराग्राफ टाइप्स (EPT) - एनालॉजिकल पैराग्राफ आधारित मॉड्यूल्स का सेट।

डेमो EPT मॉड्यूल्स EPT मॉड्यूल्स डाउनलोड करें

स्क्रॉल

6.4. Twig — Drupal के लिए नया टेम्पलेट इंजन है।

17/10/2025, by Ivan

Menu

यदि आप Stable थीम की page.html.twig टेम्पलेट फ़ाइल खोलें:

/core/themes/stable/templates/layout/page.html.twig

तो आप पाएंगे कि यह Drupal 7 की page.tpl.php टेम्पलेट से अलग है, सबसे पहले एक्सटेंशन में और दूसरे, इसमें बहुत सारे कर्ली ब्रेसेज़ {} हैं। इसका कारण यह है कि Drupal अब Twig टेम्पलेट इंजन का उपयोग करता है।

<main role="main">
    <a id="main-content" tabindex="-1"></a>{# लिंक html.html.twig में है #}
 
    <div class="layout-content">
      {{ page.content }}
    </div>{# /.layout-content #}
 
    {% if page.sidebar_first %}
      <aside class="layout-sidebar-first" role="complementary">
        {{ page.sidebar_first }}
      </aside>
    {% endif %}
 
    {% if page.sidebar_second %}
      <aside class="layout-sidebar-second" role="complementary">
        {{ page.sidebar_second }}
      </aside>
    {% endif %}
 
  </main>

Twig टेम्पलेट में PHP का उपयोग नहीं किया जा सकता, इसलिए आपको केवल Twig के टूल्स का उपयोग करना होगा — और साइट को स्टाइल करने के लिए ये पर्याप्त हैं।

आइए समझते हैं कि Twig के साथ कैसे काम किया जाए।

Twig में वेरिएबल्स

यदि PHP में हम वेरिएबल्स के लिए $ चिह्न का उपयोग करते हैं, तो Twig में हम कर्ली ब्रेसेज़ का उपयोग करते हैं:

{{variable}}

इस प्रकार, हम दो ओपनिंग ब्रेसेज़, एक स्पेस, वेरिएबल का नाम, फिर स्पेस और दो क्लोज़िंग ब्रेसेज़ लिखते हैं। Twig में किसी वेरिएबल को आउटपुट करने के लिए print फ़ंक्शन जोड़ने की आवश्यकता नहीं है, क्योंकि Twig टेम्पलेट्स में PHP का उपयोग नहीं होता। वेरिएबल को आउटपुट करने के लिए बस उसे डबल कर्ली ब्रेसेज़ में लिखना पर्याप्त है।

वेरिएबल ऑब्जेक्ट्स और ऐरेज़ के साथ काम करना भी आसान है। पहले जहाँ आपको यह जानना पड़ता था कि $node एक ऑब्जेक्ट है और $form एक ऐरे है, अब सब कुछ सरल है — हम वेरिएबल की प्रॉपर्टीज़ को डॉट (.) के माध्यम से एक्सेस करते हैं:

{{node.id}}

हम आसानी से वेरिएबल्स बना सकते हैं:

{% set foo="bar" %}
 
Hi, here's my variable: {{ foo }}

ध्यान दें कि जब हम वेरिएबल सेट करते हैं, तो हम प्रतिशत चिह्न (%) का उपयोग करते हैं, और जब हम वेरिएबल प्रदर्शित करते हैं, तो हम डबल ब्रेसेज़ का उपयोग करते हैं।

हम केवल स्ट्रिंग्स ही नहीं बल्कि ऐरेज़ भी सेट कर सकते हैं:

{%
  set foo_array = [
    'foo',
    'bar',
  ]
%}

Twig फ़िल्टर्स

हालाँकि Twig एक पूर्ण प्रोग्रामिंग भाषा नहीं है, लेकिन इसमें डेटा के साथ काम करने के लिए कई टूल्स हैं। सबसे महत्वपूर्ण टूल्स में से एक हैं फ़िल्टर्स। फ़िल्टर्स को | पाइप सिंबल के साथ निर्दिष्ट किया जाता है।

{{ variable|filter }}

फ़िल्टर्स वेरिएबल के आउटपुट को बदलने की अनुमति देते हैं। उदाहरण के लिए:

{{node.title | length}} — स्ट्रिंग की लंबाई (अक्षरों की संख्या) प्रदर्शित करता है।

{{node.title | uppercase}} — स्ट्रिंग को बड़े अक्षरों (uppercase) में दिखाता है।

{{node.title | lowercase}} — स्ट्रिंग को छोटे अक्षरों (lowercase) में दिखाता है।

Twig फ़िल्टर्स की पूरी सूची के लिए आधिकारिक Twig डाक्यूमेंटेशन देखें: http://twig.sensiolabs.org/doc/filters/index.html

Drupal Twig फ़िल्टर्स

Drupal Twig में अपने स्वयं के फ़िल्टर्स भी जोड़ता है, जैसे कि लाइन ब्रेक के लिए फ़िल्टर्स। पहले हम PHP में t() फ़ंक्शन का उपयोग करते थे, लेकिन अब Twig में PHP कोड का उपयोग नहीं किया जा सकता, इसलिए हमें t() फ़ंक्शन का विकल्प चाहिए।

उदाहरण के लिए ये फ़िल्टर्स उपयोग किए जाते हैं:

  • t
  • passthrough
  • placeholder
  • drupal_escape
  • safe_json
  • without
  • clean_class
  • clean_id

Twig पैटर्न में लाइन ट्रांसलेशन (अनुवाद)

Twig विभिन्न भाषाओं के लिए स्ट्रिंग्स का उपयोग करता है। किसी पंक्ति को अनुवाद करने के लिए {% trans %} टैग का उपयोग करें। ध्यान दें कि कंट्रोल स्ट्रक्चर प्रतिशत (%) चिन्ह से शुरू होते हैं, जिससे ये वेरिएबल्स से अलग रहते हैं।

{% trans %} Hello world {% endtrans %}

हम स्ट्रिंग्स में वेरिएबल्स भी पास कर सकते हैं:

{% trans %} Hello {{ name }} {% endtrans %}

हम वेरिएबल्स को प्रदर्शित करने से पहले फ़िल्टर्स के माध्यम से संशोधित भी कर सकते हैं:

{% set name = name|capitalize %}
 
{% trans %}
  Hello {{ name }}!
{% endtrans %}

Twig में टिप्पणियाँ (Comments)

{# यहाँ टिप्पणी लिखें #}

If कथन

हालाँकि Twig में PHP की सभी क्षमताएँ नहीं हैं, लेकिन इसमें वेरिएबल्स और ऐरेज़ के साथ काम करने के लिए आवश्यक संरचनाएँ मौजूद हैं। उदाहरण के लिए, हम किसी वेरिएबल को प्रदर्शित करने से पहले जाँच सकते हैं कि वह मौजूद है या नहीं:

{% if site_slogan %}
  <div class="site-slogan">{{ site_slogan }}</div>
{% endif %}

Twig लूप (Loop)

अक्सर टेम्पलेट्स में किसी ऐरे को दोहराकर (iterate करके) प्रत्येक आइटम प्रदर्शित करने की आवश्यकता होती है। इसके लिए Twig में हम for लूप का उपयोग करते हैं (PHP के foreach के समान):

{% for item in items %}
  {{ item.content }}
{% endfor %}

हम for लूप को PHP के पारंपरिक for लूप की तरह भी उपयोग कर सकते हैं, बस थोड़ा अलग रूप में:

{% for i in range(0, 3) %}
  {{ i }},
{% endfor %}
वेरिएबल विवरण
items.index वर्तमान आइटम का क्रमांक (1 से शुरू)
items.index0 वर्तमान आइटम का क्रमांक (0 से शुरू)
items.revindex अंत से गिनते हुए वर्तमान आइटम का क्रमांक (1 से शुरू)
items.revindex0 अंत से गिनते हुए वर्तमान आइटम का क्रमांक (0 से शुरू)
items.first TRUE यदि यह पहला आइटम है
items.last TRUE यदि यह अंतिम आइटम है
items.length ऐरे की लंबाई
items.parent पैरेंट संदर्भ

हम for else संरचना का भी उपयोग कर सकते हैं:

<ul>
{% for user in users %}
  <li>{{ user.username|e }}</li>
{% else %}
  <li><em>कोई उपयोगकर्ता नहीं मिला</em></li>
{% endfor %}
</ul>