
Drupal 7 के विपरीत, अपनी साइट पर ब्लॉक के कई экземпляर बनाना Drupal 8 में एक आसान कार्य है।
इस गाइड में आप सीखेंगे कि ब्लॉक लेआउट इंटरफ़ेस में प्रोग्रामेटिक रूप से ब्लॉक कैसे जोड़ा जाए। साथ ही, ब्लॉक में (एडमिनिस्ट्रेटिव) कॉन्फ़िगरेशन फ़ॉर्म कैसे जोड़ें और उसे कैसे प्रोसेस करें। अंत में, आप जानेंगे कि फ़ॉर्म के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन मान कैसे जोड़ें और प्रदर्शित करें।
इस स्टेप-बाय-स्टेप गाइड को शुरू करने से पहले, «मॉड्यूल का ढांचा तैयार करें» निर्देशों के अनुसार मॉड्यूल का स्केलेटन तैयार करें।


Drupal 8 में блок, ब्लॉक प्लगइन के экземпляर होते हैं।
Block Manager Drupal आपके मॉड्यूल्स को स्कैन करता है, ताकि ऐसे क्लास मिल सकें, जिनमें एनноटेशन @Block मौजूद हो।
नीचे दिया गया कोड उदाहरण @Block एनноटेशन का उपयोग करता है, जिसमें «id» और «admin_label» प्रॉपर्टीज़ के साथ एक कस्टम ब्लॉक को परिभाषित किया गया है।


अब मान लीजिए, हम चाहते हैं कि साइट बिल्डर को हर कस्टम ब्लॉक के प्रत्येक экземпляर के लिए कुछ कॉन्फ़िगरेशन दर्ज करने की सुविधा मिले। हमेशा ध्यान रखें कि Drupal 8 में साइट-बिल्डिंग कॉन्फ़िगरेशन को डेवलपमेंट साइट से एक्सपोर्ट किया जा सकता है और प्रोडक्शन साइट पर इम्पोर्ट किया जा सकता है (इसे कॉन्फ़िगरेशन प्रबंधन कहते हैं)। आप, मॉड्यूल बिल्डर के रूप में, डिफ़ॉल्ट कॉन्फ़िगरेशन भी प्रदान कर सकते हैं ताकि जब साइट बिल्डर नया ब्लॉक बनाए, तो फ़ॉर्म अपने-आप कुछ मानों से भरा हुआ हो।


HelloBlock
क्लास में निम्नलिखित मेथड जोड़ें। इस उदाहरण में, यह src/Plugin/Block/HelloBlock.php
फ़ाइल में स्थित है, लेकिन जैसे ही आप अधिक OOP-उन्मुख तरीके से सोचना शुरू करते हैं, फाइल स्ट्रक्चर में इसका भौतिक स्थान नामस्थान (namespace) की तुलना में कम महत्वपूर्ण होता है। यदि आप एक अनुभवी OO प्रोग्रामर हैं, तो आप दोनों को बहुत निकटता से संरेखित रखेंगे। लेकिन एहतियात के तौर पर, नामस्थान—जो मॉड्यूल के फोल्डर नाम और मशीन नाम से बहुत मिलता-जुलता है, जैसा कि हमने पहले मॉड्यूल की चर्चा में किया था—बाद में महत्वपूर्ण होगा जब आप प्रोग्रामेटिक रूप से अपने मॉड्यूल के कोड के सा


ब्लॉक इंस्टैंस की कॉन्फ़िगरेशन का उपयोग करने के लिए, мы HelloBlock класса के build() метод को इस तरह बदल सकते हैं:
/** * {@inheritdoc} */ public function build() { $config = $this->getConfiguration(); if (!empty($config['hello_block_name'])) { $name = $config['hello_block_name']; } else { $name = $this->t('to no one'); } return [ '#markup' => $this->t('Hello @name!', [ '@name' => $name, ]), ]; }


Часть V из Практического руководства по созданию базовых модулей Drupal 8
От .info к тестам, только основы
याद है, इस урока की शुरुआत में मैंने कहा था कि हम форму वाले блока को определим? तो, अब समय है इसे विस्तार से देखने का।


यह गाइड Drupal 8 में अपना कस्टम फ़ील्ड टाइप, विजेट और फ़ॉर्मैटर बनाने के लिए ट्यूटोरियल्स शामिल करता है।


यह ट्यूटोरियल मूल रूप से Web Wash पर प्रकाशित किया गया था। हालाँकि, Berdir ने पूछा कि क्या मैं इसे यहाँ साझा कर सकता हूँ, तो लीजिए यह यहाँ है।
Drupal 7 में एक मॉड्यूल है जो कोड स्निपेट्स को फील्ड में स्टोर करने की अनुमति देता है। इसमें एक कस्टम फील्ड होता है जिसका नाम है "Snippets Field" और यह तीन फॉर्म एलिमेंट्स दिखाता है: विवरण (description), सोर्स कोड और सिंटैक्स हाइलाइटिंग मोड (कौन-सी प्रोग्रामिंग लैंग्वेज)।
लेकिन अब समय है इस मॉड्यूल को Drupal 8 में अपडेट करने का।


Drupal 8 में, सभी फील्ड टाइप्स, विजेट्स और फॉर्मैटर्स प्लगइन्स होते हैं।
अगर इन्हें सही डायरेक्टरी स्ट्रक्चर में रखा जाए और सही एनोटेशन का उपयोग किया जाए, तो ये अपने-आप खोजे (discover) जाते हैं।
किसी मॉड्यूल का डायरेक्टरी स्ट्रक्चर, जिसमें तीनों (फील्ड टाइप, फील्ड विजेट और फील्ड फॉर्मैटर) शामिल हों, कुछ इस प्रकार दिखेगा:
foo_bar_fields


फील्ड टाइप्स फील्ड्स की प्रॉपर्टीज़ और बिहेवियर को परिभाषित करते हैं। फील्ड टाइप्स को प्लगइन्स के रूप में परिभाषित किया जाता है, इसलिए नया फील्ड टाइप लिखने से पहले प्लगइन API से परिचित होना अनुशंसित है।
Drupal 8 में फील्ड टाइप बनाने के लिए, आपको FieldType
एनोटेशन के साथ एक क्लास की आवश्यकता होगी।
