Так советует делать официальная документация:
// THEMENAME.theme
use Symfony\Cmf\Component\Routing\RouteObjectInterface;
/**
* Preprocess function for breadcrumb.html.twig.
*/
function THEMENAME_preprocess_breadcrumb(array &$variables): void {
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
, блок с крошками будет генерироваться для каждой страницы сайта, тогда как по умолчанию он генерируется один раз для родительского раздела, а для дочерних страниц берётся из кэша. Поэтому вот более правильный вариант с ленивым билдером:
// THEMENAME.theme
use Symfony\Cmf\Component\Routing\RouteObjectInterface;
/**
* Preprocess function for breadcrumb.html.twig.
*/
function THEMENAME_preprocess_breadcrumb(array &$vars): void {
if ($vars['breadcrumb']) {
$vars['breadcrumb'][] = [
'text' => [
'#lazy_builder' => [
'\Drupal\THEMENAME\TrustedCallbacks::breadcrumbPageTitleLazyBuilder',
[]
],
'#create_placeholder' => TRUE,
]
];
}
}
// src/TrustedCallbacks.php
namespace Drupal\THEMENAME;
use Drupal\Core\Security\TrustedCallbackInterface;
class TrustedCallbacks implements TrustedCallbackInterface {
/**
* {@inheritDoc}
*/
public static function trustedCallbacks(): array {
return [
'breadcrumbPageTitleLazyBuilder',
];
}
/**
* Breadcrumb page title lazy builder.
*/
public static function breadcrumbPageTitleLazyBuilder(): array {
$request = \Drupal::request();
$route = $request->attributes->get(RouteObjectInterface::ROUTE_OBJECT);
$page_title = \Drupal::service('title_resolver')->getTitle($request, $route);
return is_array($page_title) ? $page_title : ['#markup' => $page_title];
}
}
Написанное актуально для
Drupal 8+
Похожие записи
- Хлебные крошки + schema.org
- Темизация группы чекбоксов или радио-кнопок (#type=>checkboxes, #type=>radios)
- Как в Views программно изменить view mode выводимых сущностей по данным из cookie?
- Добавляем на страницу управления отображением материала поля "Заголовок" и "Дата создания"
- Добавляем на страницу управления отображением комментария поля "автор" и "дата создания"
Добавить комментарий