Drupal → Добавить в хлебные крошки заголовок текущей страницы
Так советует делать официальная документация:
use Symfony\Cmf\Component\Routing\RouteObjectInterface; /** * Preprocess function for breadcrumb.html.twig. */ function THEMENAME_preprocess_breadcrumb(&$variables) { if ($variables['breadcrumb']) { $request = \Drupal::request(); $route = $request->attributes->get(RouteObjectInterface::ROUTE_OBJECT); $page_title = \Drupal::service('title_resolver')->getTitle($request, $route); $variables['breadcrumb'][] = ['text' => $page_title]; $variables['#cache']['contexts'][] = 'url'; } }
Минус в том, что из-за кэш-контекста url
, блок с крошками будет генерироваться для каждой страницы сайта, тогда как по умолчанию он генерируется один раз для родительского раздела, а для дочерних страниц берётся из кэша. Поэтому вот более правильный вариант:
use Symfony\Cmf\Component\Routing\RouteObjectInterface; /** * Preprocess function for breadcrumb.html.twig. */ function THEMENAME_preprocess_breadcrumb(&$vars) { if ($vars['breadcrumb']) { $vars['breadcrumb'][] = [ 'text' => [ '#lazy_builder' => ['THEMENAME_breadcrumb_page_title', []], '#create_placeholder' => TRUE, ] ]; } } /** * Breadcrumb page title lazy builder. */ function THEMENAME_breadcrumb_page_title() { $request = \Drupal::request(); $route = $request->attributes->get(RouteObjectInterface::ROUTE_OBJECT); $page_title = \Drupal::service('title_resolver')->getTitle($request, $route); return ['#markup' => $page_title]; }
Оставить комментарий