উত্তর:
আপনি যে কোনও টেম্প্লেটের অভ্যন্তরে অঞ্চলগুলি মুদ্রণ করতে পারেন, তবে সেগুলি node.tpl.phpটেমপ্লেটের বাক্সের বাইরে পাওয়া যায় না । এগুলিকে উপলভ্য করতে, আপনি আপনার node.tpl.phpটেমপ্লেটে ব্যবহারের জন্য একটি নতুন ভেরিয়েবল তৈরি করবেন যাতে এতে সমস্ত অঞ্চলের সামগ্রী থাকবে।
নতুন টেম্পলেট ভেরিয়েবলগুলি তৈরি করা একটি প্রিপ্রসেস ফাংশন ব্যবহার করে করা হয়। আপনার থিমের template.phpফাইলে এমন একটি ফাংশন তৈরি করুন যা দেখতে এইরকম দেখায়:
function mytheme_preprocess_node(&$variables) {
}
mythemeআপনার থিমের সংক্ষিপ্ত নামটি প্রতিস্থাপন করা হচ্ছে। এখন, দ্রুপাল এই নতুন প্রিপ্রোসেস ফাংশনটি স্বীকৃতি দেওয়ার জন্য আপনাকে আপনার সাইটের থিম রেজিস্ট্রি পুনরায় তৈরি করতে হবে। এটি কনফিগারেশন → বিকাশ → পারফরম্যান্সে যেতে এবং উপরে "সমস্ত ক্যাশে সাফ করুন" বোতাম টিপানোর মতোই সোজা ।
এখন, প্রিপ্রোসেস ফাংশনগুলি যেভাবে কাজ করে তা হ'ল $variablesএমন একটি অ্যারে রয়েছে যা আপনার টেমপ্লেটের উপলব্ধ ভেরিয়েবলগুলির সাথে সম্পর্কিত s উদাহরণস্বরূপ, মধ্যে node.tpl.php, $submittedলেখক বাইলাইন ধারণ করে। উপরের প্রিপ্রোসেস ফাংশনে এটি পাওয়া যায় $variables['submitted']।
আপনার যা আছে তা অনুকরণ করার জন্য page.tpl.php, যেখানে আপনার কাছে একটি অ্যারে বলা আছে $pageযাতে সমস্ত অঞ্চল রয়েছে, আপনি পপুলেশন করতে চান $variables['page']।
সমস্যাটি হ'ল এর $pageমধ্যে node.tpl.phpইতিমধ্যে একটি সত্য / মিথ্যা মান দিয়ে জনবহুল যা আপনাকে জানায় যে আপনি নোডটি নিজেই খুঁজছেন বা কোনও তালিকায় আছেন।
সুতরাং নামের সংঘাত এড়াতে, $regionপরিবর্তে পপুলেট করুন:
function mytheme_preprocess_node(&$variables) {
// Get a list of all the regions for this theme
foreach (system_region_list($GLOBALS['theme']) as $region_key => $region_name) {
// Get the content for each region and add it to the $region variable
if ($blocks = block_get_blocks_by_region($region_key)) {
$variables['region'][$region_key] = $blocks;
}
else {
$variables['region'][$region_key] = array();
}
}
}
তারপরে, আপনার থিমের node.tpl.phpটেমপ্লেটে, আপনি নিম্নলিখিতগুলি দ্বারা কোনও অঞ্চলকে রেন্ডার করতে পারেন:
<?php print render($region['sidebar_first']); ?>
sidebar_firstআপনি যে অঞ্চলে রেন্ডার করতে চান তার নাম কোথায় ।
<?php print render(block_get_blocks_by_region('machine_name_of_your_region'));?>। : এখান থেকে webomelette.com/add-region-node-template
block_get_blocks_by_region()কেবলমাত্র ব্লকের অ্যারে দেয় এবং আপনি যদি অঞ্চল হিসাবে এটি রেন্ডার করতে চান তবে আপনাকে অঞ্চল মোড়ক যুক্ত করতে হবে।