Skill

পেজ টাইপ এবং টেমপ্লেটিং

গ্র্যাভ (Grav) - Web Development

267

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


পেজ টাইপ (Page Types)

Grav পেজ টাইপের মাধ্যমে সাইটের বিভিন্ন ধরনের পেজ তৈরি করা সম্ভব। প্রতিটি পেজে তার নিজস্ব কনটেন্ট, টেমপ্লেট এবং মিডিয়া ফাইল থাকতে পারে। Grav সাইটে প্রধানত দুটি পেজ টাইপ ব্যবহৃত হয়:

১. Default Page (ডিফল্ট পেজ)

এই পেজ টাইপটি Grav সাইটের সাধারণ পেজগুলির জন্য ব্যবহৃত হয়। সাধারণত এই পেজগুলিতে পেজ কনটেন্ট, টেমপ্লেট, মিডিয়া ফাইল এবং মেটাডেটা থাকে।

  • কনটেন্ট ফাইল: এই পেজের কনটেন্ট সাধারণত Markdown (.md) ফাইল হিসেবে থাকে।
  • টেমপ্লেট: Grav সাইটে পেজটি কোন টেমপ্লেট ব্যবহার করবে, তা template ফিল্ডে নির্ধারিত থাকে।

২. Modular Page (মডুলার পেজ)

মডুলার পেজ Grav সাইটের জন্য একটি উন্নত পেজ টাইপ। এই পেজ টাইপের সাহায্যে আপনি একটি পেজের মধ্যে একাধিক সাব-পেজ বা মডিউল তৈরি করতে পারেন। প্রতিটি মডিউল নিজস্ব কনটেন্ট এবং টেমপ্লেট নিয়ে আসে, যা পেজের সাথে যুক্ত করা হয়।

  • কনটেন্ট ফাইল: এই পেজের কনটেন্ট মূলত .md ফাইলের মাধ্যমে তৈরি হয়, তবে এর ভিতরে একাধিক মডিউল এবং সাব-পেজ থাকতে পারে।
  • টেমপ্লেট: সাধারণত মডুলার পেজের জন্য একটি মূল টেমপ্লেট থাকে, কিন্তু প্রতিটি মডিউলেও আলাদা টেমপ্লেট থাকতে পারে।

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


Grav এর টেমপ্লেটিং সিস্টেম

Grav এর টেমপ্লেটিং সিস্টেম Twig টেমপ্লেট ইঞ্জিনের উপর ভিত্তি করে তৈরি। Twig একটি অত্যন্ত শক্তিশালী টেমপ্লেট ইঞ্জিন, যা সাইটের কনটেন্ট এবং ডিজাইনকে একত্রিত করে।

১. Twig টেমপ্লেট ইঞ্জিন

Grav-এর টেমপ্লেটিং সিস্টেম Twig ব্যবহার করে তৈরি হয়। Twig আপনাকে HTML এবং কনটেন্টকে আলাদা ভাবে পরিচালনা করতে দেয়, যা সাইটের ডিজাইন ও কনটেন্ট কাস্টমাইজেশনের জন্য অত্যন্ত সুবিধাজনক।

  • টেমপ্লেট ফাইল: Grav এ একটি পেজের জন্য সাধারণত .twig ফাইল ব্যবহৃত হয়। উদাহরণস্বরূপ, default.twig, modular.twig, বা home.twig ফাইলগুলো।
  • Twig সিনট্যাক্স: Twig আপনাকে লজিক, কন্ডিশন, লুপ ইত্যাদি ব্যবহার করার সুবিধা দেয়। যেমন:

    <h1>{{ page.title }}</h1>
    <div>{{ page.content }}</div>
    

    এই কোডে page.title এবং page.content Grav সাইটের পেজের শিরোনাম এবং কনটেন্টকে রেন্ডার করে।

২. পেজের জন্য টেমপ্লেট নির্বাচন

Grav পেজের জন্য যে টেমপ্লেট ব্যবহার করবে, তা সাধারণত user/pages ফোল্ডারে পেজের .md কনটেন্ট ফাইলে নির্ধারিত থাকে। আপনি পেজের ফন্টম্যাটিং (template) ফিল্ডে টেমপ্লেটের নাম উল্লেখ করতে পারেন:

template: default

এখানে default টেমপ্লেটের নাম। এই টেমপ্লেটটি Grav স্বয়ংক্রিয়ভাবে পেজের জন্য নির্বাচন করবে।

৩. টেমপ্লেট ও ব্লুপ্রিন্ট

Grav সাইটের পেজে ব্লুপ্রিন্ট (blueprints) ফাইলও ব্যবহার করতে পারেন, যা পেজের ফর্ম কনফিগারেশন এবং ডাটা ইনপুট ফিল্ড পরিচালনা করে। ব্লুপ্রিন্ট ফাইলগুলিও YAML ফরম্যাটে থাকে এবং Grav টেমপ্লেটের সাথে সঠিকভাবে কাজ করে।


Grav এ পেজ এবং টেমপ্লেট ব্যবহারের সুবিধা

১. নমনীয়তা ও কাস্টমাইজেশন

Grav এর পেজ টাইপ এবং টেমপ্লেটিং সিস্টেম অত্যন্ত নমনীয়, যার মাধ্যমে আপনি আপনার সাইটের কনটেন্ট এবং ডিজাইন সহজেই কাস্টমাইজ করতে পারেন। একাধিক পেজ টাইপ এবং কাস্টম টেমপ্লেট ব্যবহার করে সাইটের গঠন এবং ভিজ্যুয়াল ডিজাইন সম্পূর্ণভাবে আপনার চাহিদা অনুযায়ী তৈরি করা সম্ভব।

২. সহজ কনটেন্ট ব্যবস্থাপনা

Grav এর টেমপ্লেটিং সিস্টেম এবং পেজ টাইপ ব্যবস্থাপনা পদ্ধতি আপনাকে কনটেন্ট সংরক্ষণ ও প্রদর্শন করার ক্ষেত্রে নমনীয়তা প্রদান করে। আপনি আপনার কনটেন্ট ফাইল এবং টেমপ্লেট ফাইলগুলির মধ্যে সহজে সম্পর্ক স্থাপন করতে পারেন।

৩. ডেভেলপার-বান্ধব

Grav ডেভেলপারদের জন্য অত্যন্ত সুবিধাজনক, কারণ এটি সম্পূর্ণ কাস্টমাইজযোগ্য এবং টেমপ্লেটিং সিস্টেম অত্যন্ত শক্তিশালী। আপনি Twig টেমপ্লেট ইঞ্জিন ব্যবহার করে পেজের লেআউট, কনটেন্ট এবং অন্যান্য ডিজাইন উপাদান একত্রিত করতে পারেন।


সারাংশ

Grav এর পেজ টাইপ এবং টেমপ্লেটিং সিস্টেম সাইট ডিজাইন এবং কনটেন্ট ম্যানেজমেন্টের জন্য অত্যন্ত নমনীয় ও কাস্টমাইজযোগ্য। Grav এর টেমপ্লেটিং সিস্টেম Twig ব্যবহার করে, যা ডেভেলপারদের জন্য সহজ, দ্রুত এবং শক্তিশালী। পেজ টাইপ ব্যবহারের মাধ্যমে আপনি সাধারণ পেজ থেকে মডুলার পেজ পর্যন্ত তৈরি করতে পারবেন এবং সাইটের ডিজাইন এবং কনটেন্টের মধ্যে সম্পূর্ণ নিয়ন্ত্রণ রাখতে পারবেন।

Content added By

Grav একটি ফাইলভিত্তিক কনটেন্ট ম্যানেজমেন্ট সিস্টেম (CMS), যা বিভিন্ন ধরনের পেজ টাইপ সাপোর্ট করে। Grav-এ পেজগুলো সাধারণত বিভিন্ন ধরনের কনটেন্ট এবং লেআউট নির্ভর করে বিভিন্ন পেজ টাইপে বিভক্ত হয়। প্রতিটি পেজ টাইপের নিজস্ব কার্যকারিতা এবং ব্যবহার রয়েছে, যা আপনার সাইটের কাঠামো এবং ডিজাইনের ওপর প্রভাব ফেলে। Grav এর ডিফল্ট পেজ টাইপগুলো হলো Default, Blog, এবং Modular

এখানে এই তিনটি পেজ টাইপের বিশদ আলোচনা করা হলো:


১. ডিফল্ট পেজ টাইপ (Default Page Type)

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

বৈশিষ্ট্য:

  • কনটেন্ট: পেজের কনটেন্ট সাধারণত .md (Markdown) ফাইল হিসেবে থাকে, যা পেজের মধ্যে থাকা তথ্য বা কনটেন্ট প্রদর্শন করে।
  • এলিমেন্ট: এতে সাধারণত HTML, টেক্সট, লিস্ট, লিঙ্ক, এবং মিডিয়া (ইমেজ, ভিডিও) থাকতে পারে।
  • লেআউট: লেআউট এবং ডিজাইন পেজের টেমপ্লেট ফাইলের মাধ্যমে কাস্টমাইজ করা যায়।

উদাহরণ:

যদি আপনার সাইটে একটি সাধারণ "আমাদের সম্পর্কে" (About Us) পেজ থাকে, তবে এটি ডিফল্ট পেজ টাইপে হতে পারে। আপনি এখানে একটি সাধারণ টেক্সট এবং ইমেজ ব্যবহার করবেন যা আপনাকে সাইটের কাঠামো অনুযায়ী উপস্থাপন করতে হবে।

title: আমাদের সম্পর্কে
date: 2024-12-22
taxonomy:
  category: তথ্য

২. ব্লগ পেজ টাইপ (Blog Page Type)

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

বৈশিষ্ট্য:

  • ব্লগ পোস্ট: প্রতিটি ব্লগ পেজে ব্লগ পোস্টের কনটেন্ট থাকে, যা পেজের ফরম্যাটে লেআউট করা হয়।
  • মেটাডেটা: ব্লগ পেজে সাধারণত ব্লগ পোস্টের শিরোনাম, প্রকাশের তারিখ, ট্যাগ এবং ক্যাটেগরি থাকে।
  • নেভিগেশন: ব্লগ পেজে সাধারণত পেজ নেভিগেশন থাকে, যেমন আগের ব্লগ পোস্ট বা পরের ব্লগ পোস্টে যাওয়ার লিঙ্ক।

উদাহরণ:

যদি আপনার সাইটে একটি ব্লগ সেকশন থাকে, আপনি প্রতিটি ব্লগ পোস্টকে এই টাইপে ফরম্যাট করবেন। উদাহরণস্বরূপ, একটি ব্লগ পোস্টের কনটেন্ট:

title: "Grav CMS এর সুবিধা"
date: 2024-12-22
taxonomy:
  category: ব্লগ
  tag: grav, cms, tutorial
# Grav CMS এর সুবিধা

এটি Grav CMS নিয়ে একটি ব্লগ পোস্ট। Grav ব্যবহার করে আপনি খুব দ্রুত সাইট তৈরি করতে পারবেন, এবং এটি খুবই কাস্টমাইজেবল।

৩. মডুলার পেজ টাইপ (Modular Page Type)

মডুলার পেজ টাইপ Grav এর একটি শক্তিশালী পেজ টাইপ, যা পেজের ভেতরে ছোট ছোট ব্লক বা মডিউল ব্যবহার করে একটি বৃহত্তর পেজ তৈরি করার সুবিধা দেয়। এই টাইপটি বিশেষভাবে এমন সাইটের জন্য উপযোগী যেখানে বিভিন্ন ধরনের কনটেন্ট ব্লক একত্রে ব্যবহার করা হয়।

বৈশিষ্ট্য:

  • মডিউল ভিত্তিক: মডুলার পেজগুলো ছোট ছোট মডিউলে বিভক্ত থাকে, যেমন একটি পেজে একাধিক টেক্সট ব্লক, ইমেজ, ভিডিও এবং অন্যান্য কনটেন্ট এলিমেন্ট থাকতে পারে।
  • পেজ লেআউট: পেজের ভেতর বিভিন্ন মডিউল একত্রিত হয়ে একটি একক পেজ তৈরি করে।
  • পেজের ডায়নামিক কনটেন্ট: এটি ডায়নামিক কনটেন্ট এবং স্লাইডার, ফর্ম, লিস্ট, ইত্যাদি ব্যবহার করার জন্য খুবই উপযোগী।

উদাহরণ:

ধরা যাক, আপনার সাইটে একটি হোমপেজ আছে যা মডুলার কাঠামো ব্যবহার করে। এখানে বিভিন্ন মডিউল থাকবে যেমন একটি প্রেজেন্টেশন স্লাইড, সার্ভিসের বিবরণ, গ্রাহকের রিভিউ ইত্যাদি।

title: হোমপেজ
date: 2024-12-22
modular: true

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


Grav এর পেজ টাইপগুলোর তুলনা

পেজ টাইপব্যবহারবৈশিষ্ট্য
ডিফল্টসাধারণ পেজসোজা কনটেন্ট পেজ, সাধারণ লেআউট
ব্লগব্লগ পোস্টধারাবাহিক পোস্ট, মেটাডেটা (ট্যাগ, ক্যাটেগরি)
মডুলারডায়নামিক পেজমডিউল ভিত্তিক কনটেন্ট, বিভিন্ন ধরনের ব্লক

উপসংহার

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

Content added By

Grav CMS খুবই নমনীয় এবং এটি আপনাকে কাস্টম পেজ টাইপ তৈরি করার সুযোগ দেয়। আপনি যখন একটি কাস্টম পেজ টাইপ তৈরি করেন, তখন আপনি বিশেষ কিছু কনটেন্ট বা থিমিং বৈশিষ্ট্য যোগ করতে পারেন যা সাধারণ পেজের সাথে তুলনা করলে ভিন্ন। Grav-এ কাস্টম পেজ টাইপ তৈরি করার মাধ্যমে আপনি আপনার সাইটের কনটেন্টকে আরও কাস্টমাইজ করতে পারবেন এবং বিশেষ ধরনের পেজ তৈরির ক্ষমতা পাবেন।

এখানে কাস্টম পেজ টাইপ তৈরি করার জন্য কয়েকটি গুরুত্বপূর্ণ পদক্ষেপ আলোচনা করা হলো।


১. Custom পেজ টাইপের জন্য কাস্টম ফোল্ডার তৈরি করা

প্রথমে আপনাকে একটি কাস্টম পেজ টাইপ তৈরি করার জন্য user/pages/ ডিরেক্টরিতে একটি নতুন ফোল্ডার তৈরি করতে হবে।

ধরা যাক, আপনি একটি কাস্টম পেজ টাইপ তৈরি করতে চান যার নাম "events" (ইভেন্ট)। তাহলে, আপনাকে নিচের মতো একটি ফোল্ডার তৈরি করতে হবে:

user/pages/events/

এখানে "events" ফোল্ডারটি একটি নতুন কাস্টম পেজ টাইপ হবে। এর মধ্যে আপনি বিভিন্ন ইভেন্ট সম্পর্কিত পেজ তৈরি করতে পারবেন।


২. পেজের কন্টেন্ট ফাইল তৈরি করা

ফোল্ডার তৈরি করার পর, আপনাকে সেই ফোল্ডারে একটি .md (Markdown) ফাইল তৈরি করতে হবে, যেখানে পেজের কনটেন্ট থাকবে। উদাহরণস্বরূপ, event1.md নামের একটি ফাইল তৈরি করতে পারেন।

title: "Event 1"
date: "2024-12-25"
venue: "Dhaka, Bangladesh"

এখানে, title, date, এবং venue হল পেজের কাস্টম ডাটা। আপনি যেভাবে চান সেভাবে পেজের কনটেন্ট লিখতে পারেন।


৩. কাস্টম পেজ টাইপের জন্য কাস্টম থিম ফাইল তৈরি করা

Grav-এ কাস্টম পেজ টাইপের জন্য কাস্টম থিম ফাইল তৈরি করতে হলে, আপনাকে user/themes/ ডিরেক্টরিতে একটি নতুন থিম তৈরি করতে হবে অথবা একটি বিদ্যমান থিম কাস্টমাইজ করতে হবে।

ধরা যাক, আপনি custom নামক একটি থিম তৈরি করতে চান। এর জন্য user/themes/custom/ ফোল্ডারে থিম ফাইলগুলি রাখতে হবে। উদাহরণস্বরূপ, user/themes/custom/templates ফোল্ডারে আপনি একটি নতুন টেমপ্লেট তৈরি করতে পারেন।

নতুন পেজ টেমপ্লেট তৈরির জন্য, events.html.twig নামে একটি টেমপ্লেট তৈরি করুন, যা কাস্টম পেজ টাইপের জন্য ব্যবহার করা হবে।

{% extends 'partials/base.html.twig' %}

{% block content %}
    <h1>{{ page.title }}</h1>
    <p>Date: {{ page.date }}</p>
    <p>Venue: {{ page.venue }}</p>
{% endblock %}

এখানে, events.html.twig টেমপ্লেট পেজের title, date, এবং venue কাস্টম ফিল্ডগুলোকে রেন্ডার করবে।


৪. পেজ টাইপ কাস্টমাইজেশন

Grav-এ পেজ টাইপ কাস্টমাইজ করতে হলে, আপনাকে user/config/ ডিরেক্টরির মধ্যে pages.yaml ফাইলটি কনফিগার করতে হবে। এখানে, আপনি নতুন কাস্টম পেজ টাইপ যুক্ত করতে পারেন।

types:
  - events

এটি Grav কে বলে দেয় যে আপনি "events" নামে একটি নতুন পেজ টাইপ ব্যবহার করছেন।


৫. কাস্টম পেজ টাইপ ব্যবহার করা

এখন আপনি "events" নামক কাস্টম পেজ টাইপ তৈরি করেছেন, এবং সাইটে এটি ব্যবহারের জন্য আপনি user/pages/ ডিরেক্টরিতে নতুন নতুন events পেজ তৈরি করতে পারবেন।

যেমন:

user/pages/events/event1.md
user/pages/events/event2.md

এভাবে, আপনি একাধিক ইভেন্ট পেজ তৈরি করতে পারবেন, যা একই কাস্টম থিম এবং টেমপ্লেট ব্যবহার করবে।


৬. কাস্টম পেজ টাইপের জন্য ইউআরএল কাস্টমাইজেশন

Grav আপনাকে কাস্টম পেজ টাইপের জন্য URL কাস্টমাইজ করতে সাহায্য করে। আপনি চাইলে কাস্টম URL প্যাটার্ন তৈরি করতে পারেন। উদাহরণস্বরূপ, event টাইপের পেজগুলোতে আপনি /events/ প্রিফিক্স ব্যবহার করতে পারেন।

এটি করার জন্য, user/config/ ডিরেক্টরিতে routes.yaml ফাইল তৈরি করতে হবে:

routes:
  /events: '/user/pages/events'

এভাবে, আপনি Grav-এ কাস্টম পেজ টাইপের জন্য কাস্টম URL তৈরি করতে পারবেন।


সারাংশ

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

Content added By

Grav CMS একটি শক্তিশালী এবং নমনীয় কনটেন্ট ম্যানেজমেন্ট সিস্টেম, যা টেমপ্লেটিং ভাষা হিসেবে Twig ব্যবহার করে। Twig একটি আধুনিক এবং হালকা টেমপ্লেট ইঞ্জিন যা PHP ভিত্তিক এবং এর মাধ্যমে আপনি সাইটের লেআউট এবং ডিজাইন খুব সহজেই কাস্টমাইজ করতে পারেন। Grav-এর Twig টেমপ্লেট ইঞ্জিন ব্যবহার করে ডেভেলপাররা আরও গতিশীল এবং কাস্টমাইজড ওয়েব পেজ তৈরি করতে পারেন। এটি বিশেষ করে ডেভেলপারদের জন্য উপকারী, যারা তাদের সাইটের লেআউট এবং কনটেন্টকে আরও শুদ্ধভাবে এবং দক্ষতার সাথে নিয়ন্ত্রণ করতে চান।


Twig টেমপ্লেট ইঞ্জিন কী?

Twig একটি ডেভেলপার-বান্ধব টেমপ্লেট ইঞ্জিন যা PHP এ লেখা হলেও, এটি অন্য অনেক টেমপ্লেট ইঞ্জিনের তুলনায় সহজ এবং স্পষ্ট। এটি মূলত HTML এবং PHP কোডের সংমিশ্রণ হিসাবে কাজ করে, যেখানে PHP-এর কার্যকারিতা HTML টেমপ্লেটে সহজভাবে ইন্টিগ্রেট করা যায়। Grav CMS Twig-এর সাহায্যে ডাইনামিক কনটেন্ট, লুপ, শর্ত, ভেরিয়েবল এবং ফিল্টার প্রক্রিয়াগুলির মাধ্যমে সাইটের টেমপ্লেট পরিচালনা করে।

Twig-এর প্রধান বৈশিষ্ট্যসমূহ

  • সাধারণ এবং পরিষ্কার সিনট্যাক্স: Twig-এর সিনট্যাক্স সহজ এবং পরিষ্কার, যা ডেভেলপারদের জন্য কোডিং প্রক্রিয়াকে অনেক সহজ করে।
  • নিরাপত্তা: Twig কোড এক্সিকিউট করার আগে এটি স্বয়ংক্রিয়ভাবে নিরাপত্তা চেক করে, তাই এটি নিরাপদ এবং ইউজারদের ইনপুট গ্রহণের ক্ষেত্রে সুরক্ষিত থাকে।
  • কম্পাইলড টেমপ্লেট: Twig টেমপ্লেটগুলি কম্পাইলড হয় এবং এটি HTML আউটপুট তৈরি করার সময় দ্রুত পারফরম্যান্স প্রদান করে।
  • ডেভেলপার-বান্ধব ফিচার: Twig অনেক ফিচার এবং ফাংশন প্রদান করে, যেমন লুপ, কন্ডিশনাল স্টেটমেন্টস, ফিল্টার, ইন্টারনাল ফাংশন, এবং আরও অনেক কিছু।

Grav-এ Twig টেমপ্লেট ব্যবহার

Grav CMS তে Twig টেমপ্লেট ব্যবহার করা বেশ সহজ। Grav-এর প্রতিটি টেমপ্লেট ফাইল একটি .twig এক্সটেনশনে থাকে। এই ফাইলগুলো আপনার সাইটের পেজ, ব্লগ পোস্ট, থিম এবং অন্যান্য কনটেন্টের ডিজাইন কাস্টমাইজ করতে ব্যবহৃত হয়। Grav-এর Twig টেমপ্লেট ফাইল সাধারণত /user/themes/ ফোল্ডারের মধ্যে থাকে, যেখানে সাইটের থিম কনফিগারেশন এবং ডিজাইন সংরক্ষিত থাকে।

১. Twig টেমপ্লেটের মৌলিক গঠন

Grav-এর Twig টেমপ্লেট ফাইলগুলি মূলত HTML ফাইলের মতোই দেখতে হয়, তবে এর মধ্যে Twig-এর সিনট্যাক্স ব্যবহার করা হয়। উদাহরণস্বরূপ:

<!DOCTYPE html>
<html>
<head>
    <title>{{ page.title }}</title>
</head>
<body>
    <h1>{{ page.title }}</h1>
    <p>{{ page.content }}</p>
</body>
</html>

এখানে, {{ page.title }} এবং {{ page.content }} Twig সিনট্যাক্স যা Grav-এর পেজের কনটেন্ট এবং শিরোনামকে ডাইনামিকভাবে প্রদর্শন করে।

২. Twig এর লুপ ব্যবহার

Grav-এ কনটেন্ট লিস্ট এবং অন্যান্য ডাইনামিক লিস্টের জন্য Twig টেমপ্লেটে লুপ ব্যবহার করা যায়। যেমন, একটি পেজের সব সাব-পেজ প্রদর্শন করতে:

<ul>
{% for child in page.children %}
    <li><a href="{{ child.url }}">{{ child.title }}</a></li>
{% endfor %}
</ul>

এখানে page.children পেজের সব সাব-পেজ (children) কে লুপের মাধ্যমে তালিকাভুক্ত করছে এবং তাদের নাম এবং URL প্রদর্শন করছে।

৩. Twig কন্ডিশনাল স্টেটমেন্ট

Twig-এ কন্ডিশনাল স্টেটমেন্ট ব্যবহার করে আপনি সহজেই কন্টেন্টের প্রদর্শন নিয়ন্ত্রণ করতে পারেন। উদাহরণস্বরূপ, একটি শিরোনাম প্রদর্শন করতে শুধুমাত্র যদি এটি সেট করা থাকে:

{% if page.header.title %}
    <h1>{{ page.header.title }}</h1>
{% else %}
    <h1>ডিফল্ট শিরোনাম</h1>
{% endif %}

এখানে, যদি title সেট করা থাকে, তাহলে সেটি প্রদর্শিত হবে; অন্যথায়, ডিফল্ট শিরোনাম দেখাবে।


Twig ফিল্টার

Twig ফিল্টারগুলি আপনার কনটেন্টকে পরিবর্তন করতে ব্যবহৃত হয়, যেমন টেক্সটকে কনভার্ট করা, ডেটার ফরম্যাট পরিবর্তন করা ইত্যাদি। Grav-এর Twig ফিল্টারের মধ্যে কিছু জনপ্রিয় ফিল্টার রয়েছে, যেমন:

  • date: তারিখ ফরম্যাট পরিবর্তন করতে ব্যবহৃত হয়।
  • upper: টেক্সটের সব ক্যারেক্টারকে বড় হাতের অক্ষরে পরিবর্তন করে।
  • lower: টেক্সটের সব ক্যারেক্টারকে ছোট হাতের অক্ষরে পরিবর্তন করে।

এখানে একটি উদাহরণ:

<p>আজকের তারিখ: {{ "now"|date("d-m-Y") }}</p>
<p>পাঠ্য: {{ "hello"|upper }}</p>

এখানে, "now"|date("d-m-Y") বর্তমান তারিখ কে day-month-year ফরম্যাটে রূপান্তর করবে এবং "hello"|upper টেক্সটকে বড় হাতের অক্ষরে পরিবর্তন করবে।


Grav-এ Twig টেমপ্লেটের সুবিধা

১. ডাইনামিক কনটেন্ট প্রদর্শন

Twig ব্যবহার করে আপনি ডাইনামিক কনটেন্ট সহজে প্রদর্শন করতে পারবেন। Grav CMS স্বয়ংক্রিয়ভাবে পেজের কনটেন্ট এবং ডেটা Twig টেমপ্লেটে পাঠায়, যা ডেভেলপারদের জন্য খুবই সুবিধাজনক।

২. পারফরম্যান্স

Twig কম্পাইলড টেমপ্লেট ব্যবহার করে, ফলে এটি সাইটের পারফরম্যান্স উন্নত করে। টেমপ্লেট দ্রুত রেন্ডার হয় এবং HTML আউটপুট তৈরি হয়।

৩. সিরিয়াস কাস্টমাইজেশন

Twig টেমপ্লেটিং ভাষার সাহায্যে Grav ব্যবহারকারীরা সহজেই তাদের সাইটের ডিজাইন কাস্টমাইজ করতে পারেন। লুপ, কন্ডিশনাল স্টেটমেন্ট, এবং ফিল্টার ব্যবহারের মাধ্যমে সাইটের কার্যকারিতা এবং ডিজাইন সম্পূর্ণভাবে কাস্টমাইজ করা যায়।


সারাংশ

Grav CMS-এ Twig টেমপ্লেট ইঞ্জিন একটি শক্তিশালী এবং নমনীয় টুল, যা ডেভেলপারদের সাইটের ডিজাইন এবং কনটেন্টকে সহজে কাস্টমাইজ করার সুযোগ প্রদান করে। Twig এর ব্যবহার Grav-এ ডাইনামিক কনটেন্ট প্রদর্শন, লুপ, কন্ডিশনাল স্টেটমেন্ট, এবং ফিল্টার ব্যবহারের মাধ্যমে সাইটের কার্যকারিতা ও পারফরম্যান্স উন্নত করতে সাহায্য করে।

Content added By

Grav একটি অত্যন্ত কাস্টমাইজযোগ্য এবং নমনীয় CMS, যা ডেভেলপারদের জন্য শক্তিশালী টেমপ্লেট সিস্টেম প্রদান করে। Grav-এ পেজ টেমপ্লেট কাস্টমাইজ করা এবং টেমপ্লেট ইনহেরিট্যান্স (Template Inheritance) ব্যবহার করে কনটেন্ট ম্যানেজমেন্ট আরও সহজ এবং কার্যকর করা যায়। Grav-এ টেমপ্লেট কাস্টমাইজেশন পদ্ধতি আপনার সাইটের ডিজাইন এবং কনটেন্টের অভ্যন্তরীণ কাঠামোকে সম্পূর্ণভাবে কাস্টমাইজ করার সুযোগ দেয়।


Grav-এ পেজ টেমপ্লেট কাস্টমাইজ করা

Grav-এ পেজ টেমপ্লেট কাস্টমাইজেশন একটি সহজ প্রক্রিয়া। Grav এর টেমপ্লেট সিস্টেম মূলত Twig টেমপ্লেট ইঞ্জিন ব্যবহার করে। Twig হল একটি শক্তিশালী টেমপ্লেট ভাষা যা HTML, CSS এবং JavaScript কোডের মধ্যে ডাইনামিক কনটেন্ট সন্নিবেশ করতে ব্যবহৃত হয়।

Grav-এ পেজ টেমপ্লেট কাস্টমাইজ করার পদক্ষেপ:

১. টেমপ্লেট ফাইল খোঁজা Grav-এ টেমপ্লেট ফাইলগুলি সাধারণত /user/themes ফোল্ডারে থাকে। সেখানে আপনি আপনার সাইটের থিম সম্পর্কিত টেমপ্লেট ফাইলগুলি পাবেন, যেগুলি .twig এক্সটেনশন সহ থাকে।

২. টেমপ্লেট ফাইল তৈরি বা সম্পাদনা করা Grav এর ডিফল্ট টেমপ্লেট ফাইলটি সাধারণত default.twig নামে থাকে, তবে আপনি এটি কাস্টমাইজ করতে পারেন বা নতুন টেমপ্লেট ফাইল তৈরি করতে পারেন। উদাহরণস্বরূপ, যদি আপনি একটি নতুন পেজ টেমপ্লেট তৈরি করতে চান, তবে mytemplate.twig নামের একটি নতুন ফাইল তৈরি করুন।

{# mytemplate.twig #}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{ page.title }}</title>
</head>
<body>
    <h1>{{ page.title }}</h1>
    <p>{{ page.content }}</p>
</body>
</html>

এখানে {{ page.title }} এবং {{ page.content }} Grav-এ সংরক্ষিত পেজের শিরোনাম এবং কনটেন্টকে ডাইনামিকভাবে প্রদর্শন করবে।

৩. টেমপ্লেট অ্যাসাইন করা একবার আপনি টেমপ্লেট ফাইলটি তৈরি বা কাস্টমাইজ করলে, পরবর্তী পদক্ষেপে আপনাকে ওই টেমপ্লেটটি পেজের সাথে সংযুক্ত করতে হবে। এটি YAML কনফিগারেশন ফাইলে করা হয়।

template: mytemplate

এটি পেজের ফোল্ডারের default.md ফাইলের মধ্যে থাকতে পারে, যা Grav-এর কনফিগারেশন ফাইল হিসেবে কাজ করে। এখন, Grav ওই পেজের জন্য আপনার কাস্টম টেমপ্লেট ব্যবহার করবে।


টেমপ্লেট ইনহেরিট্যান্স (Template Inheritance)

Grav-এ টেমপ্লেট ইনহেরিট্যান্স একটি অত্যন্ত শক্তিশালী বৈশিষ্ট্য, যা আপনাকে একটি বেস টেমপ্লেট তৈরি করতে এবং তারপর সেই বেস টেমপ্লেট থেকে অন্যান্য টেমপ্লেট ফাইলগুলিকে ইনহেরিট করতে দেয়। এর ফলে, আপনি সহজেই একাধিক পেজ বা সেকশনের জন্য সাধারণ লেআউট ব্যবহার করতে পারেন এবং কেবল বিশেষ ক্ষেত্রে কাস্টমাইজেশন করতে পারেন। এই পদ্ধতি অনেকটা OOP (Object-Oriented Programming) এর ইনহেরিট্যান্সের মতো কাজ করে।

টেমপ্লেট ইনহেরিট্যান্স ব্যবহার করার উপায়:

১. বেস টেমপ্লেট তৈরি করা প্রথমে একটি বেস টেমপ্লেট তৈরি করুন, যেটি সাধারণ পেজ লেআউটের জন্য ব্যবহৃত হবে। এই টেমপ্লেটটি সাধারণভাবে base.twig নামে থাকবে।

{# base.twig #}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{ page.title }}</title>
</head>
<body>
    <header>
        <h1>{{ page.title }}</h1>
    </header>
    
    <main>
        {{ block('content') }}
    </main>
    
    <footer>
        <p>© 2024</p>
    </footer>
</body>
</html>

এখানে block('content') একটি ব্লক হিসেবে কাজ করছে, যা পরবর্তীতে অন্য টেমপ্লেটের মাধ্যমে কাস্টমাইজ করা যাবে।

২. ইনহেরিট করার জন্য সাব-টেমপ্লেট তৈরি করা এখন আপনি যেকোনো পেজের জন্য একটি সাব-টেমপ্লেট তৈরি করতে পারেন যা বেস টেমপ্লেট থেকে ইনহেরিট করবে। এই টেমপ্লেটের মধ্যে block('content') ব্লকটি কাস্টমাইজ করা যাবে।

{# mypage.twig #}

{% extends 'base.twig' %}

{% block content %}
    <h2>My Custom Page Content</h2>
    <p>This is a custom content section for the page.</p>
{% endblock %}

এখানে extends নির্দেশটি বেস টেমপ্লেট (base.twig) কে ইনহেরিট করে এবং block('content') এর মধ্যে নতুন কনটেন্ট যোগ করে।


Grav-এ টেমপ্লেট ইনহেরিট্যান্স এর সুবিধাসমূহ

১. কোড পুনঃব্যবহার

টেমপ্লেট ইনহেরিট্যান্স ব্যবহারের মাধ্যমে আপনি সাধারণ কোডের অংশগুলি একাধিক পেজের জন্য পুনঃব্যবহার করতে পারেন। এতে কোড ডুপ্লিকেশন কমে যায় এবং সাইটের ম্যানেজমেন্ট আরও সহজ হয়।

২. বিষয়ভিত্তিক কাস্টমাইজেশন

বিশেষ ধরনের পেজ বা কন্টেন্টের জন্য আলাদা কাস্টম টেমপ্লেট তৈরি করতে সহজ হয়, তবে সাধারণ লেআউট এবং স্টাইলিং বজায় থাকে। এটি সাইটের অভ্যন্তরীণ কাঠামো এবং কনটেন্ট কাস্টমাইজেশন প্রক্রিয়াকে সহজ করে।

৩. পরিষ্কার এবং সংগঠিত কোড

টেমপ্লেট ইনহেরিট্যান্স আপনাকে কোডকে আরও পরিষ্কার এবং সংগঠিতভাবে সাজাতে সাহায্য করে, কারণ প্রতিটি পেজের জন্য আলাদা আলাদা লেআউট তৈরি করার প্রয়োজন হয় না।


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

Content added By
Promotion

Are you sure to start over?

Loading...