প্রিপ্রোসেসি ভেরিয়েবল কেবল নির্দিষ্ট ব্লকের জন্য


11

এটি কি কেবলমাত্র নির্দিষ্ট ব্লকের জন্য প্রিপ্রোসেস ভেরিয়েবলগুলি সম্ভব? আমি এই ধরনের ফাংশন তৈরি করেছি: mytheme_preprocess_block__aggregator(&$vars)তবে এটি কার্যকর হয় না।

- সম্পাদনা -

এটি ড্রুপাল 8 https://drupal.org/node/1751194 এ স্থির বলে মনে হচ্ছে


আপনি যে সম্পাদনাটি করেছেন এবং আপনি যে লিঙ্কটি এখানে পোস্ট করেছেন তা কেবল থিম হুক পরামর্শের সাথেই কাজ করে বলে মনে হচ্ছে, তাই না?
লেইম্যানেক্স

উত্তর:


20

দুর্ভাগ্যক্রমে, এর মতো করার কোনও উপায় নেই (হুক_ফর্ম_াল্টার () এর মতো)।

এটি করার সর্বোত্তম উপায় হ'ল want ভেরিয়েবল ['ব্লক'] -> বিডগুলি কেবলমাত্র যে ব্লকগুলিতে চান তা প্রয়োগ করতে বিড ব্যবহার করুন:

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
আমি দ্রুপাল কোডের দিকে চেয়েছিলাম, এবং দ্রুপাল সন্ধান করে না hook_preprocess_block_MODULE()বা THEME_preprocess_block_MODULE()। উদাহরণস্বরূপ __, যখন থিম ফাংশন নামগুলি অন্তর্ভুক্ত থাকে তখন theme()এটি কোনও নির্দিষ্ট উপায়ে পরিচালনা করে theme('links__contextual__node', ...)
কিমলালুনো

হুঁ, জেনে ভাল!
অ্যালেক্স ওয়েবার

'ব্লক_আইডি' সাধারণত ব্লকের মেশিনের নামটি সঠিক?
ক্রিসজলি

2
দয়া করে 'block_id' হিসাবে ব্যবহার করুন $variables['block']->bidএবং $variables['block_id']সেই ব্লকের অনন্য নয়।
ডানকানমু

3
আমি মনে করি তার একটি সামান্য বন্ধুত্বপূর্ণ শর্তসাপেক্ষে স্যুইচ করার জন্য $variables['block']->deltaযদি$variables['block']->module == 'MODULE'
পিট

3

কেবলমাত্র নিশ্চিত করার জন্য, ড্রুপাল 8 এ আপনি নির্দিষ্ট ব্লকের জন্য প্রিপ্রসেস ফাংশন লিখতে পারেন। উদাহরণ স্বরূপ:

দ্রুপাল ৮

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, এবং একটি আইডি চেক দিয়ে আটকাতে হবে:

দ্রুপাল 7

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

এটি এখনই ডি 8 এ চেষ্টা করে দেখুন, না MYTHEME_preprocess_block__system_branding_block(&$vars)কাজ করে না হয় না MYTHEME_preprocess_block__page_title_block(&$variables)
leymannx

2
mytheme_preprocess_block__{my_block_machine_name}(&$variables)D8.3
টিম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.