Używam pagetitle
modułu podstawowego do renderowania tytułu strony. Jednak dla niektórych typów treści chcęstronagłównym tytułem ma być etykieta typu treści (np. „Wiadomości”), a nie etykieta węzła (np. „Wydano Drupala 8!”).
Czy istnieje prosty sposób na osiągnięcie tego? Moje pierwsze przypuszczenie polegało na użyciu, template_preprocess_page_title
ale $variables
bez kontekstu na temat węzła, typu węzła itp.
Odpowiedzi:
Jak wspomniano Ivan Jaros Możesz użyć
hook_preprocess_page_title
.Musisz najpierw załadować węzeł z trasy, aby uzyskać kontekst.
Jeśli chcesz tego używać tylko z niektórymi typami treści, możesz użyć
$node->bundle()
tej nazwy, aby uzyskać nazwę do odczytu maszynowego i porównać z nią.źródło
block_title
. Jednak nie zastępuje tytułu strony. Każdy pomysł, jak ustawić tytuł strony na taką samą wartość jakLinus ma to odpowiednie dla funkcji wstępnego przetwarzania, ale osobiście użyłbym tego, aby uzyskać bieżący węzeł (ponieważ jest krótszy i wydaje się łatwiejszy ...)
Następnie, aby uzyskać dostęp do tytułu węzła, użyj:
lub aby uzyskać dostęp do innego niestandardowego pola (z wartością):
W rzeczywistości masz dostęp do wszystkich danych w taki sam sposób, w jaki miałbyś dostęp do tych danych w zwykłej funkcji wstępnego przetwarzania węzła :)
źródło
Użyj modułu Metatag , który jest już gotowy na D8 i obsługuje to, czego potrzebujesz.
źródło
Zrób mały moduł. Wymagane dwa pliki:
Nazwa pliku: liveeventtitles.info.yml
Plik: liveeventtitles.module
Prawdopodobnie mam więcej niż potrzebuję, na przykład nie sądzę, że potrzebuję wartości domyślnej i PLACEHOLDER w hook_form_alter (), ale muszę dać komuś powód, aby zagłosować w dół (-;
źródło
W THEMENAME_preprocess_html (& zmienne $) {} znajduje się zmienna $ ['head_title'], która jest najwyższym układem strony - tytuł strony (Structured title: $ variable ['head_title_array']). Istnieją również inne interesujące klucze tablicy, takie jak $ zmienne [„strona”] [„treść”] i $ zmienne [„typ_węzła”], na podstawie których można przetwarzać tytuł.
Ostatnia myśl: $ zmienne ['head_title'] = ['title_part1', 'title_part2']; ponieważ w pliku html.html.twig
źródło