В частности, мне нужно вывести заголовок страницы рядом с логотипом и контактными данными и, соответственно, отключить вывод заголовка непосредственно в шаблоне самой страницы. Со вторым все просто - переопределяем шаблон и все работает (хотя, может есть более правильные способы?), а вот с первым все плохо.
Для того, чтобы получить переменную с заголовком в шаблоне, в файле темы добавляем хук:
<?php
function mytheme_preprocess_block(&$vars) {
if ($vars['plugin_id'] != 'system_branding_block') return;
#Если текущий блок не system branding ничего не делаем. Иначе получаем текущую ноду и вытаскиваем из нее тайтл.
$node = $node = \Drupal::routeMatch()->getParameter('node');
if (!$node) return;
$vars['page_title'] = $node->get('title')->getValue()[0]['value'];
}
?>
Но оно вызывается один раз (после очистки кэша), затем этот блок кэшируется и везде выводится кэшированная версия (с первым после очиски кэша тайтлом страницы).
На ум приходит избавиться от блока system branding и перенести все его содержимое в шаблон html, Однако это уже костыль какой-то.
Так вот впорос: как такое реализовать без костылей, описаных выше?