আমি কীভাবে পেজ.html.twig বা নোড html.twig এ বর্তমান নোড শিরোনামটি দেখাব?


14

আমি যদি পেজ এইচটিএমএল.টিভিগ-এ বর্তমান নোড শিরোনামটি দেখাতে চাই (ডিফল্টরূপে এটি কেবল নোড। Html.twig এ উপলব্ধ বলে মনে হয়) আমাকে এর মতো একটি প্রিপ্রোসেস ফাংশন তৈরি করতে হবে:

function theme_preprocess_page(&$variables, $hook) {
  // Set our page title so we can access it in page.html.twig
  if ($node = \Drupal::routeMatch()->getParameter('node')) {
    $variables['my_node_title'] = $node->title->value;
  }
}

এবং তারপরে আমার বর্তমান থিম ফোল্ডারে এটি অনুলিপি করে এবং সমস্ত কিছু মন্তব্য করে পৃষ্ঠা-শিরোনাম। Html.twig করতে হবে।

এটি "সঠিক" বলে মনে হচ্ছে না। একটি ভাল উপায় আছে কি?

উত্তর:


21

ধন্যবাদ নোড ইতিমধ্যে পৃষ্ঠার টেম্পলেটটিতে উপলব্ধ রয়েছে template_preprocess_page, তাই প্রিপ্রোসেস ফাংশনের প্রয়োজন নেই। আপনি শিরোনামটি এর সাথে আউটপুট করতে পারেন:

{{ node.label }}

পৃষ্ঠার শিরোনাম নিজেই একটি ব্লক, সুতরাং আপনার যদি আর এটির প্রয়োজন না হয় তবে এটিকে প্রশাসক / কাঠামো / ব্লকের অঞ্চল থেকে সরিয়ে দিন। আপনার থিমটিতে টেমপ্লেটটি অনুলিপি করার বা মূল পরিবর্তন করার দরকার নেই।


এটি প্রথম পৃষ্ঠায় কাজ করছে বলে মনে হচ্ছে না, যেখানে nodeস্রেফ NULL। প্রথম পৃষ্ঠার শিরোনাম (কোনও শিরোনাম ওভাররাইড ব্যবহৃত হয় এমন কি) সহ কোনও পৃষ্ঠা শিরোনাম পাওয়ার কী উপায় আছে ?
ফ্লোরিয়ান ব্রুকার

এটি সঠিক @ ফ্লোরিয়ান ব্রুকার - প্রথম পাতাটি নোড না হলে আপনার কাছে নোড ভেরিয়েবলটি উপলব্ধ নেই। শিরোনামটি সম্ভবত এতে রয়েছে page['#title'], আমি নিশ্চিত নই যে এতে ভিউজ (তবে সম্ভবত) দ্বারা তৈরি কোনও ওভাররাইড থাকবে কিনা
ক্লাইভ

@ ক্লাইভ দুর্ভাগ্যক্রমে, page['#title']এখানে একটি খালি স্ট্রিং page.html.twig
ফ্লোরিয়ান ব্রুকার

করুণা, আমি মনে করি এটি অতীতে এক পর্যায়ে বৈধ ছিল, সম্ভবত এখন তা নয় not এই অনুরূপ প্রশ্নটি সহায়তা করতে পারে
ক্লাইভ

@ ক্লাইভ, পয়েন্টারটির জন্য ধন্যবাদ তবে এটি আমার কোনও কাজে আসেনি। আমি সমস্যাটি নিয়ে একটি প্রশ্ন পোস্ট করেছি ।
ফ্লোরিয়ান ব্রুকার

3

আপনি node.html.twigআপনার থিমের টেমপ্লেট ফোল্ডারে উপরে নীচে কোডগুলি যুক্ত করতে পারেন :

{% if not page %}
  <h2{{ title_attributes }}>
    <a href="{{ url }}" rel="bookmark">{{ label }}</a>
  </h2>
{% endif %}

{% if page %}
  <h2{{ title_attributes }}>
    {{ label }}
  </h2>
{% endif %}

0

আপনার প্রদর্শিত কোডটি যা করা উচিত তা করার জন্য ড্রুপাল 8 কোডটি নীচের একটি।

function theme_preprocess_page(&$variables) {
  $request = \Drupal::request();
  $route_match = \Drupal::routeMatch();
  if ($route_match->getParameter('node')) {
    $page_title = \Drupal::service('title_resolver')->getTitle($request, $route_match->getRouteObject());
    $variables['my_node_title'] = $page_title;
  }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.