Кажется, что невозможно использовать только Drupal, что означает:
variable_set()Сам по себе не вызывает никаких хуков, но использует db_merge(). Эта функция использует MergeQueryкласс. Теперь было бы неплохо подключиться hook_query_alter(), но это работает только для классов запросов, которые реализуют QueryAlterableInterfaceинтерфейс. К сожалению, этот интерфейс теперь реализован только с помощью SelectQueryи в SelectQueryExtenderклассах, а не в MergeQueryклассе.
Обратите внимание, что даже если вы найдете способ создать дочерний класс MergeQuery, который реализует QueryAlterableInterfaceи заставит его использовать Drupal. hook_query_alter()работает только с запросами, которые имеют теги, и variable_set()не помечает его запрос, поэтому ловушка не будет использоваться в любом случае, если вы не захотите взломать ядро. Но если вам это нужно, вам не нужно все это, вы можете просто взломать вызов.
Если вы чувствуете хардкор, вы можете использовать более косвенный подход PHP: $confэто глобальный массив переменных конфигурации; Вы можете написать модуль, который заменит его объектом, действующим как массив, как описано в Переполнении стека . Чтобы сделать его хорошей заменой, вам нужно реализовать ArrayAccess. Вытащите все значения из оригинала $confв ваш объект. Затем ArrayAccess::offsetSet()внедрите свою логику регистрации.
$confсвоем старом ответе и уже нашел, как сделать с ним что- то еще: D Надеюсь, мой обновленный ответ кому-нибудь поможет.