আমার কাছে টোটুল প্লাগইন ওরফে আছে। কন্টেন্ট-টাইপ ওরফে। প্যানেল ফলক। একজন প্রোগ্রামারিকভাবে এটি কীভাবে রেন্ডার করে?
আমার কাছে টোটুল প্লাগইন ওরফে আছে। কন্টেন্ট-টাইপ ওরফে। প্যানেল ফলক। একজন প্রোগ্রামারিকভাবে এটি কীভাবে রেন্ডার করে?
উত্তর:
ctools_content_render() সমাধান হয়।
ctools_include('content');আগে অন্তর্ভুক্ত করতে ভুলবেন না ctools_content_render()কারণ অন্য ক্ষেত্রে আপনি মারাত্মক ত্রুটি পাবেন।
ctools_ajax_sampleমডিউলে এটি কীভাবে করা যায় তার একটি দুর্দান্ত এবং সাধারণ উদাহরণ রয়েছে (সিটিউলস স্যুটে)।
যেমন এটি উল্লেখ করা হয়েছে, কীটি হ'ল ফাংশনটি ব্যবহার করা ctools_content_render()।
উদাহরণটি দেখায় যে কীভাবে ফাংশনটির আর্গুমেন্টগুলি স্থাপন করা যায়, যদিও আপনাকে অবশ্যই এটি আপনার প্রয়োজন অনুসারে কাস্টমাইজ করতে হবে।
ড্রুপাল গ্রুপগুলিতে এই থ্রেডটি সঠিক প্রসঙ্গটি কীভাবে লোড করা যায় সে সম্পর্কে আরও অন্তর্দৃষ্টি দেয়।
ফাইল ctools/ctools_ajax_sample/ctools_ajax_sample.module
function ctools_ajax_simple_form() {
ctools_include('content');
ctools_include('context');
$node = node_load(1);
$context = ctools_context_create('node', $node);
$context = array('context_node_1' => $context);
return ctools_content_render('node_comment_form', 'node_comment_form', ctools_ajax_simple_form_pane(), array(), array(), $context);
}
function ctools_ajax_simple_form_pane() {
$configuration = array(
'anon_links' => 0,
'context' => 'context_node_1',
'override_title' => 0,
'override_title_text' => '',
);
return $configuration;
}
যদি আপনি প্রয়োজনীয় ফাইলটি লোড করেন তবে আপনাকে যা করতে হবে তা হ'ল রেন্ডার ফাংশনটি কল করা ( hook_content_type_render) যা একটি স্ট্যান্ডার্ড ক্লাস অবজেক্টকে ফিরিয়ে দেবে, অনেকটা পছন্দ hook_block_viewকরে।
আপনি কেবল কাঁচা আউটপুট সরাসরি রেন্ডার করতে না চাইলে সেখান থেকে আপনার সমস্ত থিম ফাংশন রয়েছে।
কোডে এটি এর মতো দেখতে পারে:
function render_ctools_content($subtype, $conf, $panel_args, $context, $function, $file, $theme = TRUE) {
require_once $file;
$pane = new stdClass();
if (function_exists($function)) {
$pane = $function($subtype, $conf, $panel_args, $context); // hook_content_type_render
}
if ($theme) {
return theme('module_ctools_content', array('pane' => $pane));
}
return $pane->content;
}
আমি নীচের কোডটি ব্যবহার করে প্যানোপোলিতে একটি প্যানেলযুক্ত পৃষ্ঠা টানতে সক্ষম হয়েছি:
module_load_include('inc', 'page_manager', 'plugins/tasks/node_view');
$node = node_load($nid);
$render = page_manager_node_view_page($node);
echo drupal_render($render);
module_load_include()সিটিউল প্লাগইন লোডিং প্রক্রিয়াটি ভেঙে যেতে পারে। সিটিউলগুলি require_onceপদ্ধতি ব্যবহার করে , সুতরাং যদি ফাইলটি আগে তৃতীয় পক্ষের স্ক্রিপ্ট দ্বারা অন্তর্ভুক্ত করা হত তবে এটি এটি সিটিওল (এবং পার্স $pluginঅ্যারে) দ্বারা অন্তর্ভুক্ত করা সম্ভব হবে না । সুতরাং রিসল্ট হিসাবে আপনার ফলকটি অন্য জায়গায় কাজ করবে না।