пакетное создание пользователей?
У меня есть список excel из 600 пользователей с именем, электронной почтой и ролью, которые мне нужно добавить на сайт drupal, который я создаю.
Существует 2 роли, распределенные между пользователями.
В качестве дополнительного усложнения сайт использует модуль профиля контента, поэтому было бы очень полезно, если бы для каждой новой учетной записи пользователя автоматически создавался соответствующий узел профиля.
Есть идеи, как пакетно создавать новых пользователей?
2 ответа:
Как насчет модуля user_import ?
У меня было то же самое, и я создал модуль для этого. В основном, он читает пользователя и какую роль получить из файла; в моем случае это был CSV-файл с emailadres, именем, ролью и всем необходимым для профиля контента.
Допустим, вам нужен пользователь x@mail.com и автоматически заполняйте его имя профиля контента, имя пользователя и город или что-то в этом роде.
В вашем модуле:
Прочитайте строку из файла создание нового пользователя создайте новый узел, (stdClass object, дайте ему правильный введите ('profile_data' или каков бы ни был ваш тип профиля контента) и заполните оставшуюся часть узла yout и сохраните.
Пример:
<?php //create a form with a button to read the CSV file function bulk_users_submit() { $users = 0; $handle = fopen(drupal_get_path('module', 'bulk_users') .'/'.DATAFILE, "r"); if (!$handle) { return $users; } while (($data = fgetcsv($handle)) !== FALSE) { //this is similar to what the users.module does if (bulk_users_create_user($data)) { $users++; bulk_users_create_profile($data); } } fclose($handle); return $users; } function bulk_users_create_profile($user, $data) { $node = new stdClass(); $node->title = t('First and Last Name'); $node->body = ""; $node->type = 'first_and_last_name'; $node->created = time(); $node->changed = $node->created; $node->status = 1; $node->promote = 0; $node->sticky = 0; $node->format = 0; $node->uid = $data['uid']; $node->language = 'en'; $node->field_firstname[0]['value'] = $data['firstname']; $node->field_lastname[0]['value'] = $data['lastname']; node_save($node); } ?>
Не проверено, но идея ясна, я надеюсь.