Skill

Custom মডিউল ডেভেলপমেন্ট

ড্রুপাল (Drupal) - Web Development

222

ড্রুপাল (Drupal) একটি অত্যন্ত নমনীয় কনটেন্ট ম্যানেজমেন্ট সিস্টেম (CMS), যা বিভিন্ন ধরণের কাস্টম ফিচার তৈরি করার জন্য মডিউল ব্যবহারের সুযোগ দেয়। ড্রুপালে কাস্টম মডিউল ডেভেলপমেন্ট এর মাধ্যমে আপনি সাইটের কার্যকারিতা বাড়াতে, নতুন ফিচার যোগ করতে এবং সাইটের জন্য কাস্টমাইজড ফাংশনালিটি তৈরি করতে পারেন। এই টিউটোরিয়ালে আমরা ড্রুপালে কাস্টম মডিউল ডেভেলপমেন্ট সম্পর্কে বিস্তারিতভাবে আলোচনা করব।


কাস্টম মডিউল ডেভেলপমেন্ট: একটি পরিচিতি

ড্রুপালে কাস্টম মডিউল তৈরি করার জন্য PHP এবং ড্রুপালের API জ্ঞান প্রয়োজন হয়। আপনি যখন একটি কাস্টম মডিউল তৈরি করেন, তখন আপনি নতুন ফিচার, হুকস, ইভেন্ট হ্যান্ডলার ইত্যাদি যুক্ত করতে পারেন যা ড্রুপাল সাইটের কার্যকারিতা বাড়ায়।


কাস্টম মডিউল ডেভেলপমেন্টের প্রাথমিক পদক্ষেপ

১. মডিউল ফোল্ডার তৈরি করা

প্রথমে আপনাকে একটি কাস্টম মডিউল তৈরি করার জন্য একটি নতুন ফোল্ডার তৈরি করতে হবে:

  • আপনার ড্রুপাল সাইটের /modules/custom/ ডিরেক্টরিতে যান।
  • এখানে একটি নতুন ফোল্ডার তৈরি করুন, উদাহরণস্বরূপ my_module.
/modules/custom/my_module

২. মডিউল ইনফো ফাইল তৈরি করা

ড্রুপালের প্রতিটি মডিউল একটি ইনফো ফাইলের মাধ্যমে সিস্টেমে নিবন্ধিত হয়। কাস্টম মডিউলের জন্য একটি .info.yml ফাইল তৈরি করতে হবে। উদাহরণস্বরূপ, my_module.info.yml নামে একটি ফাইল তৈরি করুন এবং এটি আপনার ফোল্ডারে রাখুন:

name: 'My Custom Module'
type: module
description: 'A custom module to add new features.'
core_version_requirement: ^8 || ^9
package: Custom
dependencies:
  - drupal:drupal

বিভিন্ন ইনফো ফাইলের উপাদান:

  • name: মডিউলের নাম
  • type: মডিউলের ধরন (module)
  • description: মডিউলের সংক্ষিপ্ত বর্ণনা
  • core_version_requirement: ড্রুপালের ভার্সন কনফিগারেশন
  • package: মডিউলের প্যাকেজ, যেমন Custom (এটি ড্রুপাল অ্যাডমিন প্যানেলে সজ্জিত হবে)
  • dependencies: মডিউলের ডিপেন্ডেন্সি

৩. মডিউল ফাইল তৈরি করা

মডিউলের কার্যকারিতা কোডের জন্য একটি .module ফাইল তৈরি করুন। এই ফাইলটি কাস্টম ফাংশন এবং হুকস ধারণ করবে। উদাহরণস্বরূপ, my_module.module নামে একটি ফাইল তৈরি করুন:

<?php

/**
 * Implements hook_help().
 */
function my_module_help($route_name) {
  switch ($route_name) {
    case 'help.page.my_module':
      return t('This is a custom module that adds new features to the site.');
  }
}

/**
 * Implements hook_menu().
 */
function my_module_menu() {
  $items = array();

  $items['admin/config/my_module'] = array(
    'title' => 'My Custom Settings',
    'page callback' => 'my_module_page',
    'page arguments' => array(),
    'access callback' => 'user_access',
    'access arguments' => array('administer site configuration'),
    'type' => MENU_CALLBACK,
  );

  return $items;
}

/**
 * Page callback function.
 */
function my_module_page() {
  return 'This is the custom settings page for my module.';
}

এই উদাহরণে:

  • hook_help(): ড্রুপালের হেল্প সিস্টেমে কাস্টম হেল্প পৃষ্ঠা যোগ করে।
  • hook_menu(): একটি নতুন URL পাথ (admin/config/my_module) তৈরি করে এবং সেখান থেকে কাস্টম পৃষ্ঠা প্রদর্শন করতে সক্ষম করে।

৪. কাস্টম ফাংশন এবং হুকস

ড্রুপাল অনেক হুকস সরবরাহ করে, যা আপনাকে ড্রুপালের কার্যক্রমের সাথে ইন্টারঅ্যাক্ট করতে সাহায্য করে। উদাহরণস্বরূপ, ড্রুপাল hook_node_insert(), hook_form_FORM_ID_alter() ইত্যাদি হুকস প্রদান করে যা দিয়ে আপনি সাইটের কন্টেন্ট এবং ফর্মের আচরণ নিয়ন্ত্রণ করতে পারেন।

উদাহরণ:

/**
 * Implements hook_node_insert().
 */
function my_module_node_insert($node) {
  if ($node->type == 'article') {
    // Add a custom message when an article is added.
    drupal_set_message(t('A new article has been added.'));
  }
}

৫. মডিউল ইনস্টল করা এবং সক্রিয় করা

মডিউল তৈরি এবং কোডিং শেষ হলে, আপনি ড্রুপাল অ্যাডমিন প্যানেল থেকে এটি ইনস্টল এবং সক্রিয় করতে পারবেন:

  1. Admin Menu → Extend তে গিয়ে আপনার মডিউলটি খুঁজে বের করুন।
  2. চেকবক্স টিক করে Install বাটনে ক্লিক করুন।

কাস্টম মডিউলে কনফিগারেশন ফর্ম তৈরি করা

ড্রুপালে কাস্টম কনফিগারেশন ফর্ম তৈরি করতে, আপনি Form API ব্যবহার করতে পারেন।

উদাহরণ:

/**
 * Implements hook_menu().
 */
function my_module_menu() {
  $items = array();

  $items['admin/config/my_module/settings'] = array(
    'title' => 'My Module Settings',
    'page callback' => 'my_module_settings_page',
    'page arguments' => array(),
    'access callback' => 'user_access',
    'access arguments' => array('administer site configuration'),
    'type' => MENU_CALLBACK,
  );

  return $items;
}

/**
 * Callback function for the settings page.
 */
function my_module_settings_page() {
  $form = drupal_get_form('my_module_settings_form');
  return drupal_render($form);
}

/**
 * Define the form for the settings page.
 */
function my_module_settings_form($form, &$form_state) {
  $form['my_custom_setting'] = array(
    '#type' => 'textfield',
    '#title' => t('Custom Setting'),
    '#default_value' => variable_get('my_custom_setting', ''),
    '#description' => t('This is a custom setting for the module.'),
  );

  $form['#submit'][] = 'my_module_settings_form_submit';

  return $form;
}

/**
 * Submit handler for the settings form.
 */
function my_module_settings_form_submit($form, &$form_state) {
  variable_set('my_custom_setting', $form_state['values']['my_custom_setting']);
}

এই কোডে:

  • hook_menu() কাস্টম পৃষ্ঠার URL এবং ফর্ম কনফিগার করে।
  • Form API ব্যবহার করে কাস্টম ফর্ম তৈরি এবং কনফিগার করা হয়।

কাস্টম মডিউল ডেভেলপমেন্টের জন্য কিছু টিপস

  1. ড্রুপাল API এবং হুকস ব্যবহার করুন: ড্রুপালে কাস্টম মডিউল তৈরি করার সময় ড্রুপালের API এবং হুকস সম্পর্কে ভাল ধারণা থাকা জরুরি।
  2. ডিবাগিং করুন: ড্রুপালে Devel Module ব্যবহার করে ডিবাগিং করতে পারেন।
  3. পার্থক্য নিশ্চিত করুন: কাস্টম মডিউল ডেভেলপ করার সময় ড্রুপাল কোর এবং থিমের ফিচারের সাথে পার্থক্য নিশ্চিত করতে হবে।

উপসংহার

ড্রুপালে কাস্টম মডিউল ডেভেলপমেন্ট একটি শক্তিশালী এবং নমনীয় পদ্ধতি যার মাধ্যমে আপনি আপনার সাইটের কার্যকারিতা বাড়াতে পারবেন। মডিউল তৈরির জন্য ড্রুপাল API, হুকস, ফর্ম API ইত্যাদি ব্যবহারের মাধ্যমে কাস্টম ফিচার তৈরি করতে পারেন। মডিউল ডেভেলপমেন্টের সময় কোডিংয়ের সঠিক শুদ্ধতা, ডিবাগিং, এবং সিকিউরিটি বিষয়গুলি নিশ্চিত করতে হবে।

Content added By

ড্রুপাল (Drupal) একটি ওপেন সোর্স কনটেন্ট ম্যানেজমেন্ট সিস্টেম (CMS), যা অত্যন্ত কাস্টমাইজযোগ্য এবং মডুলার। এর মডিউল সিস্টেমের মাধ্যমে আপনি ড্রুপালের কার্যকারিতা এবং বৈশিষ্ট্যগুলি কাস্টমাইজ বা বাড়াতে পারেন। আপনি যদি ড্রুপালে নিজস্ব কাস্টম ফিচার তৈরি করতে চান, তাহলে কাস্টম মডিউল ডেভেলপমেন্ট একটি গুরুত্বপূর্ণ প্রক্রিয়া।

এই টিউটোরিয়ালে, আমরা ড্রুপাল কাস্টম মডিউল ডেভেলপমেন্ট এর বেসিক ধারণা, প্রয়োজনীয় ফাইল এবং কনফিগারেশন সম্পর্কে আলোচনা করব।


১. কাস্টম মডিউল কী?

কাস্টম মডিউল ড্রুপালের একটি বিশেষ ধরনের মডিউল, যা ড্রুপালের পূর্বনির্ধারিত মডিউল বা থিমের বাইরে ব্যবহারকারীর চাহিদা অনুযায়ী নতুন কার্যকারিতা যোগ করতে ব্যবহৃত হয়। কাস্টম মডিউল তৈরি করার মাধ্যমে আপনি ড্রুপালে নতুন ফিচার, কাস্টম ফাংশন বা ইন্টিগ্রেশন যুক্ত করতে পারেন।


২. কাস্টম মডিউল ডেভেলপমেন্টের ধাপসমূহ

২.১ মডিউল ফোল্ডার তৈরি করা

প্রথমে, আপনাকে আপনার কাস্টম মডিউলের জন্য একটি ফোল্ডার তৈরি করতে হবে। মডিউলটি ড্রুপাল সাইটের /modules/custom/ ডিরেক্টরিতে থাকবে। উদাহরণস্বরূপ, একটি কাস্টম মডিউল my_custom_module তৈরি করার জন্য ফোল্ডার তৈরি করুন:

/sites/all/modules/custom/my_custom_module

২.২ .info.yml ফাইল তৈরি করা

ড্রুপালে প্রতিটি মডিউল একটি .info.yml ফাইলের মাধ্যমে সিস্টেমের কাছে পরিচিত হয়। এই ফাইলটি মডিউলের বেসিক তথ্য এবং ডিপেন্ডেন্সি কনফিগার করে।

ফাইলের নাম: my_custom_module.info.yml

name: 'My Custom Module'
type: module
description: 'A custom module for extending Drupal functionality.'
core_version_requirement: ^8 || ^9
package: Custom
dependencies:
  - drupal:node

এখানে:

  • name: মডিউলের নাম।
  • description: মডিউলের সংক্ষিপ্ত বর্ণনা।
  • core_version_requirement: কোন ড্রুপাল ভার্সনে এটি কাজ করবে।
  • package: এটি কোন ক্যাটাগরিতে পড়বে (এটি কাস্টম মডিউল)
  • dependencies: যে মডিউলগুলির ওপর নির্ভরশীল, যেমন এখানে node মডিউল।

২.৩ .module ফাইল তৈরি করা

কাস্টম মডিউলে আপনার ফাংশনালিটি লিখতে .module ফাইল তৈরি করতে হবে। এই ফাইলটিতে আপনি মডিউলের কাস্টম ফাংশন, হুক, বা অন্যান্য কার্যকলাপ যুক্ত করবেন।

ফাইলের নাম: my_custom_module.module

<?php

/**
 * Implements hook_help().
 */
function my_custom_module_help($route_name) {
  switch ($route_name) {
    case 'help.page.my_custom_module':
      return '<p>' . t('This is a custom module.') . '</p>';
  }
}

/**
 * Implements hook_menu().
 */
function my_custom_module_menu() {
  $items = array();

  // Define a route for a custom page.
  $items['my_custom_module/welcome'] = array(
    'title' => 'Welcome Page',
    'page callback' => 'my_custom_module_welcome_page',
    'page arguments' => array(),
    'access callback' => 'TRUE',
    'type' => MENU_CALLBACK,
  );

  return $items;
}

/**
 * Callback function for the custom page.
 */
function my_custom_module_welcome_page() {
  return 'Welcome to my custom module!';
}

এখানে:

  • hook_help(): ড্রুপাল সাহায্য পৃষ্ঠার জন্য তথ্য প্রদান করে।
  • hook_menu(): নতুন মেনু আইটেম বা রাউট তৈরি করে, এখানে একটি কাস্টম পৃষ্ঠা তৈরি করা হয়েছে।
  • callback function: কাস্টম পৃষ্ঠা প্রদর্শন করার জন্য কাস্টম ফাংশন।

২.৪ কাস্টম মেনু আইটেম এবং রাউট তৈরি করা

ড্রুপালে hook_menu() ব্যবহার করে আপনি কাস্টম রাউট তৈরি করতে পারেন, যা ইউজারদের সাইটে নির্দিষ্ট পৃষ্ঠাগুলিতে নিয়ে যাবে। উপরোক্ত .module ফাইলে কাস্টম মেনু আইটেম এবং রাউট তৈরি করা হয়েছে যা /my_custom_module/welcome URL এ একটি পৃষ্ঠা প্রদর্শন করবে।

২.৫ কাস্টম ব্লক তৈরি করা

আপনি যদি ব্লক তৈরি করতে চান, তবে ড্রুপালে কাস্টম ব্লক তৈরি করতে Block Plugin ব্যবহার করতে পারেন।

ফাইল: MyCustomModuleBlock.php (এই ফাইলটি src/Plugin/Block ডিরেক্টরিতে রাখুন)

namespace Drupal\my_custom_module\Plugin\Block;

use Drupal\Core\Block\BlockBase;

/**
 * Provides a 'My Custom Block' block.
 *
 * @Block(
 *   id = "my_custom_block",
 *   admin_label = @Translation("My Custom Block"),
 *   category = @Translation("Custom")
 * )
 */
class MyCustomModuleBlock extends BlockBase {

  /**
   * {@inheritdoc}
   */
  public function build() {
    return [
      '#markup' => $this->t('Hello, this is my custom block!'),
    ];
  }

}

এখানে, আমরা MyCustomModuleBlock নামক একটি কাস্টম ব্লক তৈরি করেছি যা একটি সিম্পল বার্তা প্রদর্শন করবে।


৩. কাস্টম মডিউল ডেভেলপমেন্টে কিছু গুরুত্বপূর্ণ হুক

ড্রুপাল কাস্টম মডিউল ডেভেলপমেন্টের জন্য কিছু গুরুত্বপূর্ণ হুক রয়েছে যা ড্রুপাল সিস্টেমের সাথে ইন্টিগ্রেশন করতে সাহায্য করে:

  • hook_menu(): নতুন মেনু আইটেম এবং রাউট তৈরি করতে।
  • hook_block_info(): ব্লক তৈরি এবং কাস্টমাইজ করার জন্য।
  • hook_form_FORM_ID_alter(): ফর্ম কাস্টমাইজ করার জন্য।
  • hook_theme(): কাস্টম টেমপ্লেট তৈরি করার জন্য।
  • hook_node_insert(): নোড ইনসার্ট করার সময় কাস্টম ফাংশন কার্যকর করতে।
  • hook_preprocess_HOOK(): থিম কাস্টমাইজেশনের জন্য।

৪. মডিউলটি সাইটে সক্রিয় করা

  1. আপনার কাস্টম মডিউল ফোল্ডারটি sites/all/modules/custom/ বা sites/default/modules/custom/ ডিরেক্টরিতে আপলোড করুন।
  2. ড্রুপাল অ্যাডমিন প্যানেলে গিয়ে:
    • Admin Menu → Extend এ যান।
    • আপনার কাস্টম মডিউল নির্বাচন করুন এবং Enable বাটনে ক্লিক করুন।

উপসংহার

ড্রুপাল কাস্টম মডিউল ডেভেলপমেন্ট একটি শক্তিশালী প্রক্রিয়া যা আপনার সাইটে নতুন ফিচার, কার্যকারিতা এবং কাস্টম সলিউশন তৈরি করতে সহায়ক। .info.yml ফাইল, .module ফাইল এবং Plugin API এর মাধ্যমে আপনি ড্রুপালে কাস্টম মডিউল তৈরি করতে পারবেন। এর মাধ্যমে আপনি আপনার সাইটের কার্যকারিতা বাড়াতে, কাস্টম ফিচার তৈরি করতে এবং থিম এবং কনটেন্টের সাথে ইন্টিগ্রেট করতে পারেন।

Content added By

ড্রুপাল ৮ এবং পরবর্তী সংস্করণে, info.yml ফাইলটি মডিউল, থিম বা প্রোফাইল এর জন্য কনফিগারেশন ফাইল হিসেবে ব্যবহৃত হয়। এটি প্লাগইন, মডিউল বা থিমের মেটাডেটা, ডিপেন্ডেন্সি এবং অন্যান্য সেটিংস সংরক্ষণ করে, যা ড্রুপাল সিস্টেম সঠিকভাবে প্যাকেজগুলো লোড এবং কনফিগার করতে ব্যবহার করে।

এখানে ড্রুপাল info.yml ফাইল তৈরি করার প্রক্রিয়া সম্পর্কে বিস্তারিত আলোচনা করা হলো:


info.yml ফাইলের কাঠামো

ড্রুপাল ৮ বা তার পরবর্তী সংস্করণে .info.yml ফাইলটি একটি YAML (YAML Ain't Markup Language) ফরম্যাটে থাকে, যা সহজেই পড়া এবং লেখার জন্য একটি হালকা ফরম্যাট। এই ফাইলটি মডিউল বা থিমের বেসিক কনফিগারেশন এবং ডিপেন্ডেন্সি সংরক্ষণ করে।

১. info.yml ফাইল তৈরি করা

ধরা যাক, আপনি একটি কাস্টম থিম বা মডিউল তৈরি করছেন এবং এর জন্য info.yml ফাইল তৈরি করতে চান। এখানে একটি উদাহরণ দেয়া হলো:

১.১ মডিউল এর জন্য info.yml ফাইল

আপনি যদি একটি কাস্টম মডিউল তৈরি করেন, তবে এর জন্য my_module.info.yml ফাইলটি হবে:

name: 'My Custom Module'
type: module
description: 'A custom module to demonstrate the info.yaml file.'
core_version_requirement: ^8 || ^9
package: Custom
dependencies:
  - drupal:views
  - drupal:ctools

ব্যাখ্যা:

  • name: মডিউলের নাম।
  • type: মডিউলটির টাইপ, যা এখানে module উল্লেখ করা হয়েছে।
  • description: মডিউলের সংক্ষিপ্ত বর্ণনা।
  • core_version_requirement: ড্রুপালের কোন ভার্সনে মডিউলটি চলবে তা উল্লেখ করে (এখানে, এটি ড্রুপাল ৮ বা ৯ এর জন্য কাজ করবে)।
  • package: মডিউলটি কোন প্যাকেজের অন্তর্গত (এটি ড্রুপাল অ্যাডমিন প্যানেলে প্যাকেজের অধীনে দেখা যাবে)।
  • dependencies: এই মডিউলটির অন্য কোন মডিউল বা ডিপেন্ডেন্সি থাকতে পারে, যেমন views বা ctools

১.২ থিম এর জন্য info.yml ফাইল

যদি আপনি একটি কাস্টম থিম তৈরি করেন, তাহলে থিমের জন্য my_theme.info.yml ফাইলের কাঠামো হবে:

name: 'My Custom Theme'
type: theme
base theme: classy
description: 'A custom theme for demonstrating the info.yaml file.'
core_version_requirement: ^8 || ^9
libraries:
  - my_theme/global-styling
regions:
  header: 'Header'
  primary_menu: 'Primary Menu'
  footer: 'Footer'

ব্যাখ্যা:

  • name: থিমের নাম।
  • type: থিমের টাইপ, যা এখানে theme উল্লেখ করা হয়েছে।
  • base theme: থিমের বেস থিম। উদাহরণস্বরূপ, classy বা olivero
  • description: থিমের সংক্ষিপ্ত বর্ণনা।
  • core_version_requirement: ড্রুপালের কোন ভার্সনে থিমটি চলবে তা উল্লেখ করা।
  • libraries: থিমের স্টাইলিং বা স্ক্রিপ্টের জন্য ব্যবহার করা লাইব্রেরি। এই লাইব্রেরিগুলি থিমের সাথে যুক্ত করা হয়।
  • regions: থিমের বিভিন্ন অংশ, যেমন header, footer, primary_menu, ইত্যাদি, যেগুলোর মধ্যে কন্টেন্ট ব্লকগুলো প্লেস করা যাবে।

২. info.yml ফাইলের অতিরিক্ত কনফিগারেশন

info.yml ফাইলটি শুধু মডিউল বা থিমের মেটাডেটা রাখে না, বরং সেটির কার্যকারিতা কাস্টমাইজ করতেও ব্যবহৃত হয়।

২.১ CSS এবং JavaScript ফাইল যোগ করা

মডিউল বা থিমে CSS এবং JavaScript ফাইল যোগ করতে, আপনি info.yml ফাইলে libraries ডিরেক্টিভ ব্যবহার করতে পারেন:

libraries:
  - my_module/custom-styles
  - my_module/custom-scripts

এবং তারপর my_module.libraries.yml ফাইলে সেই ফাইলগুলোর বিবরণ প্রদান করতে হবে:

custom-styles:
  version: 1.0
  css:
    theme:
      css/style.css: {}

custom-scripts:
  version: 1.0
  js:
    js/custom.js: {}

২.২ মডিউল সক্রিয়করণের পর কোনো ফাংশন চালানো

মডিউল ইনস্টল হওয়ার পর কোন ফাংশন চালানোর জন্য info.yml ফাইলে install কী ব্যবহার করতে পারেন:

install: my_module.install

এখানে my_module.install ফাইলটি মডিউলটি ইনস্টল হওয়ার পর নির্দিষ্ট ফাংশন চালাবে।


৩. info.yml ফাইলের সঠিক গঠন এবং ফরম্যাটিং

  • info.yml ফাইলের নাম অবশ্যই মডিউল বা থিমের নামের সাথে মেলে, যেমন my_module.info.yml বা my_theme.info.yml
  • ফাইলের মধ্যে সঠিক YAML সিনট্যাক্স ব্যবহার করা উচিত। এটি গুরুত্বপূর্ণ, কারণ YAML ফাইলের মধ্যে ইন্ডেন্টেশন অত্যন্ত গুরুত্বপূর্ণ। সাধারণত দুটি স্পেস ব্যবহার করা হয়।

৪. info.yml ফাইলের কিছু অতিরিক্ত কনফিগারেশন

  • dependencies: নির্দিষ্ট মডিউলগুলির উপর নির্ভরশীলতা নির্ধারণ করতে।
  • regions: থিমের জন্য কাস্টম রিজন নির্ধারণ করতে।
  • core_version_requirement: ড্রুপাল এর কোন সংস্করণে মডিউল বা থিমটি সাপোর্ট করবে তা নির্ধারণ করতে।
  • libraries: থিম বা মডিউলে ব্যবহার করা CSS বা JS ফাইল কনফিগার করতে।

উপসংহার

info.yml ফাইল ড্রুপাল থিম বা মডিউল তৈরি করার মূল উপাদান। এটি ড্রুপালকে মডিউল বা থিমের কনফিগারেশন, ডিপেন্ডেন্সি, এবং অন্যান্য সেটিংস সম্পর্কে জানায়। সঠিকভাবে info.yml ফাইল কনফিগার করে ড্রুপালের কার্যকারিতা এবং কাস্টমাইজেশন সহজ করা সম্ভব।

Content added By

ড্রুপাল (Drupal) একটি শক্তিশালী এবং নমনীয় কনটেন্ট ম্যানেজমেন্ট সিস্টেম (CMS), যা Hooks ব্যবহার করে ডেভেলপারদের সাইটে কাস্টম ফাংশনালিটি যোগ করার সুযোগ দেয়। হুকস হল ড্রুপালের এক ধরনের ইভেন্ট বা ফাংশন, যা ড্রুপালের নির্দিষ্ট ক্রিয়াকলাপ (যেমন, কনটেন্ট তৈরি, পেজ লোড, লগইন) এর সময় কাজ করে এবং ডেভেলপারদের সাইটে বিভিন্ন কাস্টম কার্যকারিতা যোগ করতে দেয়।

ড্রুপালে হুকস ব্যবহার করে কাস্টম ফাংশনালিটি যোগ করার জন্য আপনি ড্রুপাল মডিউল তৈরি করতে পারেন এবং এই মডিউল থেকে বিভিন্ন হুক ব্যবহার করে সাইটের কার্যকলাপে পরিবর্তন আনতে পারেন।

এখানে ড্রুপালে হুকস ব্যবহার করে কাস্টম ফাংশনালিটি যোগ করার প্রক্রিয়া ব্যাখ্যা করা হয়েছে।


হুকস কী?

হুকস হল ড্রুপাল ফাংশনগুলির অংশ যা ড্রুপালের কনফিগারেশন, ডাটাবেস অপারেশন, ফর্ম বা টেমপ্লেট ইত্যাদির মধ্যে একযোগ কাজ করে। ড্রুপালের কোর বা মডিউল গুলি নির্দিষ্ট ক্রিয়াকলাপের সময় এই হুকগুলিকে কল করে, এবং ডেভেলপাররা এই হুকগুলির মাধ্যমে তাদের কাস্টম ফাংশনালিটি যোগ করতে পারে।

ড্রুপালের বিভিন্ন ধরনের হুক রয়েছে, যেমন:

  • hook_menu()
  • hook_theme()
  • hook_block_info()
  • hook_form()
  • hook_node_insert()
  • hook_user_login()

এগুলোর মাধ্যমে ডেভেলপাররা সাইটের বিভিন্ন কার্যকলাপ পরিবর্তন এবং কাস্টমাইজ করতে পারেন।


কাস্টম মডিউল তৈরি করে হুকস ব্যবহার করা

১. কাস্টম মডিউল তৈরি করা

প্রথমে একটি কাস্টম মডিউল তৈরি করুন। এই মডিউলটি আপনার হুকস কাস্টমাইজেশন যুক্ত করার স্থান হবে।

  1. modules/custom ডিরেক্টরিতে একটি নতুন ফোল্ডার তৈরি করুন, যেমন my_custom_module
  2. এর মধ্যে একটি my_custom_module.module ফাইল তৈরি করুন, যেখানে আপনি আপনার কাস্টম ফাংশনালিটি এবং হুক যুক্ত করবেন।

২. hook_menu() ব্যবহার করে কাস্টম পেজ তৈরি করা

ড্রুপাল সাইটে নতুন পেজ যুক্ত করতে hook_menu() ব্যবহার করা হয়। এটি ড্রুপালে একটি নতুন URL তৈরি করতে সাহায্য করে।

উদাহরণ:

/**
 * Implements hook_menu().
 */
function my_custom_module_menu() {
  $items = array();

  // Custom page URL
  $items['custom/my-page'] = array(
    'title' => 'My Custom Page',
    'page callback' => 'my_custom_module_custom_page',
    'page arguments' => array(),
    'access callback' => 'user_access',
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );

  return $items;
}

/**
 * Custom page callback function.
 */
function my_custom_module_custom_page() {
  return '<h1>Welcome to My Custom Page</h1>';
}

এই কোডে, my_custom_module_menu() হুকটি একটি নতুন পেজ URL (custom/my-page) তৈরি করে এবং সেটির জন্য একটি কাস্টম পেজ রেন্ডার করে।

৩. hook_theme() ব্যবহার করে কাস্টম টেম্পলেট যুক্ত করা

ড্রুপালে কাস্টম থিমিং করতে hook_theme() ব্যবহার করা হয়, যার মাধ্যমে আপনি কাস্টম টেম্পলেট ফাইল যুক্ত করতে পারেন।

উদাহরণ:

/**
 * Implements hook_theme().
 */
function my_custom_module_theme() {
  return array(
    'my_custom_template' => array(
      'render element' => 'elements',
      'template' => 'my-custom-template',
      'path' => drupal_get_path('module', 'my_custom_module') . '/templates',
    ),
  );
}

/**
 * Use the custom template.
 */
function my_custom_module_page() {
  $output = theme('my_custom_template', array('elements' => 'This is a custom page template'));
  return $output;
}

এই কোডে, hook_theme() হুকটি একটি কাস্টম টেম্পলেট ফাইল (my-custom-template.tpl.php) তৈরি করার জন্য ব্যবহৃত হয়েছে। ড্রুপাল যখন my_custom_module_page() কল করবে, তখন এটি কাস্টম টেম্পলেট রেন্ডার করবে।

৪. hook_form() এবং hook_form_alter() ব্যবহার করে কাস্টম ফর্ম তৈরি করা

ড্রুপালে কাস্টম ফর্ম তৈরি করতে hook_form() ব্যবহার করা হয়, এবং ফর্মের বিদ্যমান ফিচার পরিবর্তন করতে hook_form_alter() ব্যবহার করা হয়।

hook_form() উদাহরণ:

/**
 * Implements hook_form().
 */
function my_custom_module_form($form, &$form_state) {
  $form['my_field'] = array(
    '#type' => 'textfield',
    '#title' => t('My Field'),
    '#required' => TRUE,
  );
  
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Submit'),
  );

  return $form;
}

/**
 * Form submission handler.
 */
function my_custom_module_form_submit($form, &$form_state) {
  drupal_set_message(t('Form submitted with value: @value', array('@value' => $form_state['values']['my_field'])));
}

এখানে hook_form() একটি কাস্টম টেক্সটফিল্ড ফর্ম তৈরি করেছে, এবং hook_form_submit() ফর্ম সাবমিট হলে একটি মেসেজ প্রদর্শন করবে।

hook_form_alter() উদাহরণ:

/**
 * Implements hook_form_alter().
 */
function my_custom_module_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'user_login') {
    // Add a custom class to the login form.
    $form['#attributes']['class'][] = 'my-custom-login';
  }
}

এখানে hook_form_alter() ব্যবহার করে আমরা user_login ফর্মে একটি কাস্টম CSS ক্লাস যোগ করেছি।

৫. hook_node_insert() ব্যবহার করে কাস্টম কার্যকারিতা যোগ করা

ড্রুপাল নোড (Content) তৈরি হলে কাস্টম কার্যকারিতা চালাতে hook_node_insert() ব্যবহার করা যায়।

উদাহরণ:

/**
 * Implements hook_node_insert().
 */
function my_custom_module_node_insert($node) {
  if ($node->type == 'article') {
    // Perform an action when an article node is created.
    drupal_set_message(t('A new article node has been created!'));
  }
}

এই কোডে, hook_node_insert() একটি নতুন আর্টিকেল নোড তৈরি হলে একটি কাস্টম মেসেজ প্রদর্শন করবে।


উপসংহার

ড্রুপালে হুকস ব্যবহার করে আপনি আপনার সাইটে কাস্টম ফাংশনালিটি যোগ করতে পারেন এবং সাইটের কার্যকলাপের উপর ভিত্তি করে নতুন কার্যক্রম তৈরি করতে পারেন। হুকস এমন একটি শক্তিশালী ফিচার যা ড্রুপালের আউট-অফ-দ্য-বক্স কার্যকারিতাকে কাস্টমাইজ করতে সাহায্য করে। উপরোক্ত উদাহরণগুলির মাধ্যমে আপনি ড্রুপাল সাইটে কাস্টম ফাংশনালিটি যোগ করতে পারেন এবং আপনার সাইটের কার্যকরিতা বাড়াতে পারবেন।

Content added By

ড্রুপাল (Drupal) একটি অত্যন্ত নমনীয় এবং শক্তিশালী কনটেন্ট ম্যানেজমেন্ট সিস্টেম (CMS), যা ডেভেলপারদের কাস্টম Entities এবং Controllers তৈরি করার মাধ্যমে সাইটের কার্যকারিতা কাস্টমাইজ এবং এক্সটেন্ড করার সুযোগ দেয়। Custom Entities তৈরি করে আপনি ড্রুপাল সাইটে নতুন ডেটা টাইপ তৈরি করতে পারেন এবং Custom Controllers ব্যবহার করে সেগুলোর সাথে ইন্টারঅ্যাক্ট করতে পারবেন।

এই গাইডে, আমরা কিভাবে ড্রুপালে Custom Entities এবং Controllers তৈরি করা যায়, সে সম্পর্কে আলোচনা করব।


Custom Entities তৈরি করা

ড্রুপাল সাইটে কাস্টম Entity তৈরি করার মাধ্যমে আপনি ড্রুপালের ডেটা মডেল কাস্টমাইজ করতে পারেন। Entity হচ্ছে ড্রুপালের ডেটা স্টোরেজ অবজেক্ট, যা কাস্টম কনটেন্ট টাইপ, ফাইল, ট্যাক্সোনমি, ব্যবহারকারী ইত্যাদির জন্য ব্যবহৃত হয়।

১. Custom Entity তৈরি করার জন্য মডিউল তৈরি করুন

প্রথমে আপনাকে একটি কাস্টম মডিউল তৈরি করতে হবে, যেখানে আপনি কাস্টম Entity সংজ্ঞায়িত করবেন। উদাহরণস্বরূপ, একটি "Book" কাস্টম Entity তৈরি করতে চাইলে:

  1. মডিউল ডিরেক্টরি তৈরি করুন: আপনার সাইটের modules/custom/ ফোল্ডারে একটি নতুন ডিরেক্টরি তৈরি করুন, যেমন book_entity
  2. মডিউল ফাইল তৈরি করুন: book_entity.info.yml ফাইল তৈরি করুন এবং এতে নিচের কনফিগারেশন যোগ করুন:

    name: 'Book Entity'
    type: module
    description: 'Creates a custom Book entity.'
    core_version_requirement: ^8 || ^9
    package: Custom
    dependencies:
      - drupal:entity
    
  3. Entity ক্লাস তৈরি করুন: src/Entity ডিরেক্টরিতে Book.php নামে একটি PHP ক্লাস তৈরি করুন, যা ContentEntityBase থেকে এক্সটেন্ড হবে।

    namespace Drupal\book_entity\Entity;
    
    use Drupal\Core\Entity\ContentEntityBase;
    use Drupal\Core\Field\BaseFieldDefinition;
    use Drupal\Core\Entity\EntityTypeInterface;
    use Drupal\Core\Field\FieldDefinitionInterface;
    
    /**
     * Defines the Book entity.
     *
     * @ContentEntityType(
     *   id = "book",
     *   label = @Translation("Book"),
     *   base_table = "book",
     *   entity_keys = {
     *     "id" = "id",
     *     "label" = "title",
     *   },
     * )
     */
    class Book extends ContentEntityBase {
    
      /**
       * {@inheritdoc}
       */
      public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
        $fields = parent::baseFieldDefinitions($entity_type);
    
        // Add the title field.
        $fields['title'] = BaseFieldDefinition::create('string')
          ->setLabel(t('Title'))
          ->setRequired(TRUE)
          ->setSetting('max_length', 255);
    
        return $fields;
      }
    }
    
  4. ডাটাবেস টেবিল তৈরি করুন: কাস্টম Entity সংরক্ষণের জন্য আপনাকে ডাটাবেস টেবিল তৈরি করতে হবে। ড্রুপাল সাধারণত Entity তৈরি করার সময় টেবিলও তৈরি করে, তবে আপনি ম্যানুয়ালি মাইগ্রেশন অথবা ডাটাবেস টেবিল সংজ্ঞা প্রদান করতে পারেন।

Custom Controllers তৈরি করা

Custom Controllers তৈরি করার মাধ্যমে আপনি কাস্টম URL পাথ এবং ফাংশনালিটি যুক্ত করতে পারেন। এটি মূলত Drupal এর রাউটিং সিস্টেমের সাথে কাজ করে এবং ব্যবহারকারীদের জন্য নির্দিষ্ট অ্যাকশন প্রদান করে।

২. Custom Controller তৈরি করার জন্য কোড

  1. Controller ক্লাস তৈরি করুন: src/Controller ডিরেক্টরিতে একটি কাস্টম কন্ট্রোলার ক্লাস তৈরি করুন, যেমন BookController.php:

    namespace Drupal\book_entity\Controller;
    
    use Drupal\Core\Controller\ControllerBase;
    use Symfony\Component\HttpFoundation\Response;
    
    /**
     * Returns responses for the Book entity module routes.
     */
    class BookController extends ControllerBase {
    
      /**
       * Returns a list of books.
       *
       * @return \Symfony\Component\HttpFoundation\Response
       *   A renderable array or string.
       */
      public function bookList() {
        return new Response('Here is a list of books.');
      }
    
      /**
       * Displays details for a specific book.
       *
       * @param int $book_id
       *   The book ID.
       *
       * @return \Symfony\Component\HttpFoundation\Response
       *   A renderable array or string.
       */
      public function bookDetail($book_id) {
        return new Response('Book details for book ID ' . $book_id);
      }
    }
    
  2. Routing কনফিগারেশন তৈরি করুন: book_entity.routing.yml নামের একটি ফাইল তৈরি করুন এবং এতে রাউটিং কনফিগারেশন যোগ করুন:

    book_entity.book_list:
      path: '/books'
      defaults:
        _controller: '\Drupal\book_entity\Controller\BookController::bookList'
        _title: 'Book List'
      requirements:
        _permission: 'access content'
    
    book_entity.book_detail:
      path: '/book/{book_id}'
      defaults:
        _controller: '\Drupal\book_entity\Controller\BookController::bookDetail'
        _title: 'Book Details'
      requirements:
        _permission: 'access content'
      parameters:
        book_id:
          type: 'integer'
    
  3. রাউটিং এবং কন্ট্রোলার কনফিগারেশন নিশ্চিত করা:
    • book_entity.routing.yml ফাইলটি কনফিগার করা হয়ে গেলে, ড্রুপাল সাইটে রাউটিং এবং কন্ট্রোলার অ্যাক্সেস ঠিকভাবে কাজ করবে।

Entity এবং Controller টেস্টিং

এখন, আপনি কাস্টম Entity এবং Controller এর কাজ পরীক্ষা করতে পারেন:

  1. Entity ব্যবহার করে নতুন কনটেন্ট তৈরি করুন: book Entity ব্যবহার করে নতুন কনটেন্ট তৈরি করার জন্য ড্রুপাল অ্যাডমিন প্যানেল ব্যবহার করুন বা কাস্টম ফর্ম তৈরি করুন।
  2. Controller রাউটিং পরীক্ষা করুন: ব্রাউজারে গিয়ে /books এবং /book/{book_id} পাথ ব্যবহার করে কন্ট্রোলারের আউটপুট দেখতে পারবেন।

উপসংহার

ড্রুপালে Custom Entities এবং Controllers তৈরি করার মাধ্যমে আপনি কাস্টম ডেটা টাইপ এবং এর সাথে ইন্টারঅ্যাক্ট করার জন্য কাস্টম লজিক যুক্ত করতে পারেন। এটি সাইটের কার্যকারিতা কাস্টমাইজ করতে সাহায্য করে এবং ড্রুপাল সাইটের জন্য নতুন ফিচার তৈরি করার ক্ষমতা প্রদান করে।

Content added By

ড্রুপাল (Drupal) সাইট ডেভেলপমেন্টের সময় Unit Testing এবং Debugging অত্যন্ত গুরুত্বপূর্ণ পদক্ষেপ। এগুলি ডেভেলপারদের কোডের সমস্যাগুলি সনাক্ত করতে এবং সমাধান করতে সাহায্য করে। ড্রুপালে ইউনিট টেস্টিং এবং ডিবাগিং ব্যবহারের মাধ্যমে আপনি কোডের মান উন্নত করতে পারেন এবং সাইটের পারফরম্যান্স এবং স্থায়িত্ব নিশ্চিত করতে পারেন।

এই গাইডে আমরা ড্রুপালে Unit Testing এবং Debugging Techniques সম্পর্কিত গুরুত্বপূর্ণ ধারণাগুলি আলোচনা করবো।


১. ড্রুপালে ইউনিট টেস্টিং (Unit Testing)

Unit Testing হল একটি পদ্ধতি যেখানে কোডের ছোট ছোট অংশ (ফাংশন বা মেথড) পরীক্ষিত হয়। এটি কোডের প্রতিটি ইউনিট সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করতে সাহায্য করে। ড্রুপালে ইউনিট টেস্টিং করার জন্য আপনি PHPUnit ব্যবহার করতে পারেন, যা ড্রুপালের অফিসিয়াল টেস্টিং ফ্রেমওয়ার্ক।

PHPUnit ইনস্টলেশন

PHPUnit ড্রুপালে ইউনিট টেস্টিং করার জন্য ব্যবহৃত একটি টেস্টিং ফ্রেমওয়ার্ক। এটি ড্রুপাল প্রকল্পের সাথে আসে, তবে আপনি এটি আলাদাভাবে ইনস্টল করতে পারেন।

  1. Composer দিয়ে PHPUnit ইনস্টল করুন:

    composer require --dev phpunit/phpunit ^9.5
    
  2. PHPUnit কনফিগারেশন ফাইল তৈরি করুন: ড্রুপালের জন্য PHPUnit কনফিগারেশন ফাইল phpunit.xml.dist নামের একটি ফাইল থাকে, যা টেস্টিং পরিবেশ কনফিগার করে।

ইউনিট টেস্ট তৈরি করা

ড্রুপালে ইউনিট টেস্ট লিখতে, আপনি সাধারণত ড্রুপালের Testing ফোল্ডারের মধ্যে একটি টেস্ট ফাইল তৈরি করবেন।

  1. Testing ফোল্ডার তৈরি করুন:
    • আপনার মডিউলের tests/src/Unit ফোল্ডারে একটি নতুন ফাইল তৈরি করুন।
    • উদাহরণস্বরূপ, ExampleTest.php ফাইলটি তৈরি করুন।
  2. Unit Test কোড লিখুন:

    namespace Drupal\Tests\example\Unit;
    
    use Drupal\Tests\UnitTestCase;
    
    /**
     * Example test class.
     *
     * @group example
     */
    class ExampleTest extends UnitTestCase {
      /**
       * A simple test to check addition.
       */
      public function testAddition() {
        $result = 2 + 2;
        $this->assertEquals(4, $result, 'The addition result is correct.');
      }
    }
    
  3. PHPUnit দিয়ে টেস্ট রান করা: PHPUnit টেস্ট চালানোর জন্য কমান্ড ব্যবহার করুন:

    ./vendor/bin/phpunit -c phpunit.xml.dist
    

টেস্ট রেজাল্ট দেখা

PHPUnit রান করার পর, এটি টেস্ট রেজাল্ট দেখাবে। সঠিকভাবে টেস্ট পাস করলে, PHPUnit "OK" বলে ফিরিয়ে দেবে। অন্যথায়, টেস্টের ফলস্বরূপ ত্রুটির বার্তা প্রদর্শিত হবে।


২. ড্রুপালে ডিবাগিং (Debugging Techniques)

Debugging হল একটি পদ্ধতি যা কোডের ত্রুটি চিহ্নিত এবং সমাধান করতে ব্যবহৃত হয়। ড্রুপালে ডিবাগিং করার জন্য বিভিন্ন টুল এবং কৌশল রয়েছে, যেগুলি আপনাকে কোডের ত্রুটি চিহ্নিত করতে সহায়তা করবে।

১. ড্রুপাল ডিবাগ মোড চালু করা

ড্রুপালে ডিবাগ মোড চালু করলে আপনি ত্রুটি এবং লগ তথ্য দেখতে পারবেন। এটি উন্নয়ন পরিবেশে কোড ডিবাগিংয়ের জন্য খুবই উপকারী।

  1. settings.php ফাইলে ডিবাগ মোড চালু করা: ড্রুপালের settings.php ফাইলে নিচের কোডটি যোগ করুন:

    $config['system.logging']['error_level'] = 'all';
    

    এটি ড্রুপালকে সমস্ত ত্রুটি এবং ডিবাগ তথ্য প্রদর্শন করতে বলবে।

  2. Watchdog লগ: ড্রুপাল Watchdog ফিচার ব্যবহার করে আপনি লগ মেসেজ দেখতে পারেন:

    watchdog('example', 'This is a debug message', array(), WATCHDOG_DEBUG);
    

২. Devel মডিউল ব্যবহার করা

ড্রুপালে Devel মডিউল একটি জনপ্রিয় টুল যা ডিবাগিং এবং টেস্টিংয়ের জন্য ব্যবহৃত হয়। এটি বিভিন্ন ডিবাগিং তথ্য সরবরাহ করে এবং ড্রুপালের বিভিন্ন ডেটা পর্যবেক্ষণ করতে সাহায্য করে।

  1. Devel মডিউল ইনস্টল এবং সক্রিয় করুন:

    composer require drupal/devel
    
  2. Devel মডিউল ব্যবহারের সুবিধা:
    • dpm() ফাংশন: এটি একটি ভ্যারিয়েবল বা অ্যারেইয়ের মান প্রিন্ট করে।

      dpm($variable);
      
    • Kint: Kint ডিবাগারটি ড্রুপালে অবজেক্টের ডিটেইলড ভিউ দেখাতে সাহায্য করে।

৩. Xdebug ব্যবহার করা

Xdebug হল একটি PHP ডিবাগিং টুল যা আপনাকে লাইন বাই লাইন কোড ট্র্যাক করতে সাহায্য করে। Xdebug সেটআপ করার মাধ্যমে আপনি ব্রেকপয়েন্ট, স্ট্যাক ট্রেস এবং কোড ভ্যালু দেখতে পারবেন।

  1. Xdebug ইনস্টল করুন:

    sudo apt install php-xdebug
    
  2. Xdebug কনফিগারেশন: php.ini ফাইলে Xdebug সেটআপ করতে হবে:

    zend_extension=xdebug.so
    xdebug.remote_enable = 1
    xdebug.remote_host = 127.0.0.1
    xdebug.remote_port = 9000
    
  3. IDE ব্যবহার: Xdebug ব্যবহার করার জন্য আপনাকে একটি IDE (যেমন PhpStorm বা Visual Studio Code) কনফিগার করতে হবে, যাতে আপনি ব্রেকপয়েন্ট ব্যবহার করে কোড ডিবাগ করতে পারেন।

৪. Drush কমান্ড ব্যবহার করা

Drush হল একটি কমান্ড-লাইন টুল যা ড্রুপাল সাইটের অ্যাডমিনিস্ট্রেশন সহজ করে। আপনি Drush ব্যবহার করে সাইটের লগ দেখতে এবং ডিবাগিং তথ্য পেতে পারেন।

  1. Drush ইনস্টল করুন:

    composer require drush/drush
    
  2. Drush দিয়ে লগ দেখতে:

    drush ws
    

    এটি সাইটের ওয়াচডগ লগ দেখাবে।


৩. ড্রুপাল ডিবাগিংয়ের অন্যান্য টিপস

  • Error Reporting: error_reporting(E_ALL) এবং ini_set('display_errors', 1) ব্যবহার করে PHP ত্রুটি দেখানো।
  • Drupal Debugging Mode: ড্রুপাল ডিবাগিংয়ের জন্য Twig debug সক্রিয় করা:

    $settings['twig_debug'] = TRUE;
    

    এটি টেমপ্লেট ফাইলগুলির ডিবাগ তথ্য দেখাতে সাহায্য করবে।


উপসংহার

ড্রুপালে Unit Testing এবং Debugging Techniques সাইটের কোডের গুণগত মান এবং পারফরম্যান্স নিশ্চিত করার জন্য অপরিহার্য। PHPUnit ব্যবহার করে ইউনিট টেস্টিং এবং Devel, Xdebug, এবং Drush এর মাধ্যমে ডিবাগিং টেকনিকগুলি ডেভেলপারদের কোডের সমস্যা চিহ্নিত করতে এবং সমাধান করতে সাহায্য করে। সঠিকভাবে এই টুলগুলি ব্যবহার করলে ড্রুপালের কোডের মান বৃদ্ধি পায় এবং উন্নয়ন প্রক্রিয়া আরও সহজ ও কার্যকরী হয়ে ওঠে।

Content added By
Promotion

Are you sure to start over?

Loading...