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

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

Реализация блока с внедрением формы

Май 11, 2023 г.

См. основной материал для введения. В имплементации блока требуется сформировать набор переменных и передать его в шаблон. Шаблон был ранее объявлен в основном файле модуля, исходя из макета. [crayon-6a5e8ac47e2d9127402226/] В макете присутствуют ...

Читать

Drupal checkbox field form API

Март 18, 2024 г.

Drupal интерпретирует чекбокс как integer. Это вызывает некоторое непонимание при работе с полем через Drupal form API. Давайте рассмотрим пример объявления и чтения данных поля формы. Объявление checkbox поля в вашей форме: [crayon-6a5e8ac47e595902998712/] ...

Читать

Убрать мета тег Generator

Май 17, 2023 г.

Выпиливаем мета-тег Generator из заголовочной секции сайта на Drupal. За одно и пару других лишних мета маркеров. Для этого используем hook_page_attachments_alter в теме оформления сайта. 'Generator' в списке мета информации идет под именем system_meta_generator. ...

Читать

Убираем пустые категории из фильтра во views

Сентябрь 13, 2023 г.

Весьма распространённый случай, когда в качестве exposed filter используется поле, связанное с таксономией. Так вы получаете набор опций в фильтре для своего представления, которое доступно пользователю. Также весьма часто некоторые дополнительные ...

Читать
 

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

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



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