У меня есть тип пользовательского блока под названием HomeBlocks. Этот пакет имеет поле абзацев, которое позволяет использовать несколько абзацев.
Затем я размещаю (используя Layout Builder) экземпляр этого типа блока на своей домашней странице (тип узла, называемый целевой страницей). В макете типа блока у меня есть представление, в котором перечислены некоторые абзацы, добавленные к этому конкретному блоку. В представлении перечислены мои абзацы, но перечислены все абзацы этого типа. Если я добавлю контекстный фильтр для идентификатора родителя в представление и установлю его как фиксированный со значением, являющимся идентификатором блока блока, который я разместил на своей домашней странице; затем он фильтрует только те, которые добавлены в этот блок. Идеальный.
Тогда вопрос; как динамически установить этот контекстный фильтр?
Я могу думать о 2 подходах:
- Создайте подключаемый модуль контекстного фильтра, который передает BlockID.
- Передайте BlockID из макета в представление.
Некоторое время назад я просмотрел вариант 2 и обнаружил, что выполняется некоторая работа, позволяющая передавать аргументы обратно из LB; но он поддерживал только статические значения (в отличие от токенов).
Вариант 1 кажется довольно простым, и я его настроил. Для начала я просто возвращаю значение статического идентификатора, и это работает, как и ожидалось.
Недостающая часть здесь заключается в том, как получить список блоков (определенного типа), которые размещены на определенном узле?
Я попытался сделать это с представлением, и я могу получить список идентификаторов блоков всех блоков этого типа; но не вижу, как отфильтровать тот, который используется на конкретном узле.
Если на сайте когда-либо будет использоваться только 1 экземпляр этого блока; тогда я могу использовать свое существующее представление (в котором указан единственный блок этого типа). Меня не беспокоит наличие нескольких версий этого блока на одной странице; но я пытаюсь учесть, что с этим блоком может быть несколько страниц.