केवल कुछ ब्लॉकों के लिए प्रीप्रोसेस चर


11

क्या यह केवल कुछ ब्लॉकों के लिए प्रीप्रोसेस चर संभव है? मैंने ऐसा फंक्शन बनाया है: mytheme_preprocess_block__aggregator(&$vars)लेकिन यह काम नहीं करता है।

- संपादित करें -

यह Drupal 8 https://drupal.org/node/1751194 में तय किया गया लगता है


आपके द्वारा संपादित किया गया लिंक और आपके द्वारा वहां लिंक किया गया लिंक केवल थीम हुक सुझावों से संबंधित है, है ना?
— 20

जवाबों:


20

दुर्भाग्य से, ऐसा करने का कोई तरीका नहीं है (हुक_फॉर्म_ल्टर () के समान)।

ऐसा करने का सबसे अच्छा तरीका $ चर ['ब्लॉक'] -> बोली को केवल उन ब्लॉकों में लागू करना होगा जो आप चाहते हैं:

function mytheme_preprocess_block(&$variables) {
  if ($variables['block']->bid === 'target_block_id') {
    // do something for this block
  } else if ($variables['block']->bid === 'other_target_block_id') {
    // do something else for this other block
  }
}

4
मैंने Drupal कोड को देखा, और Drupal के लिए hook_preprocess_block_MODULE()या नहीं दिखता है THEME_preprocess_block_MODULE()। यह एक विशेष तरीके से __विषय फ़ंक्शन नामों में निहित है, जब उदाहरण के लिए, के theme()रूप में लागू किया गया है theme('links__contextual__node', ...)।
— kiamlaluno

हम्म, जानकर अच्छा लगा!
— एलेक्स वेबर

'block_id' आमतौर पर ब्लॉक का मशीन नाम सही है?
— क्रिसली

2
कृपया का उपयोग करें $variables['block']->bidऔर नहीं के $variables['block_id']रूप में 'block_id' उस ब्लॉक के लिए अद्वितीय नहीं है।
— डंकनमो

3
मुझे लगता है कि अपने एक छोटे से दोस्ताना सशर्त स्विच करने के लिए पर $variables['block']->deltaअगर$variables['block']->module == 'MODULE'
— पीट

3

बस पुष्टि करने के लिए, ड्रुपल 8 में आप विशिष्ट ब्लॉकों के लिए प्रीप्रोसेस फ़ंक्शन लिख सकते हैं। उदाहरण के लिए:

द्रुपाल al

mytheme_preprocess_block__system_branding_block(&$vars) {
  // Make changes to the the system branding block
}

लेकिन आप हुक_परप्रोसेसर_ब्लॉक और प्लगइन आईडी का भी उपयोग कर सकते हैं:

function mytheme_preprocess_block(&$vars) {
  if ($vars['plugin_id'] == 'system_branding_block') {
    // Make changes to the the system branding block
  }
}

जैसा कि एलेक्स ने बताया, ड्रुपल 7 में आपको HOOK_preprocess_block, और एक आईडी चेक के साथ रहना होगा।

द्रुपाल al

mytheme_preprocess_block(&$vars) {
  if ($vars['block']->bid === 'target_block_id') {
    // make changes to this block
  }
}

इसे अभी D8 पर आज़माया, न तो MYTHEME_preprocess_block__system_branding_block(&$vars)काम करता है और न ही करता है MYTHEME_preprocess_block__page_title_block(&$variables)।
— लेमनैक्स

2
mytheme_preprocess_block__{my_block_machine_name}(&$variables)D8.3 पर काम करता है
— टिम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.