Как выполнить пользовательский код при регистрации пользователя
Вопрос
Мне нужно делать запрос отдыха каждый раз, когда подписывает новый пользователь.
Запрос для отдыха возвращает некоторые данные, которые мне нужно сохранить для учетной записи пользователя Drupal, и иметь возможность представить где -нибудь контент.
Какой лучший/чистый способ сделать это?
Решение
Вы можете сделать это в простом пользовательский модуль, обязательно сначала Понять систему Drupal Hooks так как это основание для (почти) всего Drupal.
В вашем модуле вы можете реализовать hook_user_presave()
быть вызванным до сохранения учетной записи пользователя. Он будет вызван как для создания, так и для обновления, поэтому вам нужно будет охранять свой код с условием для обнаружения нового пользователя. После остального вызова есть несколько вариантов хранения возвращенных данных. Самым простым является использование атрибута данных учетной записи пользователя. Это простой массив PHP, который будет сериализован в столбцах базы данных. Это не очень хорошо выполнять и не очень гибко (вы можете запросить хранимые данные), но это легко.
function MODULE_user_presave(&$edit, $account, $category) {
// Accoding to user_save's documentation, this is a new user if
// $account->is_new is set to TRUE or if $account->uid is not set
if ($category == 'account' && (!empty($account->is_new) || !isset($account->uid)))) {
$edit['data']['MODULE'] = MODULE_get_data_from_rest($account);
}
}
Другие советы
Доступна основная функция в Drupal 7, которая может запустить конкретное действие, если пользователь создан и т. Д. Вам не нужно кодировать, чтобы достичь этого:
- Включить модуль Триггеры
- Перейти к Конфигурация >> Действия и создать действие, доступное в раскрывающемся списке
- Перейти к Структура >> Триггеры, нажми на Пользователь вкладка и назначьте действие, которое вы создали некоторое время назад Триггер: после создания новой учетной записи пользователя
А Правила или же Рабочий процесс Модули могут быть тем, что вы ищете.