logo

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

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

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

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

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

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

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

Menu

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

पिछले पेज वाले HelloBlock क्लास में, इन «use» स्टेटमेंट्स को मौजूदा वाले के बाद जोड़ें:

use Drupal\Core\Block\BlockPluginInterface;
use Drupal\Core\Form\FormStateInterface;

क्लास घोषणा को अपडेट करें ताकि यह नया "BlockPluginInterface" इम्प्लीमेंटेशन शामिल हो:

class HelloBlock extends BlockBase implements BlockPluginInterface {

इसके बाद क्लास में निम्नलिखित मेथड जोड़ें। इसी तरह की पूरी फ़ाइल यहाँ उपलब्ध है, लेकिन ध्यान दें कि फ़ॉर्म का नाम और कॉन्फ़िगरेशन के नाम इस गाइड के साथ मेल नहीं खाते।

यह कोड केवल फ़ॉर्म जोड़ता है, फ़ॉर्म प्रोसेसिंग और परिणाम सेविंग अगले पन्नों पर आएगी।

  /**
   * {@inheritdoc}
   */
  public function blockForm($form, FormStateInterface $form_state) {
    $form = parent::blockForm($form, $form_state);

    $config = $this->getConfiguration();

    $form['hello_block_name'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Who'),
      '#description' => $this->t('Who do you want to say hello to?'),
      '#default_value' => isset($config['hello_block_name']) ? $config['hello_block_name'] : '',
    ];

    return $form;
  }

इस उदाहरण में, फ़ॉर्म पहले उसके पेरेंट क्लास से संदर्भित किया जाता है इस कोड स्टेटमेंट के माध्यम से: $form = parent::blockForm($form, $form_state);. इसके बाद हम फ़ॉर्म में एक नया फ़ील्ड जोड़ते हैं। इस प्रक्रिया को पॉलीमॉर्फ़िज़्म कहा जाता है और यह ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) मेथड्स का उपयोग करने के महत्वपूर्ण फायदों में से एक है।

इसके बाद हमें Drupal को बताना होगा कि हमारी फ़ॉर्म से वैल्यूज़ को इस ब्लॉक की कॉन्फ़िगरेशन में सेव करे। उदाहरण:

  /**
   * {@inheritdoc}
   */
  public function blockSubmit($form, FormStateInterface $form_state) {
    parent::blockSubmit($form, $form_state);
    $values = $form_state->getValues();
    $this->configuration['hello_block_name'] = $values['hello_block_name'];
  }

फ़ॉर्म देखने के लिए, पहले जोड़ा गया ब्लॉक экземпляर खोलें: admin -> Structure -> Block Layout पर जाएं और (Hello World) ब्लॉक के लिए Configure पर क्लिक करें।

उसी फ़ॉर्म में कई सबमिट बटन जोड़ने के लिए:

  /**
   * {@inheritdoc}
   */
  public function blockForm($form, FormStateInterface $form_state) {
    $form = parent::blockForm($form, $form_state);

    $config = $this->getConfiguration();

    $form['hello_block_name'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Who'),
      '#description' => $this->t('Who do you want to say hello to?'),
      '#default_value' => isset($config['hello_block_name']) ? $config['hello_block_name'] : '',
    ];

    $form['actions']['custom_submit'] = [
      '#type' => 'submit',
      '#name' => 'custom_submit',
      '#value' => $this->t('Custom Submit'),
      '#submit' => [[$this, 'custom_submit_form']],
    ];    

    return $form;
  }

नया कस्टम सबमिट एक्शन:

  /**
   * Custom submit actions.
   */
  public function custom_submit_form($form, FormStateInterface $form_state) {
    $values = $form_state->getValues();
    // आवश्यक एक्शन करें।
  }