पृष्ठ का शीर्षक प्राप्त करें


8

जब मुझे कुछ पृष्ठों पर शीर्षक मिलता है, तो मुझे होम जैसा खाली शीर्षक मिलता है । मेरे ग्राहक में जो कोड मैं उपयोग कर रहा हूं वह निम्नलिखित है।

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

यह एक मुद्दा है? मैं इसे कैसे ठीक कर सकता हूं?


1
वर्तमान में ऐसा करने के लिए कोई स्पष्ट एपीआई नहीं है, दुख की बात है। उस समस्या पर चर्चा करने के लिए कुछ मुद्दा हुआ करता था। जानकारी हुक_परप्रोसेसर_पृष्ठ ... या अस्थायी रूप से \ Drupal \ Core \ Render \ HtmlRenderer :: ready () में उपलब्ध है, जो दुखद रूप से किसी भी घटना के लिए शीर्षक नहीं देता है। मुझे लगता है कि हमें स्थिति को हल करने के लिए ड्रुपल कोर के खिलाफ एक मुद्दा भरना चाहिए ... क्योंकि यह लोगों के लिए एक स्पष्ट usecase है
डैनियल वीनर

@DanielWehner है कि, मुझे drupal.org में एक मुद्दा बनाने दो
rpayanm

क्या आप drupal.org पर आपके द्वारा दर्ज की गई समस्या का लिंक पोस्ट कर सकते हैं?
अनवार्रे

@anavarre यह मुद्दा drupal.org/node/2399615 है , लेकिन इसे इसलिए बंद कर दिया गया क्योंकि यह drupal.org/node/2264043 का
rpayanm

जवाबों:


1

पेज कोड बदलने के लिए निम्न कोड का उपयोग किया जा सकता है।

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

0

इसे इस्तेमाल करे

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

?>

यह कोड सामने के पृष्ठ पर वापस आता है, तो आपको यह जांचने का प्रयास करना चाहिए कि क्या drupal_is_front_page तो दूसरा शीर्षक दिखाएगा


यह कोड काम नहीं करता है, "होम" पृष्ठ पर $ शीर्षक शून्य है
rpayanm

@ RolandoPayánMosqueda यदि आपकी समस्या केवल घर में है, तो पहले पृष्ठ का पता लगाने का प्रयास करें, फिर उसे बदलें, मैं अपना उत्तर अपडेट करता हूं
Yusef

न केवल "होम" पर यह होता है, "एडमिन / कंटेंट" पर भी और मैं दूसरों के पेजों पर अधिक यकीन करता हूं।
rpayanm

@ RolandoPayánMosqueda मुझे लगता है कि यह एक ड्रुपल मुद्दा है, ड्रुपल 8 बीटा 3 है, सब कुछ सही ढंग से काम करने की उम्मीद नहीं करता है, विशेष रूप से नई सुविधाओं और एपीआई :)
Yusef

0

अपने फ़ंक्शन के अंदर इस कोड का उपयोग करें और आपको टर्म, नोड पेज जैसे किसी भी पेज का शीर्षक मिलेगा ...

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;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.