ড্রুপাল (Drupal) একটি অত্যন্ত নমনীয় কনটেন্ট ম্যানেজমেন্ট সিস্টেম (CMS), যা ডেভেলপারদের কাস্টম ফর্ম এবং কাস্টম কন্টেন্ট টাইপ তৈরি ও কাস্টমাইজ করার সুবিধা প্রদান করে। এটি ব্যবহারকারীদের সাইটের কনটেন্ট এবং ফর্ম কার্যকারিতা কাস্টমাইজ করতে সহজ করে তোলে, যা সাইটের লেআউট এবং কার্যকারিতা বাড়ায়।
নিচে ড্রুপালে কাস্টম ফর্ম এবং কাস্টম কন্টেন্ট টাইপ কাস্টমাইজ করার প্রক্রিয়া ব্যাখ্যা করা হয়েছে।
কাস্টম কন্টেন্ট টাইপ কাস্টমাইজেশন (Custom Content Type Customization)
ড্রুপালে কন্টেন্ট টাইপ তৈরি করা খুবই সহজ এবং এটি আপনাকে সাইটের জন্য বিভিন্ন ধরনের কন্টেন্ট তৈরি করতে সাহায্য করে। যেমন: ব্লগ পোস্ট, নিউজ আর্টিকেল, ইভেন্ট ইত্যাদি।
১. কাস্টম কন্টেন্ট টাইপ তৈরি করা
- Structure > Content types এ যান।
- Add content type বাটনে ক্লিক করুন।
- নতুন কন্টেন্ট টাইপের নাম দিন (যেমন: Event, Product, Review)।
- Save and manage fields বাটনে ক্লিক করুন।
২. কন্টেন্ট টাইপে কাস্টম ফিল্ড যোগ করা
কাস্টম কন্টেন্ট টাইপে বিভিন্ন ধরনের কাস্টম ফিল্ড যোগ করা যায়, যেমন: টেক্সট, ইমেজ, ডেট, ট্যাক্সোনমি (ট্যাগ), ফাইল, ইউআরএল ইত্যাদি।
- Add field বাটনে ক্লিক করুন।
- ফিল্ডের ধরনের জন্য নির্বাচন করুন (যেমন: Text, Image, File, Entity Reference ইত্যাদি)।
- ফিল্ডের নাম এবং অন্যান্য কনফিগারেশন নির্বাচন করুন।
- Save field settings এ ক্লিক করুন এবং ফিল্ডটি কনফিগার করুন (যেমন, ফিল্ডের লেবেল, প্রয়োজনীয়তা ইত্যাদি)।
- Save content type এ ক্লিক করুন।
৩. কন্টেন্ট টাইপের ফিল্ডের প্রদর্শন কাস্টমাইজ করা
আপনি কন্টেন্ট টাইপে যুক্ত করা ফিল্ডগুলোর প্রদর্শন কাস্টমাইজ করতে পারেন, যেমন ফিল্ডের নাম, ফর্ম ফিল্ডের প্লেসহোল্ডার টেক্সট, ডিসপ্লে অপশন ইত্যাদি।
- Manage display এ যান।
- এখানে আপনি প্রতিটি ফিল্ডের জন্য প্রদর্শন সেটিংস কাস্টমাইজ করতে পারবেন (যেমন, টেক্সট ফিল্ডের জন্য Plain text, Rich text ইত্যাদি নির্বাচন করা)।
৪. কন্টেন্ট টাইপের অধীনে কনটেন্ট তৈরি করা
এখন আপনি নতুন কন্টেন্ট টাইপে কনটেন্ট তৈরি করতে পারবেন:
- Content > Add content এ যান।
- আপনার তৈরি করা কন্টেন্ট টাইপ নির্বাচন করুন (যেমন: Event, Product)।
- প্রয়োজনীয় তথ্য এবং ফিল্ড পূর্ণ করুন এবং কন্টেন্টটি সেভ করুন।
কাস্টম ফর্ম কাস্টমাইজেশন (Custom Form Customization)
ড্রুপালে কাস্টম ফর্ম তৈরি এবং কাস্টমাইজ করা অত্যন্ত সহজ এবং এটি সাইটের কন্টেন্ট ইনপুট প্রক্রিয়াকে সহজতর করে।
১. ফর্ম তৈরি করা
ড্রুপালে কাস্টম ফর্ম তৈরি করতে আপনি Form API ব্যবহার করতে পারেন। এটি ড্রুপালের একটি শক্তিশালী ফিচার, যা আপনাকে কাস্টম ফর্ম তৈরি এবং সেগুলোর জন্য লজিক কাস্টমাইজ করতে সহায়তা করে।
ফর্ম তৈরি করতে:
- একটি নতুন মডিউল তৈরি করুন (যেমন: my_custom_module).
- my_custom_module.module ফাইলটি ওপেন করুন এবং নিচের কোডটি যুক্ত করুন:
/** * Implements hook_menu(). */ function my_custom_module_menu() { $items = array(); $items['custom/form'] = array( 'title' => 'Custom Form', 'page callback' => 'my_custom_module_form', 'page arguments' => array(), 'access callback' => 'user_access', 'access arguments' => array('administer site configuration'), ); return $items; } /** * Custom form. */ function my_custom_module_form() { $form = drupal_get_form('my_custom_form'); return $form; } /** * Custom form elements. */ function my_custom_form($form, &$form_state) { $form['my_text_field'] = array( '#type' => 'textfield', '#title' => t('My Text Field'), '#description' => t('Enter some text.'), '#required' => TRUE, ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Submit'), ); return $form; } /** * Submit handler for the custom form. */ function my_custom_form_submit($form, &$form_state) { drupal_set_message(t('You entered: @text', array('@text' => $form_state['values']['my_text_field']))); }
২. ফর্মের ভ্যালিডেশন এবং সাবমিট হ্যান্ডলার তৈরি করা
ফর্মের জন্য ভ্যালিডেশন এবং সাবমিট হ্যান্ডলার তৈরি করা গুরুত্বপূর্ণ, যাতে ফর্ম ইনপুট সঠিকভাবে প্রক্রিয়া করা যায় এবং সঠিক ফলাফল পাওয়া যায়।
ফর্মের জন্য submit হ্যান্ডলার এবং validation ফাংশন তৈরি করা:
function my_custom_form_submit($form, &$form_state) { // ফর্ম ডেটা প্রক্রিয়া drupal_set_message(t('Form successfully submitted!')); } function my_custom_form_validate($form, &$form_state) { // ফর্ম ইনপুট ভ্যালিডেশন if (empty($form_state['values']['my_text_field'])) { form_set_error('my_text_field', t('This field is required.')); } }
৩. ফর্মের জন্য CSS এবং JavaScript যুক্ত করা
আপনি ফর্মের জন্য কাস্টম CSS এবং JavaScript যুক্ত করতে পারেন, যাতে ফর্মের ডিজাইন এবং কার্যকারিতা আরও উন্নত হয়।
CSS এবং JavaScript যুক্ত করা:
function my_custom_module_theme() { return array( 'my_custom_form' => array( 'render element' => 'form', 'path' => drupal_get_path('module', 'my_custom_module') . '/templates', 'preprocess functions' => array('my_custom_form_preprocess'), ), ); }
৪. ফর্ম জমা দেওয়া এবং তথ্য প্রক্রিয়া করা
ফর্ম জমা দেওয়ার পরে তথ্য প্রক্রিয়া করতে হবে, যেমন ডেটাবেসে সেভ করা বা ইউজারকে একটি মেসেজ দেখানো। আপনি এই কাজটি ফর্মের submit হ্যান্ডলার ফাংশনে করতে পারেন।
উপসংহার
ড্রুপালে কাস্টম কন্টেন্ট টাইপ এবং কাস্টম ফর্ম কাস্টমাইজেশন প্রক্রিয়া অত্যন্ত নমনীয় এবং শক্তিশালী। Content Types এবং Form API ব্যবহারের মাধ্যমে আপনি আপনার সাইটের কন্টেন্ট ইনপুট এবং প্রদর্শন কাস্টমাইজ করতে পারেন। এই কাস্টমাইজেশন ড্রুপাল সাইটকে আরও ব্যবহারের উপযোগী এবং প্রয়োজনীয়তা অনুযায়ী মডিফাই করা সম্ভব করে তোলে।
ড্রুপাল (Drupal) একটি অত্যন্ত নমনীয় কনটেন্ট ম্যানেজমেন্ট সিস্টেম (CMS), যা কাস্টম কনটেন্ট টাইপ তৈরি করার সুবিধা প্রদান করে। ড্রুপালে Custom Content Types তৈরি করলে আপনি বিভিন্ন ধরনের কনটেন্টকে শ্রেণীবদ্ধ এবং কাস্টমাইজ করতে পারেন, যা সাইটের বিভিন্ন বিভাগের জন্য উপযোগী হয়। যেমন: ব্লগ পোস্ট, প্রোডাক্ট, ইভেন্ট, টেস্টিমোনিয়াল ইত্যাদি। কাস্টম কনটেন্ট টাইপ তৈরি করার মাধ্যমে আপনি নতুন ফিল্ড, ফর্ম, এবং ভিউ তৈরি করতে পারবেন।
কাস্টম কনটেন্ট টাইপ তৈরি করার প্রক্রিয়া
১. কাস্টম কনটেন্ট টাইপ তৈরি করা
- Admin Interface-এ যান:
Structure > Content types > Add content type - Content type name ফিল্ডে কাস্টম কনটেন্ট টাইপের নাম দিন, যেমন:
Event,Product,Blog Postইত্যাদি। - Description (বর্ণনা) প্রদান করুন (অপশনাল), যা কনটেন্ট টাইপটির উদ্দেশ্য বর্ণনা করবে।
- Submission form settings:
এখানে আপনি কনটেন্ট টাইপের জন্য সাবমিশন ফর্ম কাস্টমাইজ করতে পারেন, যেমন মেটা ট্যাগ বা কাস্টম ফিল্ড। - Publishing options:
আপনি চাইলেই কনটেন্ট টাইপের জন্য পাবলিশিং এবং স্ট্যাটাস কনফিগার করতে পারেন, যেমন ডিফল্টভাবে পাবলিশ বা আর্কাইভ হিসাবে রাখা। - Save content type:
কনটেন্ট টাইপ তৈরি হয়ে গেলে Save content type বাটনে ক্লিক করুন।
২. কাস্টম ফিল্ড যোগ করা
একটি কাস্টম কনটেন্ট টাইপ তৈরি করার পর, আপনি Custom Fields যোগ করতে পারবেন, যা কনটেন্ট টাইপের জন্য অতিরিক্ত তথ্য যোগ করতে সাহায্য করে।
- Content types > আপনার কনটেন্ট টাইপ নির্বাচন করুন (যেমন,
ProductবাEvent)। - Manage fields অপশনটি ক্লিক করুন।
- এখানে আপনি বিভিন্ন ফিল্ড টাইপ যোগ করতে পারবেন, যেমন:
- Text field: সাধারণ টেক্সট ইনপুট
- Image field: ইমেজ আপলোড করার জন্য
- Date field: তারিখ নির্বাচন করার জন্য
- Boolean field: হ্যাঁ/না বক্স
- File field: ফাইল আপলোড করার জন্য
- ফিল্ডের নাম এবং অন্যান্য কনফিগারেশন সেট করতে পারেন এবং Save বাটনে ক্লিক করুন।
৩. ফর্ম কনফিগারেশন
আপনি কনটেন্ট টাইপের জন্য ফর্ম কনফিগারেশন নির্ধারণ করতে পারেন, যেমন কীভাবে কনটেন্ট সাবমিট হবে এবং সেগুলি কীভাবে প্রদর্শিত হবে।
- Content types > আপনার কনটেন্ট টাইপ নির্বাচন করুন।
- Manage form display অপশনে যান।
- এখানে আপনি কনটেন্ট ফর্মের জন্য ফিল্ড ডিসপ্লে কনফিগার করতে পারবেন, যেমন:
- Text format (টেক্সট ফরম্যাট সেটিংস)
- Field order (ফিল্ডের অর্ডার পরিবর্তন)
- Field labels (ফিল্ড লেবেল ডিসপ্লে কনফিগারেশন)
- Save করুন।
৪. ফিল্ড ডিসপ্লে কনফিগারেশন
কাস্টম কনটেন্ট টাইপের ডিসপ্লে কনফিগার করতে পারেন, যাতে কনটেন্ট সঠিকভাবে সাইটের ভিউতে প্রদর্শিত হয়।
- Content types > আপনার কনটেন্ট টাইপ নির্বাচন করুন।
- Manage display অপশনে যান।
- এখানে আপনি কনটেন্ট টাইপের ডিসপ্লে কনফিগার করতে পারেন, যেমন:
- Field display: ফিল্ডের ডিসপ্লে অর্ডার পরিবর্তন
- Text format: টেক্সট ফরম্যাট সেটিংস
- Image style: ইমেজের স্টাইল কনফিগারেশন
- Save করুন।
কাস্টম কনটেন্ট টাইপ ব্যবহার
একবার কাস্টম কনটেন্ট টাইপ তৈরি এবং কনফিগার করার পর, আপনি সাইটের Content পেজে গিয়ে নতুন কনটেন্ট টাইপ তৈরি করতে পারেন।
১. নতুন কনটেন্ট তৈরি করা
- Content > Add content এ যান।
- আপনি যে কাস্টম কনটেন্ট টাইপ তৈরি করেছেন, তার জন্য অপশন দেখতে পাবেন (যেমন, Event, Product ইত্যাদি)।
- সঠিক কনটেন্ট টাইপ নির্বাচন করে ফিল্ডের তথ্য পূর্ণ করুন এবং Save করুন।
২. Views তৈরি করা
একটি কাস্টম কনটেন্ট টাইপের ভিউ (views) তৈরি করতে, আপনি এটি ভিজ্যুয়াল ডিসপ্লে এবং ফিল্টারিং, পেজিনেশন (pagination), এবং সাজানোর জন্য কাস্টমাইজ করতে পারেন।
- Structure > Views > Add view তে গিয়ে নতুন ভিউ তৈরি করুন।
- ভিউটির জন্য কনটেন্ট টাইপ নির্বাচন করুন এবং ডিসপ্লে সেটিংস কনফিগার করুন (যেমন, পেজ, ব্লক, এবং আরও অনেক কিছু)।
উপসংহার
ড্রুপালে Custom Content Types তৈরি করা সাইটের কনটেন্ট পরিচালনার একটি শক্তিশালী উপায়। কাস্টম কনটেন্ট টাইপের মাধ্যমে আপনি সাইটের বিভিন্ন কনটেন্ট শ্রেণীভুক্ত এবং কাস্টমাইজ করতে পারেন। কাস্টম ফিল্ড, ফর্ম কনফিগারেশন এবং ডিসপ্লে কনফিগারেশন ব্যবহার করে আপনি কনটেন্ট টাইপগুলিকে আরও ব্যবহারকারীর জন্য উপযোগী এবং কার্যকরী করে তুলতে পারেন। এটি ড্রুপালের নমনীয়তা এবং কাস্টমাইজেশনের একটি মূল বৈশিষ্ট্য।
ড্রুপাল (Drupal) এর Form API একটি শক্তিশালী টুল যা ডেভেলপারদের কাস্টম ফর্ম তৈরি এবং তাদের সাথে ইন্টারঅ্যাকশন তৈরি করতে সহায়তা করে। ফর্মগুলি ড্রুপালে কাস্টম কন্টেন্ট সংগ্রহ, ইউজার ইনপুট গ্রহণ, এবং ডেটা প্রক্রিয়া করতে ব্যবহৃত হয়। ড্রুপাল ফর্ম API ব্যবহারের মাধ্যমে আপনি ফর্মের ক্ষেত্র, বৈধতা, সাবমিশন হ্যান্ডলিং এবং আউটপুট কাস্টমাইজ করতে পারেন।
এই গাইডে আমরা ড্রুপাল Form API ব্যবহার করে কাস্টম ফর্ম তৈরি করার একটি সাধারণ পদ্ধতি আলোচনা করবো।
১. কাস্টম ফর্ম তৈরি করা
ড্রুপালে কাস্টম ফর্ম তৈরি করার জন্য, আপনাকে একটি মডিউল তৈরি করতে হবে যা ফর্মের জন্য প্রয়োজনীয় কোড ধারণ করবে।
কাস্টম মডিউল তৈরি করা
- মডিউল ডিরেক্টরি তৈরি করুন: প্রথমে একটি নতুন মডিউল ডিরেক্টরি তৈরি করুন, যেমন
custom_form_module। custom_form_module.moduleফাইল তৈরি করুন: এই ফাইলটি আপনার মডিউলের লজিক ধারণ করবে।- মডিউল ইনফো ফাইল তৈরি করুন:
custom_form_module.info.ymlফাইলটি তৈরি করুন এবং এতে মডিউলের তথ্য উল্লেখ করুন।
name: 'Custom Form Module'
type: module
description: 'A custom form example using Form API.'
core_version_requirement: ^8 || ^9
package: Custom
dependencies:
- drupal:form
কাস্টম ফর্ম কোড তৈরি করা
এখন, আমরা Form API ব্যবহার করে কাস্টম ফর্ম তৈরি করব।
- ফর্ম তৈরি করতে
hook_menu()বাRouteব্যবহার: আপনার ফর্মটি প্রদর্শন করার জন্য রাউট তৈরি করুন। - ফর্ম তৈরি এবং সাবমিট হ্যান্ডলার লিখুন: ফর্ম তৈরি করতে ড্রুপাল ফর্ম API ব্যবহার করতে হবে।
/**
* Implements hook_menu().
*/
function custom_form_module_menu() {
$items = array();
// Add a new route to show the form.
$items['custom-form'] = array(
'title' => 'Custom Form',
'page callback' => 'custom_form_page',
'page arguments' => array(),
'access callback' => 'user_access',
'access arguments' => array('administer site configuration'),
'type' => MENU_CALLBACK,
);
return $items;
}
/**
* Custom form page callback.
*/
function custom_form_page() {
$form = drupal_get_form('custom_form_module_form');
return $form;
}
/**
* Define the form using Form API.
*/
function custom_form_module_form($form, &$form_state) {
// Add a text field.
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('Name'),
'#description' => t('Please enter your name.'),
'#required' => TRUE,
);
// Add an email field.
$form['email'] = array(
'#type' => 'textfield',
'#title' => t('Email'),
'#description' => t('Please enter your email address.'),
'#required' => TRUE,
'#attributes' => array('placeholder' => 'example@example.com'),
);
// Add a submit button.
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
return $form;
}
/**
* Form submission handler.
*/
function custom_form_module_form_submit($form, &$form_state) {
$name = $form_state['values']['name'];
$email = $form_state['values']['email'];
// Handle the form submission, e.g., send an email, save to database, etc.
drupal_set_message(t('Name: @name, Email: @email', array('@name' => $name, '@email' => $email)));
}
২. ফর্ম ক্ষেত্র এবং বৈধতা
ড্রুপাল ফর্ম API আপনাকে ফর্ম ক্ষেত্র এবং তাদের বৈধতা নির্ধারণ করার সুযোগ দেয়। আপনি #required, #element_validate, #default_value ইত্যাদি কনফিগারেশন ব্যবহার করে ক্ষেত্রগুলি কাস্টমাইজ করতে পারেন।
ফর্ম ক্ষেত্র কাস্টমাইজ করা:
$form['message'] = array(
'#type' => 'textarea',
'#title' => t('Message'),
'#description' => t('Enter your message here.'),
'#required' => TRUE,
);
ফর্মে বৈধতা (Validation) যোগ করা:
ড্রুপাল ফর্ম API আপনাকে ফর্মের বৈধতা নির্ধারণ করার সুযোগ দেয়। আপনি #validate ব্যবহার করে একটি ফাংশন সেট করতে পারেন যা ফর্ম ইনপুট যাচাই করবে।
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('Name'),
'#required' => TRUE,
'#element_validate' => array('custom_form_name_validate'),
);
function custom_form_name_validate($element, &$form_state) {
if (strlen($element['#value']) < 3) {
form_set_error($element['#name'], t('The name must be at least 3 characters long.'));
}
}
৩. ফর্মের স্টাইলিং এবং কাস্টমাইজেশন
ড্রুপাল ফর্ম API এর মাধ্যমে আপনি ফর্মের CSS এবং JavaScript কাস্টমাইজ করতে পারেন। আপনি ফর্ম ক্ষেত্রগুলির জন্য কাস্টম CSS ক্লাস যোগ করতে পারেন এবং অতিরিক্ত JavaScript যুক্ত করতে পারেন।
$form['name']['#attributes'] = array('class' => array('custom-class'));
$form['#attached']['library'][] = 'custom_form_module/custom_js';
কাস্টম JavaScript যোগ করা:
- আপনার মডিউলে একটি
custom_form_module.jsফাইল তৈরি করুন। - মডিউলের
.libraries.ymlফাইলে JavaScript ফাইল রেজিস্টার করুন।
custom_form_module.custom_js:
version: 1.x
js:
js/custom_form_module.js: {}
dependencies:
- core/jquery
৪. ফর্ম সাবমিশন হ্যান্ডলার
ফর্ম সাবমিট হওয়ার পর আপনি ডেটা প্রক্রিয়া করতে পারেন, যেমন:
- ইউজারের ইনপুট ডেটাবেসে সেভ করা
- কাস্টম ইমেল পাঠানো
- অন্যান্য কাস্টম কাজ করা
function custom_form_module_form_submit($form, &$form_state) {
// Save the form data or send an email.
$name = $form_state['values']['name'];
$email = $form_state['values']['email'];
// Example: Send email after form submission
mail($email, 'Form Submitted', 'Thank you for your submission.');
drupal_set_message(t('Your form has been submitted successfully.'));
}
৫. ফর্মের ফলাফল দেখানো
ফর্ম সফলভাবে সাবমিট হলে আপনি drupal_set_message ফাংশন ব্যবহার করে একটি বার্তা প্রদর্শন করতে পারেন:
drupal_set_message(t('Form submitted successfully.'));
উপসংহার
ড্রুপাল Form API ব্যবহারের মাধ্যমে আপনি কাস্টম ফর্ম তৈরি করতে পারেন যা ইউজার ইনপুট গ্রহণ, ডেটা প্রক্রিয়া এবং বিভিন্ন ইন্টারঅ্যাকশন পরিচালনা করতে সক্ষম। ফর্ম ক্ষেত্র, বৈধতা, সাবমিশন এবং আউটপুট কাস্টমাইজেশন করে আপনি আপনার সাইটের ফর্মগুলোকে আরও কার্যকরী এবং ব্যবহারকারীর জন্য সেরা অভিজ্ঞতা দিতে পারেন।
ড্রুপাল (Drupal) একটি অত্যন্ত নমনীয় এবং শক্তিশালী কনটেন্ট ম্যানেজমেন্ট সিস্টেম (CMS), যা কাস্টম ফিল্ড (Custom Fields) তৈরি এবং কনফিগার করার জন্য উন্নত ফিচার সরবরাহ করে। কাস্টম ফিল্ডের মাধ্যমে আপনি ড্রুপাল সাইটের কনটেন্টের জন্য নতুন তথ্য প্রকার (Data Types) সংজ্ঞায়িত করতে পারেন এবং সেই ফিল্ডগুলোকে নির্দিষ্ট কনটেন্ট টাইপে যুক্ত করতে পারেন। ফিল্ডের সাথে যুক্ত Widgets ব্যবহার করে কনটেন্ট এডিটরদের জন্য তথ্য ইনপুট করার ইন্টারফেস কাস্টমাইজ করা যায়।
এই গাইডে, আমরা কিভাবে ড্রুপালে Custom Field Types এবং Widgets তৈরি করা যায় তা আলোচনা করব।
১. কাস্টম ফিল্ড (Custom Field) এবং তার প্রয়োজন
ড্রুপাল সিস্টেমে কাস্টম ফিল্ড ব্যবহার করে আপনি নতুন ধরনের তথ্য তৈরি করতে পারেন যা ড্রুপালের ডিফল্ট ফিল্ডগুলোর মধ্যে অন্তর্ভুক্ত নয়। কাস্টম ফিল্ড আপনাকে বিভিন্ন ধরনের ডেটা, যেমন:
- টেক্সট ফিল্ড (Text Fields)
- ইমেজ ফিল্ড (Image Fields)
- লিস্ট ফিল্ড (List Fields)
- ইন্টিজার ফিল্ড (Integer Fields)
- ফাইল ফিল্ড (File Fields)
- ডেট ফিল্ড (Date Fields)
এছাড়া, কাস্টম ফিল্ডগুলোর জন্য আপনি কাস্টম Widgets তৈরি করতে পারেন, যা কনটেন্ট এডিটরদের জন্য এই ফিল্ডগুলো সহজে ইনপুট করার সুযোগ দেয়।
২. কাস্টম ফিল্ড টাইপ (Custom Field Type) তৈরি করা
ড্রুপালে কাস্টম ফিল্ড টাইপ তৈরি করতে আপনাকে একটি কাস্টম মডিউল তৈরি করতে হবে, কারণ ফিল্ড টাইপগুলি সাধারণত মডিউলের মাধ্যমে কনফিগার করা হয়। নিচে কাস্টম ফিল্ড টাইপ তৈরি করার ধাপগুলো দেয়া হলো:
Step 1: কাস্টম মডিউল তৈরি করা
প্রথমে, একটি কাস্টম মডিউল তৈরি করুন:
- modules/custom ডিরেক্টরিতে একটি নতুন ফোল্ডার তৈরি করুন, যেমন
my_custom_fields। - ফোল্ডারের মধ্যে
my_custom_fields.info.ymlফাইলটি তৈরি করুন এবং নিচের কনফিগারেশন যোগ করুন:
name: 'My Custom Fields'
type: module
description: 'Provides custom field types'
core_version_requirement: ^8 || ^9
package: Custom
dependencies:
- drupal:field
Step 2: কাস্টম ফিল্ড টাইপ ক্লাস তৈরি করা
আপনার কাস্টম ফিল্ড টাইপের জন্য একটি ক্লাস তৈরি করতে হবে। এর মাধ্যমে আপনি ড্রুপালের ফিল্ড API ব্যবহার করে কাস্টম ফিল্ড টাইপ তৈরি করতে পারবেন।
src/Plugin/Field/FieldType ডিরেক্টরিতে একটি PHP ফাইল তৈরি করুন, যেমন MyCustomFieldType.php এবং নীচের কোড যোগ করুন:
namespace Drupal\my_custom_fields\Plugin\Field\FieldType;
use Drupal\Core\Field\FieldStorageDefinitionInterface;
use Drupal\field\Plugin\Field\FieldType\BaseFieldType;
use Drupal\Core\Field\FieldItemInterface;
/**
* @FieldType(
* id = "my_custom_field_type",
* label = @Translation("My Custom Field Type"),
* description = @Translation("A custom field type"),
* category = @Translation("Custom"),
* default_widget = "my_custom_widget",
* default_formatter = "text_field"
* )
*/
class MyCustomFieldType extends BaseFieldType {
/**
* {@inheritdoc}
*/
public static function fieldStorageDefinition(FieldStorageDefinitionInterface $field_storage_definition) {
// কাস্টম ফিল্ডের স্টোরেজ কনফিগারেশন নির্ধারণ করুন
}
/**
* {@inheritdoc}
*/
public function generateSampleValue(FieldStorageDefinitionInterface $field_storage_definition) {
// কাস্টম ফিল্ডের জন্য একটি স্যাম্পল মান তৈরি করুন
return 'Sample Value';
}
}
Step 3: মডিউল এনেবল করুন
আপনার তৈরি করা মডিউলটি এনেবল করতে:
- ড্রুপাল সাইটে লগ ইন করুন।
- Extend মেনু থেকে আপনার কাস্টম মডিউল
My Custom Fieldsসক্রিয় করুন।
এখন আপনি ড্রুপালে একটি নতুন কাস্টম ফিল্ড টাইপ দেখতে পাবেন, যেটি আপনি কনটেন্ট টাইপ বা ট্যেক্সট ফিল্ডের জন্য ব্যবহার করতে পারবেন।
৩. কাস্টম উইজেট (Custom Widget) তৈরি করা
Widgets হল ড্রুপালে ফিল্ডে তথ্য ইনপুট করার জন্য ব্যবহৃত ইউজার ইন্টারফেস উপাদান। ড্রুপাল কাস্টম উইজেট তৈরি করতে আপনাকে একটি ক্লাস তৈরি করতে হবে যা ফিল্ড টাইপের সাথে যুক্ত হবে।
Step 1: কাস্টম উইজেট ক্লাস তৈরি করা
src/Plugin/Field/FieldWidget ডিরেক্টরিতে একটি PHP ফাইল তৈরি করুন, যেমন MyCustomWidget.php এবং নিচের কোডটি যোগ করুন:
namespace Drupal\my_custom_fields\Plugin\Field\FieldWidget;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Field\WidgetBase;
use Drupal\Core\Form\FormStateInterface;
/**
* @FieldWidget(
* id = "my_custom_widget",
* label = @Translation("My Custom Widget"),
* field_types = {
* "my_custom_field_type"
* }
* )
*/
class MyCustomWidget extends WidgetBase {
/**
* {@inheritdoc}
*/
public static function defaultSettings() {
return [
'my_custom_option' => '',
] + parent::defaultSettings();
}
/**
* {@inheritdoc}
*/
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
// কাস্টম উইজেটের ফর্ম উপাদান তৈরি করুন
$element['value'] = [
'#type' => 'textfield',
'#title' => $this->t('Custom Field'),
'#default_value' => isset($items[$delta]->value) ? $items[$delta]->value : '',
];
return $element;
}
}
Step 2: কাস্টম উইজেট সক্রিয় করুন
আপনার কাস্টম উইজেট তৈরি হওয়ার পর, ড্রুপাল অ্যাডমিন প্যানেল থেকে Field settings এ গিয়ে আপনি এই উইজেটটি কনফিগার করতে পারেন এবং ব্যবহার করতে পারেন।
৪. কাস্টম ফিল্ড টাইপ এবং উইজেট ব্যবহার
একবার কাস্টম ফিল্ড টাইপ এবং উইজেট তৈরি হলে, আপনি আপনার কনটেন্ট টাইপ বা ফিল্ড কনফিগারেশনে এই নতুন কাস্টম ফিল্ড টাইপ এবং উইজেট ব্যবহার করতে পারেন।
- Custom Field Type ব্যবহার করতে, আপনার কনটেন্ট টাইপ এডিট করুন এবং সেখানে নতুন কাস্টম ফিল্ড টাইপ যোগ করুন।
- Custom Widget উইজেট হিসেবে ফিল্ডের জন্য কাস্টম UI উপাদান সরবরাহ করতে সাহায্য করবে।
উপসংহার
ড্রুপালে কাস্টম ফিল্ড টাইপ এবং উইজেট তৈরি করা সাইটের কনটেন্ট ম্যানেজমেন্ট ক্ষমতাকে ব্যাপকভাবে কাস্টমাইজ করে। কাস্টম ফিল্ডস আপনাকে নতুন ধরনের ডেটা ফিল্ড তৈরি করতে দেয় এবং কাস্টম উইজেট ব্যবহারকারীদের জন্য ইনপুট ইন্টারফেস কাস্টমাইজ করে। এই প্রক্রিয়াগুলো ড্রুপালের শক্তিশালী ফিল্ড API ব্যবহার করে করা যায়, যা আপনার সাইটকে আরও ইন্টারঅ্যাকটিভ এবং ফিচার-বান্ধব করে তোলে।
ড্রুপাল (Drupal) একটি শক্তিশালী কনটেন্ট ম্যানেজমেন্ট সিস্টেম (CMS), যা ফর্ম তৈরি এবং ব্যবস্থাপনার জন্য বিল্ট-ইন টুলস প্রদান করে। ফর্ম ভ্যালিডেশন (Form Validation) এবং ডাটা সাবমিশন (Data Submission) হল ওয়েব ফর্ম ব্যবস্থাপনার অত্যন্ত গুরুত্বপূর্ণ অংশ, যা সঠিক ডাটা গ্রহণ এবং প্রক্রিয়াকরণ নিশ্চিত করে।
এই টিউটোরিয়ালে, আমরা ফর্ম ভ্যালিডেশন এবং ডাটা সাবমিশন এর ধারণা এবং কিভাবে ড্রুপালে এই কাজগুলো সম্পন্ন করা যায়, তা বিস্তারিতভাবে আলোচনা করব।
ফর্ম ভ্যালিডেশন কী?
ফর্ম ভ্যালিডেশন হল একটি প্রক্রিয়া যেখানে ফর্ম সাবমিশনের আগে ফর্মের ইনপুট ডাটা যাচাই করা হয়, যাতে নিশ্চিত হওয়া যায় যে ব্যবহারকারীর দ্বারা প্রদান করা ডাটা সঠিক এবং প্রত্যাশিত ফরম্যাটে রয়েছে। ড্রুপালে, ফর্ম ভ্যালিডেশন একটি গুরুত্বপূর্ণ অংশ, কারণ এটি ব্যবহারকারীর ভুল ইনপুট বা অনুপযুক্ত ডাটা হ্যান্ডল করতে সহায়ক।
ফর্ম ভ্যালিডেশন কিভাবে কাজ করে?
ড্রুপালে, আপনি Custom Forms তৈরি করতে পারেন এবং তার মধ্যে ফর্ম ভ্যালিডেশন যুক্ত করতে পারেন। এই ভ্যালিডেশনগুলি সাধারণত ফর্ম সাবমিশনের আগে চালানো হয়।
ড্রুপালে কাস্টম ফর্ম তৈরি এবং ভ্যালিডেশন
ড্রুপালে কাস্টম ফর্ম তৈরি করতে হলে আপনাকে Form API ব্যবহার করতে হবে। Form API ড্রুপালের একটি শক্তিশালী ফিচার, যা ফর্ম তৈরি, ভ্যালিডেশন এবং ডাটা সাবমিশন সহজ করে।
১. ফর্ম তৈরি করুন
আপনি যদি একটি কাস্টম ফর্ম তৈরি করতে চান, তবে প্রথমে hook_menu() ব্যবহার করে একটি রুট সেট আপ করুন।
function mymodule_menu() {
$items = array();
$items['myform'] = array(
'title' => 'Custom Form',
'page callback' => 'myform_page',
'page arguments' => array(),
'access callback' => 'user_access',
'access arguments' => array('administer site configuration'),
'type' => MENU_CALLBACK,
);
return $items;
}
২. ফর্ম তৈরি এবং ফিল্ড যোগ করা
এখন আপনি ফর্ম তৈরি করতে পারেন। ফর্মের জন্য একটি ফাংশন তৈরি করুন যেখানে ফর্ম ফিল্ডস এবং তাদের প্রোপার্টি ডিফাইন করা হবে।
function myform_page() {
$form = drupal_get_form('myform');
return $form;
}
function myform_page_submit($form, &$form_state) {
// সাবমিশন ডাটা প্রক্রিয়া
$name = $form_state['values']['name'];
drupal_set_message(t('Hello @name!', array('@name' => $name)));
}
function myform_page_form($form, &$form_state) {
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('Your name'),
'#required' => TRUE,
);
// Submit button
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
return $form;
}
৩. ফর্ম ভ্যালিডেশন যোগ করা
ড্রুপালে ফর্ম ভ্যালিডেশন ফাংশন form_validate ব্যবহার করে করা যায়। যদি কোনও ইনপুট ভুল বা অনুপযুক্ত হয়, তবে আপনি ব্যবহারকারীকে একটি ত্রুটি মেসেজ প্রদান করতে পারেন।
function myform_page_validate($form, &$form_state) {
// নামের জন্য ভ্যালিডেশন
if (empty($form_state['values']['name'])) {
form_set_error('name', t('Please enter your name.'));
}
}
এখানে, আমরা myform_page_validate() ফাংশনে name ফিল্ডটি যাচাই করেছি। যদি এটি ফাঁকা থাকে, তবে ত্রুটি মেসেজ প্রদর্শিত হবে।
৪. ফর্ম জমা দেওয়ার পরে ডাটা প্রক্রিয়াকরণ
ফর্ম জমা দেওয়ার পরে ড্রুপাল ব্যবহারকারীর ইনপুট ডাটাকে প্রক্রিয়াকরণ করে। এই প্রক্রিয়াটি ফর্ম সাবমিশনের সাথে যুক্ত থাকে।
function myform_page_submit($form, &$form_state) {
$name = $form_state['values']['name'];
drupal_set_message(t('Hello @name!', array('@name' => $name)));
}
এখানে, ব্যবহারকারীর নাম গ্রহণ করে একটি স্বাগত বার্তা প্রদর্শিত হচ্ছে।
ড্রুপালে ডাটা সাবমিশন কী?
ডাটা সাবমিশন হল একটি প্রক্রিয়া যেখানে ব্যবহারকারী একটি ফর্ম সাবমিট করার পর, সেই ডাটা ডেটাবেসে বা অন্য কোনও ডাটা স্টোরেজ সিস্টেমে জমা হয়। ড্রুপাল ফর্মে সাবমিশনের ডাটা সংগ্রহ এবং সঠিকভাবে প্রক্রিয়াকরণ করার জন্য Form API ব্যবহার করা হয়।
ডাটা সাবমিশন কিভাবে কাজ করে?
ড্রুপাল ফর্মে ডাটা সাবমিশন তখন ঘটে যখন ব্যবহারকারী ফর্ম পূরণ করে এবং সাবমিট করে। সাবমিশনের পর ড্রুপাল ডাটাকে প্রসেস করে এবং তা সেভ করে অথবা ফাইল সিস্টেমে জমা দেয়, যেমন:
- ডাটাবেসে ডাটা সংরক্ষণ
- ইমেইল পাঠানো
- পেজ রিডাইরেকশন
ড্রুপালে ডাটা সাবমিশন কনফিগারেশন
১. ফর্ম ডাটা ডেটাবেসে সংরক্ষণ
ড্রুপালে ডাটা সাবমিশন সঞ্চালিত হলে আপনি Database API ব্যবহার করে তা ডেটাবেসে সংরক্ষণ করতে পারেন। উদাহরণস্বরূপ:
function myform_page_submit($form, &$form_state) {
$name = $form_state['values']['name'];
// ডাটাবেসে ডাটা সংরক্ষণ
db_insert('my_custom_table')
->fields(array('name' => $name))
->execute();
drupal_set_message(t('Data has been saved.'));
}
২. ফর্ম সাবমিশনের পর ইমেইল পাঠানো
ফর্ম ডাটা সাবমিট করার পর আপনি একটি ইমেইল পাঠাতে পারেন। এর জন্য ড্রুপালের mail() ফাংশন ব্যবহার করা হয়।
function myform_page_submit($form, &$form_state) {
$name = $form_state['values']['name'];
// ইমেইল পাঠানো
$params = array('name' => $name);
drupal_mail('my_module', 'form_submission', 'admin@example.com', language_default(), $params);
}
এখানে, ফর্ম সাবমিশনের পরে একটি ইমেইল পাঠানো হবে।
উপসংহার
ড্রুপাল ফর্ম ভ্যালিডেশন এবং ডাটা সাবমিশন প্রক্রিয়া সঠিকভাবে ব্যবহারকারীর ইনপুট যাচাই এবং সেগুলিকে নিরাপদভাবে প্রক্রিয়াকরণে সহায়ক। Form API ড্রুপালে কাস্টম ফর্ম তৈরি, ভ্যালিডেশন, এবং সাবমিশন প্রক্রিয়াগুলি সহজ এবং মসৃণ করে তোলে। এই ফিচারগুলো ড্রুপালকে আরও শক্তিশালী এবং নিরাপদ করে তোলে।
ড্রুপাল (Drupal) একটি শক্তিশালী কনটেন্ট ম্যানেজমেন্ট সিস্টেম (CMS) যা বিভিন্ন কাস্টম ফিল্ড তৈরি এবং কনফিগার করার জন্য অত্যন্ত নমনীয়। তবে, শুধু কন্টেন্ট টাইপের জন্য ফিল্ডগুলো কাস্টমাইজ করাই নয়, ড্রুপালে ফিল্ড পারমিশন (Field Permissions) এবং ফিল্ড লেভেল সিকিউরিটি (Field Level Security) কনফিগার করা আরও গুরুত্বপূর্ণ, বিশেষ করে যখন আপনি নির্দিষ্ট ফিল্ডে প্রবেশাধিকার এবং সিকিউরিটি কন্ট্রোল করতে চান।
এই টিউটোরিয়ালে, আমরা ফিল্ড পারমিশন এবং ফিল্ড লেভেল সিকিউরিটি কনফিগার করার পদ্ধতি আলোচনা করব।
Field Permissions (ফিল্ড পারমিশন)
ফিল্ড পারমিশন হল একটি ফিচার যা ব্যবহারকারীদের বিভিন্ন কনটেন্ট ফিল্ডে প্রবেশাধিকার নিয়ন্ত্রণ করতে সহায়তা করে। ড্রুপালে, আপনি কনফিগার করতে পারবেন যে কোন ইউজার রোল (যেমন, অ্যাডমিন, কন্টেন্ট এডিটর, সাবস্ক্রাইবার ইত্যাদি) কোন ফিল্ড দেখতে বা সম্পাদনা করতে পারবে।
১. Field Permissions মডিউল ইনস্টল করা
ফিল্ড পারমিশন কনফিগার করতে Field Permissions মডিউলটি ইনস্টল করতে হয়। এটি একটি কনট্রিবিউটেড মডিউল যা আপনার ফিল্ডের জন্য পারমিশন সেট করতে সাহায্য করে।
- মডিউল ডাউনলোড করুন: Field Permissions module থেকে মডিউলটি ডাউনলোড করুন।
- মডিউল ইনস্টল করুন: ড্রুপাল অ্যাডমিন প্যানেল থেকে Admin Menu → Extend তে যান এবং Field Permissions মডিউলটি সক্রিয় করুন।
২. Field Permissions কনফিগারেশন
মডিউলটি ইনস্টল করার পর, আপনি নির্দিষ্ট ফিল্ডের জন্য পারমিশন কনফিগার করতে পারবেন।
- Admin Menu → Configuration → People → Field permissions এ যান।
- এখানে, আপনি কোন ফিল্ড কোন রোলের জন্য দৃশ্যমান হবে, সম্পাদনাযোগ্য হবে, অথবা দৃশ্যমান হবে না, তা কনফিগার করতে পারবেন।
ফিল্ড পারমিশন কনফিগার করার উদাহরণ:
- View permissions: কেবলমাত্র অ্যাডমিনরা যদি একটি নির্দিষ্ট ফিল্ড দেখতে পারেন, তবে এটি কনফিগার করা যাবে।
- Edit permissions: কন্টেন্ট এডিটররা যদি একটি নির্দিষ্ট ফিল্ড সম্পাদনা করতে পারেন, তবে এটি সেট করা যেতে পারে।
- Delete permissions: কোনো ফিল্ডকে ডিলিট করার অনুমতি দেওয়ার জন্য পারমিশন কনফিগার করতে হবে।
৩. ফিল্ড পারমিশন ব্যবহার করে কাস্টম কনফিগারেশন
আপনি কাস্টম রোল তৈরি করতে পারেন এবং সেই রোল অনুযায়ী পারমিশন সেট করতে পারেন:
- Admin Menu → People → Roles এ গিয়ে কাস্টম রোল তৈরি করুন।
- তারপর, Field Permissions পেজে গিয়ে ঐ রোলটির জন্য ফিল্ড পারমিশন কনফিগার করুন।
Field Level Security (ফিল্ড লেভেল সিকিউরিটি)
ফিল্ড লেভেল সিকিউরিটি হল এমন একটি ফিচার যার মাধ্যমে আপনি নির্দিষ্ট ফিল্ডের জন্য আরও উন্নত সিকিউরিটি নিয়ন্ত্রণ করতে পারেন। এটি ব্যবহারকারীদের নির্দিষ্ট ফিল্ডের জন্য রিড-ওনলি, হাইড বা সম্পূর্ণ ব্লক করার অনুমতি দেয়।
১. Field Level Security মডিউল ইনস্টল করা
ফিল্ড লেভেল সিকিউরিটি কনফিগার করতে Field Level Security মডিউলটি ব্যবহার করতে হয়। এটি আপনার সাইটে ফিল্ড লেভেলে নিরাপত্তা কনফিগারেশন করার জন্য একটি শক্তিশালী টুল।
- মডিউল ডাউনলোড করুন: Field Level Security module থেকে মডিউলটি ডাউনলোড করুন।
- মডিউল ইনস্টল করুন: মডিউল ইনস্টল করার পর, Admin Menu → Extend থেকে মডিউলটি সক্রিয় করুন।
২. Field Level Security কনফিগারেশন
মডিউল ইনস্টল করার পর, আপনি ফিল্ড লেভেল সিকিউরিটি কনফিগার করতে পারবেন:
- Admin Menu → Configuration → Field Level Security এ যান।
- ফিল্ডের জন্য সিকিউরিটি কনফিগার করার জন্য "Add Permissions" বাটনে ক্লিক করুন।
- আপনি চাইলে ফিল্ডের জন্য View permissions, Edit permissions, এবং Hide permissions কনফিগার করতে পারবেন।
ফিল্ড লেভেল সিকিউরিটির কিছু সেটিংস উদাহরণ:
- View permissions: শুধুমাত্র নির্দিষ্ট ইউজার রোলের জন্য ফিল্ড দেখতে দেওয়া।
- Edit permissions: কেবলমাত্র নির্দিষ্ট রোলের ইউজাররা ফিল্ডে পরিবর্তন করতে পারবেন।
- Hide permissions: ইউজার রোলের জন্য ফিল্ডটি সম্পূর্ণভাবে লুকিয়ে রাখা।
৩. ফিল্ড হাইড এবং সিকিউরিটি
ফিল্ড লেভেল সিকিউরিটি ব্যবহারের মাধ্যমে আপনি এমন ফিল্ডগুলো লুকিয়ে রাখতে পারেন যা কিছু ব্যবহারকারীর জন্য প্রদর্শনযোগ্য নয়। উদাহরণস্বরূপ, ব্যবহারকারী যদি কেবলমাত্র কন্টেন্টের বিষয়বস্তু দেখতে পারে এবং তাদের কাছে অন্যান্য সংবেদনশীল তথ্য লুকানো থাকতে হয়, তবে আপনি এই ফিল্ডগুলো হাইড করতে পারবেন।
Field Permissions এবং Field Level Security এর মধ্যে পার্থক্য
- Field Permissions: এটি ব্যবহারকারীদের জন্য নির্দিষ্ট ফিল্ড দেখার, সম্পাদনা করার এবং মুছে ফেলার পারমিশন কনফিগার করার একটি পদ্ধতি।
- Field Level Security: এটি আরো উন্নত সিকিউরিটি সিস্টেম প্রদান করে, যা ফিল্ডের জন্য নির্দিষ্ট ইউজার রোলের অনুমতি এবং প্রবেশাধিকার নিয়ন্ত্রণ করে।
উপসংহার
ড্রুপাল ফিল্ড পারমিশন এবং ফিল্ড লেভেল সিকিউরিটি ব্যবহারের মাধ্যমে আপনি কন্টেন্টের উপর আরও উন্নত নিয়ন্ত্রণ রাখতে পারবেন। Field Permissions মডিউল আপনাকে নির্দিষ্ট ফিল্ডের জন্য পারমিশন কনফিগার করতে সাহায্য করে, এবং Field Level Security মডিউল ব্যবহার করে আপনি নিরাপত্তার দিক থেকে আরও গভীর কাস্টমাইজেশন করতে পারবেন। এই ফিচারগুলো ড্রুপালের শক্তিশালী সিকিউরিটি ব্যবস্থাকে আরও কার্যকরী এবং সুনির্দিষ্ট করে তোলে।
Read more