¿Cómo modificar la pantalla de registro en Drupal?

Esta entrada del blog, la escribo porque fué algo que surgió en el trabajo y al buscar información en la red casi no conseguí­ por lo que decidí­ colocar esto en mi blog. Además, también mostraré como agregar campos nuevos que se incluyen a cada usuario mediante el módulo profile al formulario de registro.

El método a usar va a ser una moficación del tema, especí­ficamente para la página de registro de usuario (user/register), para ello utilizaremos una serie de cosas que nos provee Drupal. Lo que haremos es editar el archivo template.php que se encuentra dentro de la carpeta de nuestro tema y agregar la siguiente función:

function ELNOMBREDETUTEMA_theme($existing, $type, $theme, $path) {
  return array(
    // tell Drupal what template to use for the user register form
    'user_register' => array(
      'arguments' => array('form' => NULL),
      'template' => 'user-register', // this is the name of the template
    ),
  );
}

Recuerda cambiar ELNOMBREDETUTEMA por el nombre del tema que estas usando y que corresponde el archivo template.php, esta función lo que hará es que al entrar a la página user/register obliga a usar el template con el nombre de user-register.tpl.php. Bueno ahora lo siguiente que haremos es crear el archivo user-register.tpl.php de acuerdo a nuestras necesidades. En el caso que voy a poner aquí­ es un registro sencillo que imprime: el texto de registro, el nombre usuario, el correo electrónico a usar, un campo personalizado del módulo profile, los campos ocultos y obligatorios del formulario el boton de enviar.

<div id="registration_form">
 <?php print drupal_render($form['user_registration_help' ]); ?>
<div class="field">
    <?php print drupal_render($form['account']['name']); ?>
  </div>
<div class="field">
    <?php print drupal_render($form['account']['mail']); ?>
  </div>
<div class="field">
    <?php print drupal_render($form['category']['profile_field']); ?>
  </div>
<div class="field">
    <?php
      print drupal_render($form['form_id']);
          print drupal_render($form['form_build_id']);
      ?>
   </div>
<div class="field">
    <?php print drupal_render($form['submit']); ?>
   </div>

Ya con eso solo les falta jugar y modificar las cosas a su antojo.

6 comentarios

  1. Hola, estoy haciendo una web con drupal y he intentado seguir tu tutorial para poder modificar la página de registro.

    El tema que estoy usando es garland y me muestra la pantalla que uso como plantilla, ya que haciendo pruebas he conseguido que en vez del formulario de registro me aparezca una frase que meto yo.

    Hasta aquí bien, el problema es cuando trato de usar tu ejemplo y que me aparezcan distintos campos de registro, a partir de ese momento la página sale en blanco.

    Un saludo

  2. Que tal pana, ando aqui aprendiendo Drupal, tambien algo dle trabajo, y necesito hacer justo lo que comentas, segui tus pasos, pero no me muestra la plantilla, me muestra el mismo formulario, si, puse el nombre del theme, y puse la funcion dentro del template.php , y tambien cree el tpl del user register, con el nombre como lo pones, sabras por que no muestra la nueva modificacion y sigue mostrando el anterior?, otra cosa el archivo template.php lo tuve que crear, no lo tenia, por si te preguntas que alomejor hay otro tpl que llama ese archivo

    Saludos

  3. Y para modificar el de contact o crear uno igual al de contactenos? o crear uno desde 0 pero no con webform, porque necesito el boton limpiar y solo trae enviar.
    Gracias.

Deja un comentario