প্রিপ্রোসেস হুকে কন্টেন্টের ধরণের নোড পরীক্ষা করুন


12

আমার নির্দিষ্ট সিরিজের টেম্পলেটগুলির জন্য টুইগ টেম্পলেটগুলিতে উপলভ্য করতে চাই এমন একটি ভেরিয়েবলের একটি সিরিজ রয়েছে।

ইন MYTHEME.themeআমার আছে:

function MYTHEME_preprocess_node(&$variables) {

  if (isset($variables['node'])) {

    $mycustomblock = \Drupal::service('plugin.manager.block')
      ->createInstance('myblock', []);

    $variables['mycustomblock'] = $mycustomblock->build();

    $headertext = \Drupal::service('plugin.manager.block')
      ->createInstance('headertext',
        [
          'text-align-submit'  => 'right',
          'uppercase-submit'   => TRUE,
          'header_size'        => 'h4',
          'header-size-submit' => 'h4',
          'grid-size-submit'   => 6,
          'header-title'       => 'This is a test',
        ]
      );

    $variables['headertext'] = $headertext->build();
  }
}

এটি আমার ব্যবহার করার অনুমতি দেয় {{ headertext }}এবং {{ mycustomblock }}মত বিষয়বস্তুর প্রকার টেমপ্লেটে node--contenttype1.html.twigএবং node--contenttype2.html.twig। তবে আমি কেবল প্রতিটি একক নোড টাইপের জন্য 'headertext'এবং 'mycustomblock'ভেরিয়েবলগুলি তৈরি করতে চাই না যখন আমার কেবল প্রতিটি কন্টেন্ট টাইপের জন্য প্রতিটি প্রয়োজন need একটি স্যুইচ বা বিবৃতিতে কোনও বিবরণ যা কোনও ব্লক সহ একটি ভেরিয়েবল উৎপন্ন করার আগে কোন সামগ্রীটি টাইপ করে তা পরীক্ষা করে দেখে ভাল লাগবে।

নোডের বিষয়বস্তুর ধরণটি চেক করতে পারি এমন কোনও উপায় আছে কি?

আমি চেষ্টা করেছিলাম

$type = $variables['node']->type;

তবে তা কার্যকর হয়নি।

উত্তর:


15

নোডের বিষয়বস্তুর ধরণ পেতে, আপনি কেবল $variables['node']->getType()বা ব্যবহার করুন $variables['node']->bundle()। প্রথম পদ্ধতিটি কেবল দ্বিতীয়টিকে কল করে, সুতরাং এক বা অন্যটিকে কল করা খুব বেশি তাত্পর্যপূর্ণ হয় না।

public function getType() {
  return $this->bundle();
}

পার্থক্যটি হ'ল bundle()প্রতিটি সত্তার জন্য এটি সংজ্ঞায়িত, যেহেতু বান্ডিল ধারণাটি সমস্ত সত্তার জন্য সাধারণ, যখন বিষয়বস্তুর ধরণ হ'ল নোডগুলির জন্য ডুপাল কোর মডিউলগুলি প্রয়োগ করে এমন একটি সত্তায় পরিবর্তন করার পূর্বে ব্যবহৃত সম্পত্তি দ্রুপাল; bundle()অন্যান্য সত্তার ধরণের জন্য কোডটি অভিযোজন করা আরও সহজ করে তোলে তবে আপনি যে কোডটি ব্যবহার করছেন সে ক্ষেত্রে এটি আমার মনে হয় না।


5

আপনি ব্যবহার করতে হবে $variables['node']->getType()। এছাড়াও আপনার যদি কিছু ভিউ মোডে এটির প্রয়োজন হয় তবে এটির সাথেও এটি পরীক্ষা করে দেখুন$variables['view_mode']


2

আপনি আপনার হুক ফাংশন নামের নোড (এবং দেখুন প্রকার) যোগ করতে পারেন:

function MYTHEME/MYMODULE_preprocess_node__nodetype__display(&$variables) {
  // ...
}

উদাহরণস্বরূপ, মোডে pageনোড টাইপের জন্য full:

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