6.6. Drupal में टेम्पलेट्स के साथ काम करना। Drupal कोर में कौन-कौन से टेम्पलेट्स होते हैं।
हम पहले ही देख चुके हैं कि Drupal में Twig बिल्ट-इन आता है और इसे कैसे उपयोग किया जाता है। इस लेख में, हम Drupal टेम्पलेट्स के साथ काम करना सीखेंगे — Drupal की Stable थीम में कौन-कौन से टेम्पलेट्स होते हैं, उन्हें कैसे ओवरराइड किया जा सकता है, और विभिन्न Drupal एंटिटीज़ के टेम्पलेट्स को कैसे पुनर्परिभाषित (redefine) किया जा सकता है।
तो चलिए शुरू करते हैं Stable थीम के टेम्पलेट्स से। Stable थीम की templates फ़ोल्डर में जाएँ:
टेम्पलेट्स को उनकी कार्यात्मक श्रेणी (functional category) के अनुसार विभाजित किया गया है:
/core/themes/stable/templates/admin — Views UI, प्रशासनिक पेजों, संदेशों और रिपोर्टों के टेम्पलेट्स।
/core/themes/stable/templates/block — ब्लॉक टेम्पलेट्स।
/core/themes/stable/templates/content — नोड, टिप्पणी (comment), टैक्सोनॉमी टर्म, RSS आइटम और सर्च रिज़ल्ट्स के टेम्पलेट्स।
/core/themes/stable/templates/content-edit — एडिटिंग फॉर्म और फ़िल्टर टेम्पलेट्स।
/core/themes/stable/templates/dataset — फ़ोरम, RSS चैनल, तालिकाओं और लिस्ट (ul
) के टेम्पलेट्स।
/core/themes/stable/templates/field — विभिन्न प्रकार के फ़ील्ड टेम्पलेट्स।
/core/themes/stable/templates/form — फ़ॉर्म एलिमेंट्स (विभिन्न प्रकार के फ़ील्ड्स) के टेम्पलेट्स।
/core/themes/stable/templates/layout — पेज संरचना (page.html.twig
), रीजन, और मुख्य HTML टेम्पलेट (html.html.twig
) जो अन्य सभी टेम्पलेट्स को लोड करता है।
/core/themes/stable/templates/misc — RSS, RDF मार्कअप आइकन, Drupal संदेश और प्रोग्रेस बार के टेम्पलेट्स।
/core/themes/stable/templates/navigation — मेनू, बुक मॉड्यूल, पेजर, टूलबार, वर्टिकल टैब्स और ब्रेडक्रंब्स के टेम्पलेट्स।
/core/themes/stable/templates/user — उपयोगकर्ता पेज, उपयोगकर्ता नाम, और फ़ोरम पोस्ट के लेखक की जानकारी वाले टेम्पलेट्स।
/core/themes/stable/templates/views — Views मॉड्यूल के विभिन्न एलिमेंट्स के टेम्पलेट्स।
जैसा कि आप देख सकते हैं, Stable थीम Drupal के टेमिंग सिस्टम के लिए बहुत विस्तृत टेम्पलेट सेट प्रदान करती है। इन टेम्पलेट्स को पुनर्परिभाषित (override) करने के लिए, बस आवश्यक टेम्पलेट को अपनी सबथीम में कॉपी करें और वहां अपनी आवश्यकता अनुसार बदलें। आप सभी टेम्पलेट्स कॉपी कर सकते हैं, लेकिन सलाह दी जाती है कि केवल उन्हीं टेम्पलेट्स को कॉपी करें जिनमें बदलाव की आवश्यकता है।
कंटेंट टेम्पलेट्स को ओवरराइड करना (Template Suggestions)
आप न केवल मौजूदा टेम्पलेट्स को ओवरराइड कर सकते हैं, बल्कि विभिन्न नोड्स, टैक्सोनॉमी टर्म्स, ब्लॉक्स आदि के लिए अपने कस्टम टेम्पलेट्स भी जोड़ सकते हैं। नीचे कुछ उदाहरण दिए गए हैं।
HTML टेम्पलेट
HTML टेम्पलेट में पेज की बेसिक HTML संरचना होती है।
मुख्य टेम्पलेट: html.html.twig (स्थान: core/modules/system/templates/html.html.twig)
इस टेम्पलेट को ओवरराइड करने के कुछ उदाहरण:
- html--internalviewpath.html.twig
- html--node--id.html.twig
- html.html.twig
यहां internalviewpath Drupal का आंतरिक पथ होता है, जैसे node/15, taxonomy/term/46, user/2 आदि।
अधिक जानकारी के लिए देखें html.html.twig दस्तावेज़।
Page टेम्पलेट
ओवरराइड विकल्प: page--[front|internal/path].html.twig
मुख्य टेम्पलेट: page.html.twig (स्थान: core/modules/system/templates/page.html.twig)
पेज टेम्पलेट्स के कई प्रकार हो सकते हैं। होमपेज का टेम्पलेट उच्च प्राथमिकता पर होता है, जबकि अन्य टेम्पलेट्स आंतरिक पथों पर निर्भर करते हैं।
उदाहरण: यदि एड्रेस है http://example.com/node/1/edit
, तो आप निम्न टेम्पलेट्स का उपयोग कर सकते हैं:
page--node--edit.html.twig
page--node--1.html.twig
page--node.html.twig
page.html.twig
अधिक जानकारी के लिए देखें page.html.twig।
Regions
ओवरराइड विकल्प: region--[region].html.twig
मुख्य टेम्पलेट: region.html.twig (स्थान: core/modules/system/templates/region.html.twig)
Region टेम्पलेट ब्लॉक सिस्टम या hook_page_build() के माध्यम से बनाए गए रीजन की सामग्री को प्रदर्शित करने के लिए उपयोग किया जाता है। आप अपने .info.yml फ़ाइल में रीजन के नाम परिभाषित कर सकते हैं।
Blocks
ओवरराइड विकल्प: block--[module|--delta].html.twig
मुख्य टेम्पलेट: block.html.twig (स्थान: core/modules/block/templates/block.html.twig)
- block--module--delta.html.twig
- block--module.html.twig
- block.html.twig
यहां ‘module’ ब्लॉक प्रदर्शित करने वाले मॉड्यूल का नाम है और ‘delta’ ब्लॉक का आंतरिक ID है।
उदाहरण के लिए, block--block--1.html.twig उपयोगकर्ता द्वारा जोड़ा गया पहला ब्लॉक है। यदि आपके पास एक कस्टम मॉड्यूल है और आपने एक ब्लॉक बनाया है जिसका delta "my-block" है, तो उसका टेम्पलेट होगा block--custom--my-block.html.twig।
Views मॉड्यूल के लिए ब्लॉक टेम्पलेट का नाम इस प्रकार बनता है:
block--views-block--front-news-block-1.html.twig
ध्यान दें कि underscores को hyphens से बदल दिया जाता है।
Nodes (सामग्री)
ओवरराइड विकल्प: node--[type|nodeid]--[viewmode].html.twig
मुख्य टेम्पलेट: node.html.twig (स्थान: core/modules/node/templates/node.html.twig)
ओवरराइड के उदाहरण:
- node--nodeid--viewmode.html.twig
- node--type--viewmode.html.twig
- node--type.html.twig
- node.html.twig
यहां type = सामग्री का प्रकार (जैसे Article, Page), nodeid = नोड का ID, और viewmode = डिस्प्ले मोड (Full, Teaser, RSS आदि)।
Taxonomy Terms
ओवरराइड विकल्प: taxonomy-term--[vocabulary-machine-name|tid].html.twig
मुख्य टेम्पलेट: taxonomy-term.html.twig (स्थान: core/modules/taxonomy/templates/taxonomy-term.html.twig)
underscores को hyphens से बदलना न भूलें।
Fields
ओवरराइड विकल्प: field--[type|name[--content-type]|content-type].html.twig
मुख्य टेम्पलेट: field.html.twig (स्थान: core/modules/system/templates/field.html.twig)
उदाहरण:
- field--field-name--content-type.html.twig
- field--content-type.html.twig
- field--field-type.html.twig
- field.html.twig
Comments
ओवरराइड विकल्प: comment--node-[type].html.twig
मुख्य टेम्पलेट: comment.html.twig (स्थान: core/modules/comment/templates/comment.html.twig)
उदाहरण: comment--node-article.html.twig
Views
हर View के लिए कम से कम दो टेम्पलेट उपयोग किए जाते हैं:
- views-view.html.twig
- डिस्प्ले स्टाइल के अनुसार जैसे views-view-unformatted.html.twig
यदि आप Fields के साथ Views का उपयोग कर रहे हैं, तो views-view-fields.html.twig टेम्पलेट का उपयोग होता है।
Forum
ओवरराइड विकल्प: forums--[[container|topic]--forumID].html.twig
मुख्य टेम्पलेट: forums.html.twig (स्थान: core/modules/forum/templates/forums.html.twig)
Maintenance Mode
ओवरराइड विकल्प: maintenance-page--[offline].html.twig
मुख्य टेम्पलेट: maintenance-page.html.twig (स्थान: core/modules/system/templates/maintenance-page.html.twig)
Search Results
ओवरराइड विकल्प: search-result--[searchType].html.twig
मुख्य टेम्पलेट: search-result.html.twig (स्थान: core/modules/search/templates/search-result.html.twig)
उदाहरण के लिए, यदि आप नोड्स पर सर्च कर रहे हैं:
/search/node/Search+Term → search-result--node.html.twig
यदि आप उपयोगकर्ताओं पर सर्च कर रहे हैं:
/search/user/bob → search-result--user.html.twig