Sayfanın başlığını al


8

Başlığı bazı sayfalara aldığımda, Ana Sayfa gibi boş bir başlık alıyorum . Abonemde kullandığım kod şu.

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

Bu bir sorun mu? Nasıl düzeltebilirim?


1
Ne yazık ki bunu yapmak için net bir API yok. Bu sorunu tartışmak için bazı sorunlar vardı. Bilgilere hook_preprocess_page ... adresinde veya geçici olarak \ Drupal \ Core \ Render \ HtmlRenderer :: prepar () dizininde yer verilebilir. Durumu çözmek için drupal çekirdeğe karşı bir konuyu doldurmalıyız ... çünkü bu insanlar için açık bir kullanım alanı
Daniel Wehner

@DanielWehner, drupal.org'da bir sorun oluşturmama izin verin
rpayanm

Drupal.org'da dosyaladığınız sorunun bağlantısını gönderebilir misiniz?
anavarre

@anavarre bu sorun drupal.org/node/2399615 , ancak kapatıldı çünkü drupal.org/node/2264043
rpayanm

Yanıtlar:


1

Sayfa kodunu değiştirmek için aşağıdaki kod kullanılabilir.

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

0

Bunu dene

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

?>

bu kod ön sayfada null değerini döndürürse , drupal_is_front_page'in başka bir başlık gösterip göstermediğini kontrol etmeye çalışmalısınız.


Bu kod çalışmıyor, "Ana Sayfa" sayfasında $ title null
rpayanm

@ RolandoPayánMosqueda Sorununuz sadece evde ise, ön sayfayı tespit etmeyi deneyin ve sonra değiştirin, cevabımı güncelliyorum
Yusef

Sadece "Ana Sayfa" üzerinde değil, "admin / content" de bu olur ve ben diğer sayfalarda daha eminim.
rpayanm

@ RolandoPayánMosqueda Bence bu bir drupal sorunu, drupal 8 beta3, her şeyin düzgün çalışmasını beklemeyin, özellikle yeni özellikler ve API'ler :)
Yusef

0

Bu kodu fonksiyonunuz içinde kullanın ve terim, düğüm sayfası gibi herhangi bir sayfanın başlığını alacaksınız ...

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;
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.