logo

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

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

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

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

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

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

स्क्रॉल

कस्टम मॉड्यूल के लिए कस्टम Twig टेम्पलेट्स बनाना

02/10/2025, by Ivan

Menu

Drupal 8 में मुख्य विचार यह है कि आप अपने कस्टम मॉड्यूल के PHP कोड में सीधे HTML बनाने से बचना चाहते हैं। आप चाहते हैं कि यह HTML Twig टेम्पलेट्स में जाए। अपने मॉड्यूल में नए Twig टेम्पलेट्स बनाने के लिए नीचे दिए गए चरणों का पालन करें।

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

function test_twig_theme($existing, $type, $theme, $path) {
  return [
    'my_template' => [
      'variables' => ['test_var' => NULL],
    ],
  ];
}

देखें hook_theme() डाक्यूमेंटेशन.

चरण № 2: टेम्पलेट कॉल करना
उस स्थान पर, जहाँ आप अपना render array रिटर्न करते हैं (जैसे कि कंट्रोलर मेथड से, जिसे आपके router yml फ़ाइल से कॉल किया जाता है, या कहीं और), Twig टेम्पलेट कॉल करें। नीचे एक टेस्ट मॉड्यूल का उदाहरण दिया गया है, जो routing yml फ़ाइल से कॉल किया जाता है।

/**
 * @file
 * Contains \Drupal\test_twig\Controller\TestTwigController.
 */
 
namespace Drupal\test_twig\Controller;
 
use Drupal\Core\Controller\ControllerBase;
 
class TestTwigController extends ControllerBase {
  public function content() {
 
    return [
      '#theme' => 'my_template',
      '#test_var' => $this->t('Test Value'),
    ];
 
  }
}

आप रेंडरिंग मेथड का उपयोग भी कर सकते हैं ताकि आउटपुट को जेनरेट किया जा सके, यदि आपको इसे अपने कोड में किसी अन्य वर्कफ़्लो के हिस्से के रूप में उपयोग करना हो:

$renderable = [
  '#theme' => 'my_template',
  '#test_var' => 'test variable',
];
$rendered = \Drupal::service('renderer')->renderPlain($renderable);

ध्यान रखें कि यह एक बेसिक इम्प्लीमेंटेशन है, जो कोई caching नहीं करता। Render API Overview डॉक्युमेंट में अधिक जानकारी है कि आप इसमें caching कैसे जोड़ सकते हैं। ध्यान देने योग्य बात यह है कि वेरिएबल नाम cache हो जाते हैं, और यदि आप उन्हें बदलते हैं (जैसे «test_var» से «my_var»), तो आपको cache रीफ़्रेश करना होगा।

चरण № 3: Twig टेम्पलेट बनाएँ
अपने मॉड्यूल की templates फ़ोल्डर के अंदर एक Twig टेम्पलेट फ़ाइल बनाएँ। फ़ाइल का नाम वही होना चाहिए जो आपने hook_theme() में परिभाषित किया है (अंडरस्कोर को डैश से बदलें)। इस उदाहरण में, फ़ाइल का नाम होगा my-template.html.twig
यहाँ टेस्ट करने के लिए उपयोग की गई फ़ाइल का उदाहरण है:

<p>Test twig template!</p>
 
<p>test_var: {{ test_var }}</p>

इसका लाभ यह है कि यदि आपके मॉड्यूल में टेम्पलेट फ़ाइल परिभाषित है और वही फ़ाइल आपकी थीम में मौजूद नहीं है, तो Drupal आपके मॉड्यूल की फ़ाइल का उपयोग करेगा। बस फ़ाइल को अपनी थीम की templates फ़ोल्डर में रखें, cache को रीबिल्ड करें (drush cache-rebuild), और यह उस फ़ाइल को पढ़ लेगा।

आप फ़ाइल को थीम की किसी भी सब-फ़ोल्डर में रख सकते हैं ताकि सब कुछ व्यवस्थित रहे।