मैं पृष्ठ में वर्तमान नोड शीर्षक कैसे दिखाऊं।


14

यदि मैं पृष्ठ में मौजूदा नोड शीर्षक दिखाना चाहता हूं। तो (डिफ़ॉल्ट रूप से यह केवल नोड में उपलब्ध होना चाहिए। यह मुझे लगता है) मुझे एक प्रीप्रोसेस फ़ंक्शन बनाना होगा:

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

और फिर मुझे अपने वर्तमान थीम फ़ोल्डर में कॉपी करके और सब कुछ टिप्पणी करके पृष्ठ- title.html.twig को ओवरराइट करना होगा।

यह "सही" प्रतीत नहीं होता है। क्या कोई बेहतर तरीका है?

जवाबों:


21

नोड पहले से ही पेज टेम्प्लेट के लिए धन्यवाद के लिए उपलब्ध है template_preprocess_page, इसलिए प्रीप्रोसेस फ़ंक्शन की कोई आवश्यकता नहीं है। आप शीर्षक के साथ उत्पादन कर सकते हैं:

{{ node.label }}

पृष्ठ शीर्षक अपने आप में एक ब्लॉक है, इसलिए यदि आपको इसकी आवश्यकता नहीं है तो इसे केवल क्षेत्र / व्यवस्थापक / संरचना / ब्लॉक से हटा दें। अपने विषय पर टेम्पलेट की प्रतिलिपि बनाने या मूल को बदलने की आवश्यकता नहीं है।


यह फ्रंट पेज पर काम नहीं करता है, जहां nodeबस है NULL। क्या कोई पृष्ठ शीर्षक प्राप्त करने का एक तरीका है, जिसमें फ्रंट पेज शीर्षक (यहां तक ​​कि जब एक शीर्षक ओवरराइड का उपयोग किया जाता है) भी शामिल है?
फ्लोरियन ब्रूकर

यह सही है @FlorianBrucker - जब तक कि फ्रंट पेज एक नोड नहीं है, आपके पास एक नोड चर उपलब्ध नहीं होगा। शीर्षक शायद में है page['#title'], मुझे यकीन है कि अगर देखता है (लेकिन शायद) द्वारा किए गए किसी भी ओवरराइड होते हैं नहीं कर रहा हूँ
क्लाइव

@Clive दुर्भाग्य से, यहाँ पर page['#title']एक खाली स्ट्रिंग page.html.twigहै।
फ्लोरियन ब्रूकर

अफ़सोस, मुझे लगता है कि अतीत में कुछ बिंदु पर मान्य था, जाहिर है अब नहीं। यह समान प्रश्न हो सकता है मदद
क्लाइव

@ क्लिक करें, पॉइंटर के लिए धन्यवाद, लेकिन इससे मुझे मदद नहीं मिली। मैंने समस्या के संबंध में एक प्रश्न पोस्ट किया है
फ्लोरियन ब्रूकर

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

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