অঞ্চল অনুযায়ী ব্লকগুলির জন্য কীভাবে থিম হুক পরামর্শ করবেন?


14

যেহেতু দ্রুপাল 8 এটি টেম্পলেট নামকরণ কনভেনশনগুলির সাথে নির্দিষ্ট অঞ্চলটিকে লোড করা সম্ভব নয় অঞ্চল অনুযায়ী এটি নির্দিষ্ট করা হয়েছে ( "প্রতি অঞ্চল ব্লক মার্কআপ এবং প্রতি অঞ্চল ব্লক টেম্প্লেটিং বৈশিষ্ট্য সরানো হয়েছে" )। তবে নির্দিষ্ট অঞ্চলে রাখলে আমার ব্লকগুলির জন্য আলাদা আলাদা এইচটিএমএল থাকা দরকার। আমি কীভাবে এটি সম্পাদন করব?

আমি MYMODULE_theme_suggestions_ block_alter ব্যবহার করার কথা ভেবেছি কিন্তু বর্তমান অঞ্চলটি কীভাবে পাব তা আমি জানি না।

উত্তর:


20

ব্লক সত্ত্বা পেলে আপনি অঞ্চল পেতে পারেন।

.মডিউল বা। থিম ফাইল

use Drupal\block\Entity\Block;

function MODULE_theme_suggestions_block_alter(array &$suggestions, array $variables) {
  if (!empty($variables['elements']['#id'])) {
    $block = Block::load($variables['elements']['#id']);
    $suggestions[] = 'block__' . $block->getRegion() . '__' . $variables['elements']['#id'];
  }
  /* Use this 'else if' only if you are using page_manager module and want to know which region is the block */
  else if (isset($variables['elements']['#configuration']['region'])) {
    $suggestions[] = 'block__page_' . $variables['elements']['#configuration']['region'] . '__' . end(explode(':', $variables['elements']['#plugin_id']));
  }
  return $suggestions;
}

সম্পাদনা 1: কভার পেজ_ম্যানেজার মডিউল কেস।


প্রায় নিখুঁত. # আইডির সত্যিকারের উপস্থিতি রয়েছে কিনা তা নিশ্চিত করতে আপনাকে একটি আইসেট () যুক্ত করতে হবে। উদাহরণস্বরূপ, আপনি যদি পেজ_ম্যানেজার ব্যবহার করেন এবং সেখানে ব্লক স্থাপন করেন, তবে আপনার কাছে # আইড থাকবে না।
বার্ডির

@ বারডির ধন্যবাদ;)। আমি মনে করি যে এই ক্ষেত্রে isset()প্রয়োজন হয় না নয় কারন যদি একটা, #idতারপর, এটা পাস NULLকরার ::loadফাংশন, এবং মাত্র আসতে NULL। শেষ পর্যন্ত, $blockহয় NULLএবং কিছুই ঘটবে। আমার দেব env দ্রুপাল 8.0.4 - page_manage-1.0-alpha23 (আগে কখনও এই মডিউলটি ব্যবহার করেনি) পরীক্ষিত।
ভ্যাগনার

হ্যাঁ, আইসেট () প্রয়োজন। একটি অ্যারে কী অ্যাক্সেস করা যা পিএইচপি বিজ্ঞপ্তিতে ফলাফলের অস্তিত্ব নেই। আপনার লগগুলি পরীক্ষা করুন এবং আপনি দেখতে পাবেন। আমি ভার্বোজে ত্রুটি প্রদর্শন সহ সর্বদা বিকাশ করার পরামর্শ দেব, যা সরবরাহিত উদাহরণ সেটিংসের ডিফল্ট।
বারদির
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.