Joomla - Añadir mas campos al registro de usuario

Buenas, veamos como podemos añadir facilmente más campos al registro de un usuario sin necesidad de ningun tipo de extensión.


En esté ejemplo yo añadire el campo Empresa.

Bueno, lo primero es añadir los campos en la base de datos.

Vas a la tabla jos_users y añades los campos necesarios, en mi caso añado empresa.

Lo segundo es editar el formulario de registro para añadir los campos que queramos.

Esté es el archivo del formulario /components/com_user/views/register/tmpl/default.php . Lo editamos con cualquier procesador de texto, por ejemplo el bloc de notas.

Si sabemos de HTML os sera muy facil editarlo.

Para el que no:

Lo que hay entre <tr> </tr> es una fila del formulario, es decir, el texto descriptivo y el campo blanco para escribir.

Pues nos copiamos uno, por ejemplo el del usuario:


<label id="usernamemsg" for="username">
Username:
</label>

<input id="username" name="username" value="" type="text" style="font-size: 40px;">escape($this->user->get( 'username' ));?>" class="inputbox required validate-username" maxlength="25" /> *


Ese lo volvemos a pegar debajo y procederemos a editarlo.

Yo cambiaria todos los "username" por "empresa" y quitaria del atributo class "validate-username"

Me quedaría así:

<label id="empresamsg" for="empresa">
Empresa:
</label>


<input id="empresa" name="empresa" size="40" value="" type="text">escape($this->user->get( 'empresa' ));?>" class="inputbox required" maxlength="25" /> *


Guardamos los cambios y podriamos probar la página para ver los resultados.

Este formulario usa un objeto JTABLE de joomla que carga los datos del form sobre la tabla , es decir, en ningun momento ese componente usa SQL puro.

Así que tenemos que añadirle la propiedad "empresa" ¿Como? Pues , buscamos el archivo /libraries/joomla/database/table/user.php y lo editamos con el bloc de notas.

Simplemente tenemos que añadir la declaracion de la variable.

Cogiendo por ejemplo de nuevo el username existe este texto en el archivo


/**
* The login name
*
* @var string
*/
var $username = null;


pues tendriamos que añadir, (yo no le pondre comentarios)

var $empresa = null;


Importante: Está variable tiene que llamarse exactamente igual que el nombre del campo de la base de datos.

Guardamos y listo! A probarlo!

You liked this post? Subscribe via RSS feed and get daily updates.

4 comentarios:

  1. Hola!
    Me ha salido perfectamente. Tuve alguna duda de como añadir una tabla ya que no tengo ni idea de DB, pero el resto perfecto.
    La duda es la siguiente: ¿Dónde puedo ver los datos de los registrados de los campos nuevos? He ido al gestor de usuarios pero ahí no aparecen los campos nuevos ni la información de los mismos.
    ¿Sólo se puede ver a través de las base de datos?

  2. Pues tendrías que mirar esos datos directamente en la base de datos. Para que salgan donde tu dices hay que editar esa pagina para que lea esos campos tambien.

  3. todo ok pero tengo este siguiente error cuando cierro session

    Fatal error: Call to a member function get() on a non-object in C:\xampp\htdocs\..\templates\ja_purity\html\mod_login\default.php on line 10

    es donde puse dos asteriscos

    get('name')) : {
    echo JText::sprintf( 'HINAME', $user->get('name') );
    } else : {
    ** echo JText::sprintf( 'HINAME', $user->get('username') );
    } endif; ?>

    algo pasa con params y no se q es, si comento esa linea , no sale el error.

    gracias arielganc@yahoo.com.ar

  4. esto sirve para joomla 2.5?

Publicar un comentario en la entrada