Drupal-仅电子邮件登录

时间:2020-03-05 15:25:34  来源:igfitidea点击:

我们有时会想限制用户只使用他们的电子邮件地址而不是用户名注册/登录。
如果我们只是想让登录使用两者,那么我们可以检查logintoboggan或者电子邮件注册。

我想你会有一些名字字段在登记表。

更改注册表:

function HOOK_form_alter(&$form, &$form_state, $form_id) {
  if ("user_register_form" == $form_id) {
    $form['account']['name']['#access'] =  FALSE; //hide username field
    $form['account']['name']['#required'] =  FALSE;
    $form['#validate'][] = 'HOOK_user_register_validate';
  }
}
function HOOK_user_register_validate($form, &$form_state) {
  $form_state['values']['name'] = isset($form_state['values']['mail']) ? $form_state['values']['mail'] : '' ;
}

站点范围用户名调整:

上面的代码将允许我们在用户名字段中保存电子邮件地址。
然后,我们必须使Drupal呈现firstname,而不是username(现在是电子邮件地址)。
为此,请使用hook_username_alter(),

function HOOK_username_alter(&$name, $account) {
  //load the full user object, since $account not always provide all informations
  $user = user_load($account->uid);
  if (!empty($user->field_first_name)) {
    //get firstname value, mutilanguage support
    $firstname = field_get_items('user', $user, 'field_first_name');
    if ($firstname) {
      $name = $firstname[0]['value'];
    }
  }
}

现在你的将显示所有地方的名字,而不是电子邮件地址和用户永远不会知道用户名的存在。