Grav CMS একটি নমনীয় এবং শক্তিশালী কনটেন্ট ম্যানেজমেন্ট সিস্টেম (CMS), যা আপনাকে ওয়েবসাইটের কনটেন্ট পরিচালনা এবং কাস্টমাইজ করতে সহায়তা করে। যদি আপনি আপনার Grav সাইটে বাইরের উৎস থেকে ডেটা ফেচ করতে চান, তবে আপনি External API ব্যবহার করে এই ডেটা আপনার সাইটে ইন্টিগ্রেট করতে পারেন।
এই গাইডে আমরা দেখব কিভাবে Grav CMS-এ বাইরের API থেকে ডেটা ফেচ করে একটি পেজে প্রদর্শন করতে হয়।
১. External API কনসেপ্ট
External API হল একটি ওয়েব সার্ভিস যা আপনি HTTP রিকোয়েস্টের মাধ্যমে আপনার সাইট থেকে এক্সেস করতে পারেন। সাধারণত, এই API গুলো JSON বা XML ফরম্যাটে ডেটা প্রদান করে এবং আপনি এই ডেটা আপনার সাইটে প্রক্রিয়া বা প্রদর্শন করতে পারেন। উদাহরণস্বরূপ, আপনি একটি থার্ড-পার্টি API ব্যবহার করতে পারেন যেটি ইউজার ডেটা, নিউজ আপডেট, বা কোনো অন্যান্য তথ্য সরবরাহ করে।
২. External API থেকে ডেটা ফেচ করার জন্য PHP ব্যবহার করা
Grav CMS-এ বাইরের API থেকে ডেটা ফেচ করতে PHP এর file_get_contents() বা cURL লাইব্রেরি ব্যবহার করা যেতে পারে। file_get_contents() একটি সহজ পদ্ধতি, তবে cURL বেশি উন্নত এবং নিরাপদ পদ্ধতি হিসেবে কাজ করে। আমরা এই উদাহরণে cURL ব্যবহার করব।
২.১. cURL ব্যবহার করে External API থেকে ডেটা ফেচ করা
এটি করতে, আপনাকে Grav প্লাগইন বা custom PHP script তৈরি করতে হবে।
কোড উদাহরণ (PHP):
<?php
// External API URL
$api_url = 'https://api.example.com/data';
// cURL ব্যবহার করে API থেকে ডেটা ফেচ করা
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$response = curl_exec($ch);
if($response === false) {
echo 'cURL Error: ' . curl_error($ch);
} else {
// JSON ডেটা ডিকোড করা
$data = json_decode($response, true);
print_r($data);
}
curl_close($ch);
?>
এখানে:
curl_init(): cURL সেশন ইনিশিয়ালাইজ করে।curl_setopt(): বিভিন্ন cURL অপশন সেট করা হয় (URL, রিটার্ন ভ্যালু, ইত্যাদি)।curl_exec(): API রিকোয়েস্ট পাঠানো এবং রেসপন্স গ্রহণ করা।json_decode(): API থেকে প্রাপ্ত JSON ডেটা PHP অ্যারে বা অবজেক্টে রূপান্তরিত করা।
২.২. কাস্টম Grav টেমপ্লেটে API ডেটা প্রদর্শন করা
Grav-এ এই API থেকে পাওয়া ডেটা টেমপ্লেটে প্রদর্শন করতে, আপনাকে PHP কোড এবং Twig টেমপ্লেট ইন্টিগ্রেট করতে হবে।
প্রথমে, Grav সাইটের টেমপ্লেটে PHP স্ক্রিপ্টটি ব্যবহার করুন এবং ডেটা টেমপ্লেটে পাস করুন।
Twig টেমপ্লেট উদাহরণ (Twig):
{% set api_data = page.header.api_data %}
{% if api_data %}
<ul>
{% for item in api_data %}
<li>{{ item.name }} - {{ item.value }}</li>
{% endfor %}
</ul>
{% else %}
<p>No data available.</p>
{% endif %}
এখানে:
api_data: পূর্বে PHP স্ক্রিপ্ট থেকে প্রাপ্ত ডেটা।item.nameএবংitem.value: API ডেটার ক্ষেত্র যেগুলো আপনি টেমপ্লেটে প্রদর্শন করতে চান।
৩. Grav Plugin ব্যবহার করে External API ডেটা ফেচ করা
Grav CMS-এ বাইরের API থেকে ডেটা ফেচ করার জন্য একটি কাস্টম প্লাগইন তৈরি করাও সম্ভব। এই প্লাগইনটি API কল তৈরি করে এবং ডেটা সংগ্রহ করে সাইটের বিভিন্ন অংশে প্রদর্শন করতে পারে। নিচে একটি সাধারণ কাস্টম প্লাগইন উদাহরণ দেওয়া হলো:
৩.১. Custom Plugin Example
Grav প্লাগইন তৈরি করতে, আপনি user/plugins/ ফোল্ডারে একটি নতুন ফোল্ডার তৈরি করবেন এবং সেখানে plugin.php ফাইল যুক্ত করবেন।
plugin.php উদাহরণ:
<?php
namespace Grav\Plugin;
use Grav\Common\Plugin;
use Grav\Common\Page\Page;
class ApiPlugin extends Plugin
{
public static function getSubscribedEvents(): array
{
return [
'onPageInitialized' => ['fetchApiData', 0]
];
}
public function fetchApiData()
{
// External API URL
$api_url = 'https://api.example.com/data';
// cURL ব্যবহার করে API থেকে ডেটা ফেচ করা
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$response = curl_exec($ch);
if($response === false) {
echo 'cURL Error: ' . curl_error($ch);
} else {
// JSON ডেটা ডিকোড করা
$data = json_decode($response, true);
$this->grav['page']->header()->api_data = $data;
}
curl_close($ch);
}
}
এখানে:
onPageInitialized: Grav প্লাগইন ব্যবহার করার সময় পেজ ইনিশিয়ালাইজ হওয়ার পর API থেকে ডেটা ফেচ করা হচ্ছে।api_data: API ডেটা পেজের হেডারে পাস করা হচ্ছে, যা পরে Twig টেমপ্লেটে প্রদর্শন করা যাবে।
৪. API ডেটা ক্যাশিং
API থেকে ডেটা ফেচ করার পর, আপনি চাইলে সেই ডেটা ক্যাশও করতে পারেন যাতে প্রতিবার API কল করার প্রয়োজন না হয় এবং সাইটের পারফরম্যান্স উন্নত হয়। Grav-এ ক্যাশিং সিস্টেম রয়েছে, যার মাধ্যমে আপনি API ডেটা ক্যাশ করতে পারেন।
API ক্যাশিং উদাহরণ:
// Cache key তৈরি করা
$cache = $this->grav['cache'];
$cache_key = 'api_data';
// ক্যাশ চেক করা
$cached_data = $cache->fetch($cache_key);
if ($cached_data) {
$data = $cached_data; // ক্যাশ থেকে ডেটা ব্যবহার
} else {
// cURL কল এবং API ডেটা ফেচ করা
$data = $this->fetchDataFromApi();
// ডেটা ক্যাশে সংরক্ষণ করা
$cache->save($cache_key, $data, 3600); // 1 ঘণ্টার জন্য ক্যাশে সংরক্ষণ
}
এখানে:
fetch(): ক্যাশ থেকে ডেটা খোঁজা হয়।save(): API ডেটা ক্যাশে সংরক্ষণ করা হয় (1 ঘণ্টা ক্যাশে রাখা হবে)।
সারাংশ
Grav CMS-এ External API থেকে ডেটা ফেচ করা খুবই সহজ এবং আপনি এটি cURL বা Grav Plugin এর মাধ্যমে করতে পারেন। API থেকে ডেটা সংগ্রহ করে, সেগুলো Twig টেমপ্লেটে প্রদর্শন করা যায় এবং সাইটে ব্যবহারকারীদের জন্য কাস্টম কনটেন্ট বা ডাইনামিক ডেটা উপস্থাপন করা সম্ভব। Grav এর ক্যাশিং সিস্টেম ব্যবহার করে আপনি API ডেটা ক্যাশ করতে পারেন, যাতে সাইটের পারফরম্যান্স উন্নত হয়।
Read more