मैं एक ctools प्लगइन उर्फ है। सामग्री-प्रकार उर्फ। पैनल फलक। कोई इसे प्रोग्रामेटिक रूप से कैसे प्रस्तुत करता है?
मैं एक ctools प्लगइन उर्फ है। सामग्री-प्रकार उर्फ। पैनल फलक। कोई इसे प्रोग्रामेटिक रूप से कैसे प्रस्तुत करता है?
जवाबों:
ctools_content_render()
समाधान है।
ctools_include('content');
पहले शामिल करना न भूलें ctools_content_render()
, क्योंकि अन्य मामले में आपको घातक त्रुटि मिलेगी।
ctools_ajax_sample
मॉड्यूल (CTools सूट में) में ऐसा करने के लिए एक महान और सरल उदाहरण है ।
जैसा कि यह बताया गया है, कुंजी फ़ंक्शन का उपयोग करना है ctools_content_render()
।
उदाहरण दिखाता है कि फ़ंक्शन के तर्कों को कैसे आबाद किया जाए, हालांकि आपको स्पष्ट रूप से अपनी आवश्यकताओं के अनुसार इसे अनुकूलित करना होगा।
Drupal Group में यह धागा सही संदर्भ को लोड करने के बारे में अधिक जानकारी देता है।
फ़ाइल 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()
आप के साथ प्लगइन फ़ाइल को शामिल करके ctools प्लगइन्स लोड करने की प्रक्रिया को तोड़ सकते हैं। CTools require_once
पद्धति का उपयोग करता है, इसलिए यदि फ़ाइल को पहले थर्डपार्टी स्क्रिप्ट द्वारा शामिल किया गया था, तो इसे ctools (और पार्स $plugin
एरे) द्वारा शामिल करना संभव नहीं होगा । तो एक resullt के रूप में अपने फलक अन्य स्थानों में काम नहीं करेगा।