Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Программно создать пользователя

Программно создать пользователя
, by

Здравствуйте, Иван!

 

Читаю Ваш сайт и смотрю видеоуроки с большой пользой для себя. Решил к Вам обратиться за консультацией. Я создаю программно пользователя на сайте drupal 7 и сразу же делаю логин. В базе пользователей вся информация появляется надлежащим образом. Видно, что пользователь создался и логин выполнился. НО! Не происходит перехода на следующую страницу, где написано Моя учетная запись и пр. Не исчезает форма входа. Если логинится с только что созданным логином с помощью стандартной формы – все работает. Я пытался на jqueryформу создать, подобную стандартной с ее actionи всем остальным. Но это не привело ни к каким положительным результатам.

Что я не делаю? Может быть Вы сможете посоветовать?

1 answer
votes: 1020
Answer

Здравствуйте, используйте модуль ajax_login или что-нибудь подобное. Подгрузите стандартную друпаловскую форму и через нее создавайте. Посмотрите на api.drupal.org функции, там наверняка должны быть функция user_save и хуки hook_user_insert.

Вот здесь как программно создать пользователя:

//This will generate a random password, you could set your own here
  $password = user_password(8);
 
  //set up the user fields
  $fields = array(
    'name' => 'user_name',
    'mail' => 'user_name@example.com',
    'pass' => $password,
    'status' => 1,
    'init' => 'email address',
    'roles' => array(
      DRUPAL_AUTHENTICATED_RID => 'authenticated user',
    ),
  );
 
  //the first parameter is left blank so a new user is created
  $account = user_save('', $fields);
 
  // If you want to send the welcome email, use the following code
 
  // Manually set the password so it appears in the e-mail.
  $account->password = $fields['pass'];
 
  // Send the e-mail through the user module.
  drupal_mail('user', 'register_no_approval_required', $email, NULL, array('account' => $account), variable_get('site_mail', 'noreply@example..com'));