Nombre real en el email de registro

Normalmente, en el proceso de registro con Drupal, el usuario recibe un email que se refiere a él usando su nombre de usuario.

Si entra a admin/user/settings puede ver que existen ciertos tokens propios, entre los que esta !username.

¿Y si se desea mostrar el nombre real? Por ejemplo, Antonio Kobashikawa, en lugar de akobashikawa.

Una forma es usando hook_mail_alter(). Por ejemplo:

// Custom email registration message
function misc_mail_alter(&$message) {
  // http://drupal.org/files/issues/realname_token_system_mail_notifications.patch
  $midparts = explode('_', $message['id'], 2);
  if ($midparts[0] == 'user' || $midparts[0] == 'logintoboggan') {
    switch ($midparts[1]) {
      case 'register_no_approval_required':
        $realname = trim($_POST['field_profile_nombres'][0]['value']) . " " . trim($_POST['field_profile_apellidos'][0]['value']);
        $message['subject'] = str_replace('!realname', $realname, $message['subject']);
        $message['body'][0] = str_replace('!realname', $realname, $message['body'][0]);
        break;
      case 'register_admin_created':
      case 'register_pending_approval':
      case 'password_reset':
      case 'status_blocked':
      case 'status_activated':
      case 'status_deleted':
      case 'logintoboggan_resend_validation':
        $account = user_load(array('mail' => $message['to']));
        if ($account) {
          $realname = isset($account->realname) ? $account->realname : realname_make_name($account);
        } else {
          $realname = $message['params']['account']->name;
        }
        $message['subject'] = str_replace('!realname', $realname, $message['subject']);
        $message['body'][0] = str_replace('!realname', $realname, $message['body'][0]);
        break;
    }// switch
  }// if
}

De ese modo, estará disponible también el token !realname.

Los ids se pueden encontrar en _user_mail_text() de modules/user/user.module.

field_profile_nombres y field_profile_apellidos son los nombres de los campos que definí en el tipo de contenido profile, que asocio al registro usando el módulo content_profile.

realname_make_name() es una función de realname, que es un módulo que ayuda a que el nombre real sea mostrado al ver la cuenta del usuario.

Referencias

Comentarios

Entradas populares de este blog

Debug con Xdebug y Aptana (y Notepad++)

Drupal sí, drupal no

CSS3 para mejorar el breadcrumb de un tema Zen