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!