जवाबों:
आप किसी भी टेम्पलेट के अंदर क्षेत्रों को प्रिंट कर सकते हैं, लेकिन वे node.tpl.php
टेम्पलेट में बॉक्स से बाहर उपलब्ध नहीं हैं । उन्हें उपलब्ध कराने के लिए, आप अपने node.tpl.php
टेम्पलेट में उपयोग के लिए एक नया चर बनाएंगे जिसमें सभी क्षेत्र सामग्री शामिल होंगी।
नए टेम्पलेट वैरिएबल बनाना एक प्रीप्रोसेस फ़ंक्शन का उपयोग करके किया जाता है। अपनी थीम की template.php
फ़ाइल में, ऐसा फ़ंक्शन बनाएं जो इस तरह दिखता है:
function mytheme_preprocess_node(&$variables) {
}
mytheme
अपने विषय के संक्षिप्त नाम के साथ प्रतिस्थापित करना। अब, Drupal को इस नए प्रीप्रोसेस फ़ंक्शन को पहचानने के लिए, आपको अपनी साइट की थीम रजिस्ट्री को फिर से बनाने की आवश्यकता है। यह विन्यास → विकास → प्रदर्शन पर जाने और शीर्ष पर "सभी कैश साफ़ करें" बटन दबाने के समान सरल है ।
अब, प्रीप्रोसेस फ़ंक्शंस जिस तरह से काम करता है, $variables
उसमें एक सरणी होती है जो आपके टेम्पलेट के उपलब्ध चर से मेल खाती है। उदाहरण के लिए, में 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()
केवल ब्लॉक की सरणी देता है और यदि आप इसे एक क्षेत्र के रूप में प्रस्तुत करना चाहते हैं, तो आपको क्षेत्र आवरण जोड़ने की आवश्यकता है।