У меня было то же самое, и я создал модуль для этого.
По сути, он читает пользователя и какую роль получить из файла; в моем случае это был CSV-файл с адресами электронной почты, именем, ролью и другими материалами, необходимыми для профиля контента.
Допустим, вы хотите, чтобы пользователь x@mail.com автоматически заполнил данные его профиля контента: Имя, Фамилия и Город или что-то еще.
В вашем модуле:
прочитать строку из файла
создать нового пользователя
создайте новый узел (объект stdClass, присвойте ему правильный тип ('profile_data' или любой другой тип вашего профиля контента), заполните оставшуюся часть узла и сохраните.
Образец:
<?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);
}
?>
не проверено, но идея ясна, я надеюсь.