Создание кастомных хлебных крошек в Drupal

С 8й версии друпал предлагает механизм переопределения/задания хлебных крошек через реализацию сервиса breadcrumb_builder.

Немного теории

При создании хлебных крошек, Drupal вызывает объявленные сервисы в порядке их приоритетов, и опрашивает их, определяя кто будет наполняют бредкрамб ссылками.

Каждый из сервисов должен реализовывать интерфейс BreadcrumbBuilderInterface. У него всего два метода: applies и build, и оба получают объект, совместимый с RouteMatchInterface.

Первый (applies) служит для того, чтобы сигнализировать, что маршрут может быть обработан данным сервисом. Он возвращает boolean значение. Тот сервис (в порядке приоритетов), который вернет true, будет вызван далее через метод build.

Build должен создать и вернуть крошки в виде объекта Drupal\Core\Breadcrumb\Breadcrumb.

Чуть чуть практики

Когда стало ясно, как это работает, покажу пример из своей практики.

Мне нужно было вывести хлебные крошки (breadcrumbs), основанные на категории для страницы товара модуля Commerce. Т.к. категории могли быть вложенными, то требуется построить иерархический бредкрамб, включающий родительские страницы таксономии.

Реализацию я сделал в виде модуля, названного custom_blocks. Для модуля нужен описатель, файл custom_blocks.info.yml. Я разместил его в /modules/custom/custom_blocks:

Чтобы объявить ядру о наличии сервиса, его описание требуется добавить в файл custom_blocks.services.yml в том же каталоге модуля (/modules/custom/custom_blocks):

Теперь Drupal ожидает, что вы разместите реализацию BreadcrumbBuilderInterface в файле /modules/custom/custom_blocks/src/ProductBreadcrumbBuilder.php

Мало букафф? Читайте есчо !

Используем токены для доступа к полям параграфов в Drupal

Май 2, 2024 г.

Пара примеров о том, как вытащить нужную инфу из параграфов, используя токены. Обычно это нужно для генерации meta заголовков страницы. У вас есть node, в которой вы создали поле field_myfield с entity_reference: paragrpahs. Самое простое, ...

Читать

Чем заменить drupal_get_path() в Drupal 9/10

Январь 9, 2024 г.

Функция считается устаревшей, начиная с версии ядра 9.3, в 10-й версии функция удалена из кода. В новом API нужно воспользоваться одним из сервисов ядра, которые реализуют нужную функцию. Сервис extension.list.module - реализует функции, связанные ...

Читать

Генерация JWT токена в Drupal

Июль 30, 2023 г.

Модуль jwt реализует REST аутентификацию, настройку ключа и многое другое. Небольшой спиппет как сгенерировать и отправить jwt с собсвенной нагрузкой. Передадим токен, в котором полезной нагрузкой будет ID пользователя. А время жизни токена - 1 ...

Читать

Attempting to re-run cron while it is already running.

Июнь 3, 2025 г.

Попытка запустить cron параллельно с запущенным кроном не увенчается успехом, так как Drupal использует блокировку. Но иногда, из-за ошибок во время исполнения, блокировка не снимается. Что делать, если блокировка не была снята штатно? На самом ...

Читать
 

Комментарии к «Создание кастомных хлебных крошек в Drupal»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: