Custom Field Types এবং Widgets তৈরি করা

ফর্ম এবং কন্টেন্ট টাইপ Customization - ড্রুপাল (Drupal) - Web Development

275

ড্রুপাল (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: কাস্টম মডিউল তৈরি করা

প্রথমে, একটি কাস্টম মডিউল তৈরি করুন:

  1. modules/custom ডিরেক্টরিতে একটি নতুন ফোল্ডার তৈরি করুন, যেমন my_custom_fields
  2. ফোল্ডারের মধ্যে 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: মডিউল এনেবল করুন

আপনার তৈরি করা মডিউলটি এনেবল করতে:

  1. ড্রুপাল সাইটে লগ ইন করুন।
  2. 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 ব্যবহার করে করা যায়, যা আপনার সাইটকে আরও ইন্টারঅ্যাকটিভ এবং ফিচার-বান্ধব করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...