मैं अपने कोड में प्रस्तुत किए गए ब्लॉकों के लिए प्रासंगिक लिंक कैसे प्रस्तुत करूं?


11

मैंने एक ब्लॉक विषय और सामग्री लोड की module_invoke()और render()उन्हें प्रस्तुत करने के लिए उपयोग किया । मैं इस ब्लॉक के लिए प्रासंगिक लिंक का उपयोग करना चाहता हूं। मैं उन्हें कैसे रेंडर कर सकता हूं?

यह वह कोड है जो मैं पृष्ठ - front.tpl.php टेम्पलेट का उपयोग कर रहा हूं।

$block = module_invoke('block', 'block_view', '4);
print render($block);

इसके बजाय मुझे किस कोड का उपयोग करना चाहिए?

जवाबों:


16
$block = block_load('module', 'delta');
print drupal_render(_block_get_renderable_array(_block_render_blocks(array($block))));

बहुत बुरा हमें इसे प्राप्त करने के लिए ब्लॉक मॉड्यूल (_ * ()) से निजी कार्यों का उपयोग करना होगा।


इसलिए ओपी उदाहरण के लिए यह होगा: $ ब्लॉक = ब्लॉक_ लोड ('ब्लॉक', '4');
कैमरन

12

बार्ट का जवाब एक सख्त मानक चेतावनी देगा (PHP 5.4 में डिफ़ॉल्ट रूप से सक्षम)। इसे ठीक करने के लिए रेंडर करने योग्य सरणी के लिए एक मध्यवर्ती चर का उपयोग करें:

$block = block_load('module', 'delta');
$renderable_array = _block_get_renderable_array(_block_render_blocks(array($block)));
print drupal_render($renderable_array);

चेतावनी होने का कारण यह है कि drupal_renderफ़ंक्शन अपने पैरामीटर को एक संदर्भ होने की उम्मीद करता है। इसके हस्ताक्षर हैं drupal_render(&$elements)। अधिक जानकारी के लिए इस तरह के प्रश्न का उत्तर देखें ।


2

प्रासंगिक लिंक उपयोगी और वास्तव में लागू करने में आसान हैं। अपने उपयोग-मामले के लिए आपको hook_block_view_alter()अपनी आवश्यकताओं के अनुरूप #contextual_links आइटम बदलने के लिए कार्यान्वित करने की आवश्यकता है। ये संदर्भ आपकी सहायता करेंगे:

GL :)


1
ओपी का मतलब यह है कि वह प्रोग्राम को ब्लॉक प्रदर्शित करता है, लेकिन प्रासंगिक लिंक नहीं जोड़े गए हैं।
बार्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.