Кажется, что невозможно использовать только 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 Надеюсь, мой обновленный ответ кому-нибудь поможет.