मैं कैसे Drupal 7 में यह करने के लिए पूरी तरह से पता कर रहा हूँ के भीतर hook_theme का उपयोग कर टहनी को तो मैं क्या मैं सामान्य रूप से ड्रुपल 7पासिंग चर एक मॉड्यूल
का उपयोग करते हैं समझा जाएगा जब मैं hook_theme एक का प्रयोग कर एक कस्टम मॉड्यूल बनाने बहुत, यह बहुत शक्तिशाली और पुन: प्रयोज्य है!
/**
* Implements hook_theme().
*/
function MODULE_theme() {
$themes = array();
$themes['name_of_theme'] = array(
'path' => drupal_get_path('module', 'module') .'/templates',
'template' => 'NAME_OF_TEPLATE',
'variables' => array(
'param1' => NULL,
'param2' => NULL,
),
);
return $themes;
}
मैं तो
theme('name_of_theme', array(
'param1' => 'VALUEA',
'param2' => 'VALUEB'
));
इस का उपयोग कर तो वापसी होगी एचटीएमएल इस विषय कहेंगे और मैं खुशी होगी।
तो ड्रूपल 8 को इसके साथ पकड़ने की आवश्यकता है।
/**
* Implements hook_theme().
*/
function helloworld_theme() {
$theme = [];
$theme['helloworld'] = [
'variables' => [
'param_1' => [],
'param_2' => 'hello',
]
];
return $theme;
}
और मेरे नियंत्रक के भीतर मैं
$hello_world_template = array(
'#theme' => 'helloworld',
'variables' => [
'param_1' => 'hello world',
'param_2' => 'hello from another world'
],
);
$output = drupal_render($hello_world_template,
array(
'variables' => array(
'param_1' => $param_1,
'param_2' => $param_2,
)
)
);
return [
'#type' => 'markup',
'#markup' => $output
];
मैं अपने टेम्पलेट के पर एक निर्गम हो रही है, का उपयोग कर रहा हूँ लेकिन क्या मैं यकीन नहीं है के बारे में, जहां मेरे पैरामीटर पास करने के लिए इतना है कि वे उपलब्ध हैं मेरे टेम्पलेट में (बस यह इंगित करने के लिए कि मेरे चर उपलब्ध हैं वे हुक_थीम में परिभाषित किए गए सिर्फ शून्य हैं)
मैं इस विचार के लिए भी खुला हूं कि मैं मूल रूप से गलत कर रहा हूं और मैं एक विकल्प के लिए खुला हूं मार्ग अगर मेरी विधि सबसे अच्छा अभ्यास नहीं है।
बीटीडब्ल्यू। आपको 'drupal_render()' बहिष्कृत करने के बजाय '\ Drupal :: सेवा ('renderer') -> renderRoot()' का उपयोग करना चाहिए। – kenorb