logo

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

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

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

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

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

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

स्क्रॉल

Drupal मॉड्यूल में प्रोग्रामेटिक रूप से पेज बनाना

04/10/2025, by Ivan

Menu

Drupal में एक साधारण पेज बनाने के दो चरण होते हैं:

पथ और उसके параметры घोषित करें।

इस चरण में पेज का शीर्षक, पेज तक पहुँच की आवश्यकताएँ और अन्य शामिल होते हैं।

Drupal 7 में आपको hook_menu() को реализ करना होता था।

Drupal 8 में मॉड्यूल की रूट डायरेक्टरी में <module_name>.routing.yml फ़ाइल बनाएँ।

पेज का बॉडी लौटाने के लिए कोड लिखें।

Drupal 7 में आपको hook_menu() में निर्दिष्ट पेज callback फ़ंक्शन लिखना होता था।

Drupal 8 में पेज callback या तो किसी क्लास का मेथड होना चाहिए या फिर रजिस्टर्ड सर्विस। यह विभिन्न स्थितियों (HTTP या HTTPS, कंटेंट हेडर्स आदि) पर निर्भर कर सकता है, लेकिन यह इस परिचय के दायरे से बाहर है।

प्रक्रिया

इस पेज के उदाहरण का पालन करके, आप अपने कस्टम मॉड्यूल में एक साधारण पेज बना सकेंगे, बिना Drupal की आंतरिक संरचना के बारे में ज्यादा जाने। अधिक जानकारी के लिए चेंजलॉग देखें, जिसमें राउटिंग सिस्टम में बदलाव और कोर व प्रोजेक्ट उदाहरणों में विभिन्न इम्प्लीमेंटेशन दिए गए हैं।

उदाहरण मॉड्यूल के लिए राउटिंग YAML फ़ाइल

राउटिंग जानकारी example/example.routing.yml में रखी जाती है:

example.my_page:
  path: '/mypage/page'
  defaults:
    _controller: '\Drupal\example\Controller\ExampleController::myPage'
    _title: 'My first page in D8'
  requirements:
    _permission: 'access content'

example.my_page

  • यह रूट का मशीन-नाम है। परंपरा के अनुसार रूट मशीन नाम module_name.sub_name होने चाहिए। जब कोड के अन्य भाग रूट को संदर्भित करेंगे, तो वे मशीन-नाम का उपयोग करेंगे।

path

  • यह आपकी साइट पर पेज का पथ देता है। ध्यान दें कि यह स्लैश (/) से शुरू होता है।

defaults

  • यह पेज और शीर्षक के callback को बताता है। @todo: ये डिफ़ॉल्ट मान कहाँ override किए जा सकते हैं?

requirements

  • यह निर्धारित करता है कि किन शर्तों पर पेज प्रदर्शित होगा। आप permissions, आवश्यक मॉड्यूल और अन्य शर्तें निर्दिष्ट कर सकते हैं।

उदाहरण मॉड्यूल के लिए पेज का इम्प्लीमेंटेशन

Controller क्लास ExampleController को example/src/Controller/ExampleController.php में परिभाषित किया जाना चाहिए:

<?php
namespace Drupal\example\Controller;

use Drupal\Core\Controller\ControllerBase;

/**
 * Provides route responses for the Example module.
 */
class ExampleController extends ControllerBase {

  /**
   * Returns a simple page.
   *
   * @return array
   *   A simple renderable array.
   */
  public function myPage() {
    $element = array(
      '#markup' => 'Hello, world',
    );
    return $element;
  }

}

namespace (नामस्थान)

  • यह prefix घोषित करता है, जो हमारे परिभाषित किए गए क्लास के नाम को पूर्ण रूप से परिभाषित करने के लिए आवश्यक है। डॉकब्लॉक और क्लास नाम की तुलना करें। क्लास ऑटोलोडर जानता है कि \Drupal\example\Controller\ExampleController क्लास को खोजने के लिए उसे modules/example/src/Controller/ExampleController.php फ़ाइल देखनी होगी।

use

  • यह हमें पूर्ण नाम लिखने के बजाय ControllerBase उपयोग करने देता है। इससे हमारी class लाइन पढ़ने में बहुत आसान हो जाती है।

myPage()

  • YAML फ़ाइल में निर्दिष्ट मेथड public होना चाहिए। इसे renderable array लौटाना चाहिए।