Начнем с этого:
Большинство примеров для провайдера контекста и подключаемых модулей, использующих контекст
значения работают только с одиночными значениями.
Хотя это правда, помните, что предоставляемое «единственное значение» является объектом, а не примитивным типом. В случае поставщика контекста группы это «единственное значение» является объектом Entity типа «группа». Сам объект содержит все обычные данные — идентификатор, метку, описание, дату создания, автора, базовые поля и т. д. Так что неправильно думать об этом только как об одном числе.
Чтобы предоставить массив значений, вам нужно вернуть объект, представляющий структуру данных, а не Entity. Основной API типизированных данных определяет множество типов данных, из которых тип карты, вероятно, лучше всего подходит для ваших целей.Карта содержит набор значений, похожий на знакомый ассоциативный массив в PHP.
Таким образом, схема решения состоит в том, чтобы создать свой собственный поставщик контекста, скопировав существующий поставщик контекста группы, изменить свою копию так, чтобы вместо создания определения контекста сущности вы создали определение контекста карты, а затем добавить значения, которые вы хотите предоставить в свой Карта.
Если вам нужна дополнительная функциональность, вы можете создать свой собственный тип данных (я рекомендую для этого создать подкласс Map) и предоставить объект этого типа данных вместо Entity или Map.
Вы можете найти краткий пример того, как написать свой собственный провайдер контекста здесь:
https://www.drupal.org/docs/contributed-modules/rules-essentials/for-developers/providing-global-context-variables