Bagaimana cara menunjukkan judul simpul saat ini di page.html.twig OR di node.html.twig?


14

Jika saya ingin menunjukkan judul simpul saat ini di page.html.twig (secara default sepertinya hanya tersedia di node.html.twig) Saya harus membuat fungsi preprocess seperti:

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;
  }
}

Dan kemudian saya harus menimpa halaman-title.html.twig dengan menyalinnya ke folder tema saya saat ini dan berkomentar semuanya.

Ini sepertinya tidak "benar". Apakah ada cara yang lebih baik?

Jawaban:


20

Node sudah tersedia dalam templat halaman template_preprocess_page, jadi tidak perlu fungsi preprocess. Anda dapat menampilkan judul dengan:

{{ node.label }}

Judul halaman itu sendiri adalah sebuah blok, jadi jika Anda tidak membutuhkannya lagi cukup hapus dari wilayah di / admin / structure / block. Tidak perlu menyalin templat ke tema Anda atau mengubah yang asli.


Ini sepertinya tidak berfungsi di halaman depan, di mana nodesaja NULL. Apakah ada cara untuk mendapatkan judul halaman apa pun, termasuk judul halaman depan (bahkan ketika judul override digunakan)?
Florian Brucker

Itu benar @FlorianBrucker - kecuali halaman depan adalah simpul, Anda tidak akan memiliki variabel simpul yang tersedia. Judulnya mungkin dalam page['#title'], saya tidak yakin apakah itu akan berisi penggantian yang dibuat oleh VIews (tapi mungkin)
Clive

@Clive Sayangnya, page['#title']ada string kosong di page.html.twigsini.
Florian Brucker

Sayang sekali, saya pikir itu berlaku di beberapa titik di masa lalu, jelas tidak sekarang. Pertanyaan serupa ini mungkin membantu
Clive

@Clive, terima kasih atas penunjuknya tapi itu juga tidak membantu saya. Saya telah mengirim pertanyaan tentang masalah ini .
Florian Brucker

3

Anda dapat menambahkan kode di bawah ini ke atas node.html.twigdalam folder templat tema Anda:

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

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

0

Kode Drupal 8 untuk melakukan apa yang harus Anda lakukan adalah kode berikut.

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;
  }
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.