Создание кастомных хлебных крошек в 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

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

Использование entityqueue для сортировки элементов во view, основанной на Search API datasource

Апрель 3, 2024 г.

Ранее подход, который я опишу, использовался для nodequeue, сейчас с заменой плагина фунционалом entityqueue, тоже самое можно применить и для него. Проблема: Создано представление (view), где источник данных - элементы datasource Search API. ...

Читать

Изменить http код ответа для кастомной страницы

Октябрь 30, 2023 г.

Когда вы создаёте свою страницу, используя контроллер, то возможности тут же выбрать какой код ответа она возвращает нет. Контроллер занимается только формированием содержания страницы. Таким образом, страница возвращается с кодом 200. Что делать, ...

Читать

Загрузка файла через форму в Drupal

Май 19, 2023 г.

Посмотрим как получить непосредственный доступ к файлу без загрузки файла в хранилище, при его загрузке в поле типа "file" Form API. Много гайдов посвящено тому как использовать поле managed_file, а для unmanaged случая считается, что разработчик ...

Читать

Реализация формы поиска товаров

Май 11, 2023 г.

См. основной материал для введения. Форма в нашем случае не требует отправки/проверки данных, и реализует только два метода - getFormId и buildForm. Хотя форма и не содержит кнопки submit, но все равно будет реагировать на отправку данных, поэтому ...

Читать
 

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

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



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