Dapatkan judul halaman

8

Ketika saya mendapatkan judul di beberapa halaman, saya mendapatkan judul kosong seperti Home . Kode yang saya gunakan di pelanggan saya adalah yang berikut.

class HistorySubscriber implements EventSubscriberInterface {
  public static function getSubscribedEvents() {
    $events[KernelEvents::REQUEST][] = array('onResponse', 0);
    return $events;
  }

  public function onResponse($event) {
    $request = \Drupal::request();
    $route_match = \Drupal::routeMatch();
    $title = \Drupal::service('title_resolver')->getTitle($request, $route_match->getRouteObject());
  }
}

Apakah ini masalah? Bagaimana saya bisa memperbaikinya?

rpayanm
sumber
1
Sayangnya, saat ini tidak ada API yang jelas untuk melakukannya. Dulu ada beberapa masalah untuk membahas masalah itu. Informasi ini tersedia di hook_preprocess_page ... atau sementara waktu di \ Drupal \ Core \ Render \ HtmlRenderer :: prep (), yang sayangnya tidak meneruskan judul ke acara apa pun. Saya kira kita harus mengisi masalah terhadap inti drupal untuk menyelesaikan situasi ... karena ini adalah usecase yang jelas untuk orang
Daniel Wehner
@DanielWehner, biarkan saya membuat masalah di drupal.org
rpayanm
Bisakah Anda memposting tautan ke masalah yang Anda ajukan di drupal.org?
Anavarre
@anavarre ini adalah masalah drupal.org/node/2399615 , tetapi ditutup karena merupakan duplikat drupal.org/node/2264043
rpayanm

Jawaban:

1

Kode berikut dapat digunakan untuk mengubah judul halaman.

// Alter page title.
$request = \Drupal::request();
if ($route = $request->attributes->get(\Symfony\Cmf\Component\Routing\RouteObjectInterface::ROUTE_OBJECT)) {
  $route->setDefault('_title', 'Kontakt');
}
pengembang
sumber
0

Coba ini

<?php
  $request = \Drupal::request();
  $title=t('Home');
  if ($route = $request->attributes->get(\Symfony\Cmf\Component\Routing\RouteObjectInterface::ROUTE_OBJECT) && !drupal_is_front_page()) {
    $title = \Drupal::service('title_resolver')->getTitle($request, $route);
  }

?>

kode ini menghasilkan null di halaman depan, maka Anda harus mencoba memeriksa apakah drupal_is_front_page kemudian menampilkan judul lain

Yusef
sumber
Kode itu tidak berfungsi, pada halaman "Home" $ ​​title adalah null
rpayanm
@ RolandoPayánMosqueda jika masalah Anda hanya ada di rumah, coba deteksi halaman depan lalu ubah, saya perbarui jawaban saya
Yusef
Tidak hanya pada "Home" terjadi ini, pada "admin / konten" juga dan saya yakin pada halaman lain lebih lanjut.
rpayanm
@ RolandoPayánMosqueda Saya pikir ini adalah masalah drupal, drupal 8 adalah beta3, jangan berharap semuanya berfungsi dengan benar, terutama fitur dan API baru :)
Yusef
0

Gunakan kode ini di dalam fungsi Anda dan Anda akan mendapatkan judul halaman apa pun seperti istilah, halaman simpul ...

public function getCurrentPageTitle() {
    $title = 'DEFAULT TITLE';
    $request = \Drupal::request();
    if ($route = $request->attributes->get(\Symfony\Cmf\Component\Routing\RouteObjectInterface::ROUTE_OBJECT)) {
      // For Taxonomy Term
      if (!empty($request->attributes->get('taxonomy_term'))) {
        $title = $request->attributes->get('taxonomy_term')->get('title')->value;
      }
      // For Node
      else {
        $node = \Drupal::routeMatch()->getParameter('node');
        if (!empty($node) && 'CONTENT_TYPE' === $node->bundle()) {
          $title = "CONTENT_TYPE_SPECIFIC_TITLE_SET";
          //$title = \Drupal::service('title_resolver')->getTitle($request, $route);
        }
        else {
          $title = \Drupal::service('title_resolver')->getTitle($request, $route);
        }
      }
    }
    return $title;
}
AshwinP
sumber