
किसी विशेष एलिमेंट के लिए कौन सा टेम्पलेट मार्कअप जनरेट कर रहा है, यह जानने के लिए आप Twig की बिल्ट-इन debug ऑप्शन का उपयोग कर सकते हैं। यह पैरामीटर HTML-कमेंट्स को रेंडर्ड आउटपुट के साथ दिखाएगा, जिसमें इस्तेमाल किए गए थीम हुक, सुझाए गए टेम्पलेट फ़ाइल नाम और सटीक Twig फ़ाइल शामिल होगी, जो आपके लेआउट के किसी हिस्से को रेंडर करने में प्रयोग हुई है।


Twig में फ़िल्टर्स का उपयोग वेरिएबल्स को बदलने के लिए किया जा सकता है। फ़िल्टर को वेरिएबल से पाइप (|) सिंबल द्वारा अलग किया जाता है। इनके साथ वैकल्पिक आर्ग्युमेंट्स भी हो सकते हैं। कई फ़िल्टर्स को एक साथ चेन किया जा सकता है। एक फ़िल्टर का आउटपुट अगले फ़िल्टर के इनपुट के रूप में उपयोग होता है।
उदाहरण:
{{ content|safe_join(", ")|lower }}
कभी-कभी आपको फ़िल्टर लगाने से पहले किसी एलिमेंट को render करना पड़ सकता है:


Twig कई उपयोगी फ़ंक्शंस प्रदान करता है, जिन्हें आप सीधे टेम्पलेट्स में उपयोग कर सकते हैं।
Drupal core कुछ अतिरिक्त कस्टम फ़ंक्शंस जोड़ता है, जो Drupal के लिए विशेष होते हैं। ये TwigExtension क्लास में परिभाषित हैं।


Twig की आधिकारिक डाक्यूमेंटेशन से: «मैक्रोज़ सामान्य प्रोग्रामिंग भाषाओं में फ़ंक्शंस के समान होते हैं। ये बार-बार उपयोग होने वाले HTML पैटर्न को पुन: प्रयोज्य (reusable) एलिमेंट्स में रखने के लिए उपयोगी हैं, ताकि कोड को दोहराना न पड़े»।
{% macro input(name, value, type, size) %} <input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" /> {% endmacro %}
मैक्रोज़ PHP की नैटिव फ़ंक्शंस से कुछ तरीकों से अलग होते हैं:


Drupal 8 थीमिंग को अधिकतम परफ़ॉर्मेंस देने और Twig टेम्पलेट्स में बेहतर कस्टमाइज़ेशन विकल्प सुनिश्चित करने के लिए नीचे दिए गए सुझावों का पालन करें:


Drupal 8 में मुख्य विचार यह है कि आप अपने कस्टम मॉड्यूल के PHP कोड में सीधे HTML बनाने से बचना चाहते हैं। आप चाहते हैं कि यह HTML Twig टेम्पलेट्स में जाए। अपने मॉड्यूल में नए Twig टेम्पलेट्स बनाने के लिए नीचे दिए गए चरणों का पालन करें।
चरण № 1: .module फ़ाइल में hook_theme परिभाषित करें
यदि [module].module फ़ाइल अभी तक मौजूद नहीं है, तो उसे बनाएँ और कोड जोड़ें, जो आपके प्रत्येक Twig टेम्पलेट को परिभाषित करता है। एरे (array) के प्रत्येक एलिमेंट की कुंजी वही होगी, जिसे बाद में टेम्पलेट को कॉल करने के लिए उपयोग करना होगा। फ़ाइल नाम में डैश का उपयोग न करें।


Twig टेम्पलेट्स को निम्नलिखित सिंटैक्स का उपयोग करके विस्तारित (extend) किया जा सकता है:
{% extends 'html.twig' %}
अधिक जानकारी के लिए देखें: https://symfony.com/doc/current/templates.html#template-inheritance-and-layouts


सब-थीम्स, किसी भी अन्य थीम की तरह ही होती हैं, केवल एक अंतर के साथ: वे अपनी पैरेंट थीम के संसाधनों (resources) को इनहेरिट करती हैं। सब-थीम्स और उनकी पैरेंट थीम्स को जोड़ने वाली चेन (श्रृंखला) की संभावनाओं पर कोई सीमा नहीं है। एक सब-थीम किसी दूसरी सब-थीम की चाइल्ड हो सकती है, और इसे आपकी ज़रूरत के अनुसार ब्रांच और ऑर्गनाइज़ किया जा सकता है। यही बात सब-थीम्स को बड़ी शक्ति देती है।
सब-थीम बनाने के लिए, उसे किसी अन्य थीम की तरह ही परिभाषित करें और


Classy — यह Drupal 8 की एक बेस थीम है और वही बेस थीम है जिसे Bartik और Seven उपयोग करते हैं। Classy (और इसकी सब-थीम्स) में मौजूद HTML मार्कअप में ऐसे CSS क्लासेस होते हैं, जो BEM और SMACSS CSS नामकरण कन्वेंशन्स के समान संरचित होते हैं।
हालाँकि Classy द्वारा विकसित BEM / SMACSS स्टाइल नामकरण कन्वेंशन्स बहुत प्रभावी हैं और कई सुविधाएँ प्रदान करते हैं, लेकिन वे हर प्रोजेक्ट के लिए उपयुक्त नहीं होते। जो डेवलपर्स Classy के CSS क्लासेस में रुचि नहीं रखते, वे किसी दूसरी बेस थीम को चुन सकते हैं।


Drupal8 RC 2 की Classy थीम में मौजूद सभी CSS क्लास सेलेक्टर्स को डॉक्युमेंट करें।
फॉर्मेट:
.foo { }
.foo-bar { }
filename.html.twig / filename.css
Twig - Classy थीम में उपलब्ध CSS सेलेक्टर्स:
LAYOUT
Body
.user-logged-in { }
.path-frontpage { }
.path-[root_path] { }
.node--type-[node_type] { }
.db-offline { }
.visually-hidden { }
.focusable { }
.skip-link { }
फ़ाइल: html.html.twig
