logo

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

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

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

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

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

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

स्क्रॉल
03/10/2025, by Ivan

Menu

Twig के बारे में

Twig एक PHP-आधारित कंपाइल्ड टेम्पलेट भाषा है। जब आपकी वेब-पेज रेंडर होती है, तो Twig इंजन टेम्पलेट लेता है और उसे एक “कंपाइल्ड” PHP टेम्पलेट में बदल देता है, जो सुरक्षित डायरेक्टरी sites/default/files/php/twig में संग्रहीत होता है। कंपाइलेशन केवल एक बार किया जाता है, टेम्पलेट फाइलें पुन: उपयोग के लिए कैश की जाती हैं और Twig कैश साफ़ होने पर फिर से कंपाइल की जाती हैं।

Drupal Twig पहल का उद्देश्य Symfony पहल जैसा ही है: एक आधुनिक, शक्तिशाली, OOP-आधारित इंजन को शामिल करना, जो डेवलपर्स को सही तरीके से Drupal पर ध्यान केंद्रित करने की अनुमति देता है।

1. Docblock

PHPTemplate:

<?php 
/** 
 * @file
 * File description
 */
?>

Twig:

{# 
/** 
 * @file
 * File description
 */
#}

2. फ़ाइल और फ़ंक्शन नाम

PHPTemplate फ़ाइल: node--article.tpl.php
Twig फ़ाइल: node--article.html.twig

PHPTemplate फ़ंक्शन: THEME_node_links()
Twig फ़ाइल: node-links.html.twig

3. वेरिएबल्स

वेरिएबल प्रिंट करना:

PHPTemplate: <div class="content"><?php print $content; ?></div>
Twig: <div class="content">{{ content }}</div>

हैश-की एलिमेंट प्रिंट करना [1]

PHPTemplate: <?php print $item['#item']['alt']; ?>
Twig: {{ item['#item'].alt }}

वेरिएबल असाइन करना:

PHPTemplate: <?php $custom_var = $content->comments; ?>
Twig: {% set custom_var = content.comments %}

Array असाइन करना:

PHPTemplate: <?php $args = array('@author' => $author, '@date' => $created); ?>
Twig: {% set args = {'@author': author, '@date': created} %}

4. शर्तें (Conditions)

PHPTemplate: <?php if ($content->comments): endif; ?>
Twig: {% if content.comments %} {% endif %}

PHPTemplate: <?php if (!empty($content->comments)): endif; ?>
Twig: {% if content.comments is not empty %} {% endif %}

PHPTemplate: <?php if (isset($content->comments)): endif; ?>
Twig: {% if content.comments is defined %} {% endif %}

PHPTemplate: <?php if ($count > 0): endif; ?>
Twig: {% if count > 0 %} {% endif %}

5. नियंत्रण संरचना (Control Structures)

PHPTemplate: <?php foreach ($users as $user) {} ?>
Twig: {% for user in users %} {% endfor %}

6. फ़िल्टर्स

HTML विशेष वर्णों को एस्केप करना:

PHPTemplate: <?php print check_plain($title); ?>
Twig[2]: {{ title }}

Raw मान:

PHPTemplate: <?php print $title; ?>
Twig: {{ title|raw }}

अनुवाद (Translate):

PHPTemplate: <?php print t('Home'); ?>
Twig: {{ 'Home'|t }}

Substitutions के साथ अनुवाद:

PHPTemplate: <?php print t('Welcome, @username', array('@username' => $user->name)); ?>
Twig: {{ 'Welcome, @username'|t({ '@username': user.name }) }}

Drupal 8 Twig ( trans टैग एक्सटेंशन के साथ):

{% set username = user.name %}
{% trans %}
  Welcome, {{ username }}
{% endtrans %}

सूची को जोड़ना:

PHPTemplate: <?php echo implode(',', $usernames); ?>
Twig: {{ usernames|join(', ') }}

मार्कअप के साथ सूची जोड़ना:

Twig: {{ usernames|safe_join(',') }}

PHPTemplate उदाहरण के लिए $usernames का स्ट्रिंग्स का array होना आवश्यक है। यही नियम मूल Twig उदाहरण पर लागू होता है। दूसरी ओर, Drupal 8 Twig उदाहरण को renderable objects के array की आवश्यकता होती है। यह वास्तव में Drupal 8 Twig और Original Twig के बीच एक मौलिक अंतर है। Drupal 8 Twig सरल टेक्स्ट और render arrays दोनों को "प्रिंट" करता है।

इस उदाहरण का एक अन्य पहलू यह है कि उम्मीद की जाती है कि सभी तीन उदाहरण समान आउटपुट देंगे, लेकिन ऐसा नहीं है (डिफ़ॉल्ट रूप से)। उदाहरण:

{% set numbers = [{'#markup': 'One'}, {'#markup':'Two'}, {'#markup':'Three'}] %}
{{ numbers }}

ऊपर का कोड मानता है कि तत्व कॉमा से प्रिंट होंगे। लेकिन आउटपुट है: OneTwoThree

7. व्हाइटस्पेस प्रबंधन

Twig में whitespace नियंत्रण होता है, जो टेम्पलेट फ़ाइल को संरचना देने के लिए उपयोग किए गए whitespace को हटाने की अनुमति देता है।

<div class="body">
  {{- block.content -}}
</div>

यह उसी तरह है:

<div class="body">{{ block.content }}</div>

ध्यान दें

  • हैश-की एलिमेंट का उदाहरण भविष्य में बदल सकता है
  • दूसरे उदाहरण में हम दिखाते हैं कि Twig डेटा सफाई के लिए जिम्मेदार है। पहले यह टेम्पलेट फ़ाइल या प्रीप्रोसेस फ़ंक्शन पर निर्भर था। यह बदलाव वास्तव में उन लोगों के लिए महत्वपूर्ण है जो Drupal 8 के लिए PHPTemplate थीम बनाना चाहते हैं — आपको अपने स्वयं के डेटा को साफ़ करना होगा। ↩︎︎

अधिक जानकारी के लिए देखें: