Diego Di Camillo

Base de tips para problemas comunes de los desarrolladores.



Agregar campos personalizados en el form de registracion de Joomla 1.5

31Oct09

Si tenes instalado joomla 1.5 y queres agregar campos a los que ya trae joomla en la pantalla de registracion de usuarios y luego la posibilidad de editarlo, debes realizar lo siguiente:

1) Editar el archivo vista del form de registración, esta ubicado en /components/com_user/views/register/tmpl/default.php

2)Agrega en el Las etiquetas y campos segun necesites asi :


	
		
	
	
		 *
	

Nota cual es el required, y notar que la etiqueta se coloca con el objeto Jtext y la misma debe estar definida en el archivo es-ES.com_user.ini del subdirectorio /language/es-ES

3) Ahora agregamos los campos en la tabla jos_user que almacena los datos del usuario. La puedes editar usando phpMyAdmin desde el panel del hosting.

4) Ahora edita el archivo /components/com_user/views/user/tmpl/form.php

y agrega los mismo campos pero en cada uno de ellos debes agregar el value recuperandolo de la base de datos, ejemplo:


	
		
	
	
		 
	

5) Ahora en el Object User y User_table registramos los atributos nuevos y los dejamos listos para que se guarden:

5.1) Abrimos /libraries/joomla/database/table/user.php

y en la declaracion de parametros agregamos los que necesitamos:

 /**
	* Parametros customizados 
	*/
	var $apellidos			= null;
	......
         ......

Lo guardamos y listo con el objeto JTableUser, ahora nos resta modificar el JUser, para esto, solo editamos el archivo
/libraries/joomla/user/user.php

y agregamos los parametros como antes :

 /**
	* Parametros customizados 
	*/
	var $apellidos			= null;
	......
         ......

Y ademas en la funcion bind ( function bind(& $array) ) agregamos las siguientes lineas por cada parametro:


/**seteo los nuevos parametros para almacenarlos en la base **/
$apellidos = $array[ 'apellidos' ];
$this->setParam('apellidos', $apellidos);
$this->apellidos = $apellidos;

.........
.........

Lo grabamos y TODO LISTO!!

NOTA: debemos tener cuidado de colocar en la base de datos los mismo nombres para las columnas nuevas que los nombres de los nuevos atributos en el objeto JUser y JTableUser.

Archivado en: Joomla!   |  23 Comentarios

23 comentarios a “Agregar campos personalizados en el form de registracion de Joomla 1.5”  

Feed de este artículo URI para Trackbacks
  1. 1 daniel en Ene 12th, 2010 dijo:

    Hola…sabes como se pueden cambiar los labels de los input del formulario de contacto ?? . Saludos

  2. 2 ddicami en Ene 13th, 2010 dijo:

    Hola, para gestionar las etiquetas Joomla utiliza la clase JText para poder cambiar los idiomas, asique en el codigo no hagas nada, simplemente determina cual es la clave del texto y busca dentro del archivo de idioma /joomla/language/es-ES/es-ES.com_contact.ini

  3. 3 Danierl Dominguez en Abr 6th, 2010 dijo:

    Excelente tutorial desde hace bastante intentaba hacerlo, otros tutoriales no me llevaron ni cerca, excelente de verdad en menos de 5min ya tenia mis campos personalizados, yo lo hice solo para el admin no q se mostrarn en el front end felicitaciones seguire de cerca este blog

  4. 4 ddicami en Abr 6th, 2010 dijo:

    Excelente !! me algra que te haya servido la información

  5. 5 Danierl Dominguez en Abr 12th, 2010 dijo:

    Este tutorial es lo mejor que me he conseguido, no sabes las cosas que me ha solucionado, oye me encantaria saber si pestas algun servicio de coaching, estoy desarrollando un componente para un proyecto y algunas veces me tranco y es dificil conseguir buena asesoria, en mi pais me atrevo a decir q hay muy pocos expertos, la verdad no he conseguido ninguno, oye si pfrecieras este servicio de asesoria seria genial gracias, me gustaria comunicarme contigo a traves de algun medio Gracias TOTALES 😀

  6. 6 ddicami en Abr 12th, 2010 dijo:

    Genial!
    Bueno, soy un desarrollador que me gusta analizar de cerca el código y la arquitectura de los sistemas Joomla! y WordPress. Me encantaría asesorarte, pero lamentablemte, dispongo de muy poco tiempo libre para ello. Sin embargo, a través del blog, intento devolver un poco a mis colegas lo que en algún momento me dieron.
    Siguelo de cerca, aquí vuelco todas mis experiencias.

  7. 7 Danierl Dominguez en Abr 15th, 2010 dijo:

    Hola Amigo, tengo un problema, se que lo resolvi en algun lado pero sabes como es uno que resuelve cosas y por no anotar se le olvida, mi problema es que quiero validar que en el registro de joomla el nombre del usuario no tenga espacios, porque es un verdadero problema, como puedo hacer esto, gracias

  8. 8 ddicami en Abr 19th, 2010 dijo:

    Hola si lo que querés es solo validar que un campo se rellene sin espacios en blancos puedes usar Javascript al submit del form o al clic del boton de enviar. Por ejemplo:

    function validar(){
    valor = document.getElementById(«campo»).value;
    if( valor == null || valor.length == 0 ) {
    alert(‘El campo es obligatorio debe rellenarlo’);
    return false;
    }
    if( /[^\s]+/.test(valor) ) {
    alert(‘El campo debe contener datos alpha numericos, sin espacios en blanco’);
    return false;
    }

    return true;
    }

    y en tu formulario en el boton de enviar le colocas esto:

    Haber si te sirve o te inspira, al menos.
    Suerte !!!

  9. 9 Daniel Dominguez en Abr 21st, 2010 dijo:

    Gracias por tu respuesta amigo pero la solucion era mas sencilla, jejej, luego la encontre, te la explico a ver a alguien le sirve.

    En el archivo validate.js, que se encuentra en /media/system/js.
    deben cambiar lo siguiente

    this.setHandler(‘username’,
    function (value) {
    regex = new RegExp(«[\|\»|\’|\%|\;|\(|\)|\&]», «i»);
    return !regex.test(value);
    }
    );

    Por esto

    // Default handlers
    this.setHandler(‘username’,
    function (value) {
    //regex = new RegExp(«[\|\»|\’|\%|\;|\(|\)|\&]», «i»);
    regex=/^[A-Za-z0-9][A-Za-z0-9]*$/;
    return regex.test(value);
    }
    );

    solo cambie el regex con eso el registro no permite espacios en el username.

  10. 10 Daniel Dominguez en Abr 21st, 2010 dijo:

    Amigo tengo un problemita, estoy desarrollando un componete, pero fijate tengo un enlace que al presionarlo debe crear (usando ajax) un combo segun el link presionado, no se si me estoy enrollando pero creo que el componente deberia llamar a una funcion que esta dentro del model, lo que no logro es como hacerlo, si sabes de una manera mas facil te lo agradeceria mucho..

  11. 11 ddicami en Abr 21st, 2010 dijo:

    Genial!! lo validas con una regex permitiendo solo alphanumericos mayusc y minusculas.
    Con esta regex regex=/[^\s]+/ permites cualquier simbolo excepto el espacio en blanco.

    Gracias por el aporte!!

  12. 12 ddicami en Abr 21st, 2010 dijo:

    Pues utiliza el model para realizar tu consulta a la base de datos. Pero desde el componente consumes el metodo que implementes en el modelo. En él obtienes los datos y formas los options del select:

    
    .....
    

    Y esto se inyecta en el dropdown.

    Para realizar lo que dices en ajax, debes colocar un evento onClic en cada link y en cada uno de ellos una funcion que atienda ese evento como loadSelect(tipo) donde tipo deberia ser un parametro para indicar que datos cargar en el dropdown. PE: loadSelect(‘clientes’) o loadSelect(‘proveedores’) …..
    en la funcion loadSelect defines el objeto ajax, y en el parametro url del objeto le pasas la direccion url del componente donde se realiza la consulta segun el parametro que especifques.

    Espero te sirva.
    Un saludo

  13. 13 Daniel Dominguez en Abr 21st, 2010 dijo:

    Gracias amigo, no me quedo muy claro, es decir por ejemplo yo tengo un metodo en el model que se llama getSorteos(idLoteria); este idloteria seria el que me da el link cuando se ejecute la funcion click, ahora el tema es como llamo a ese metodo getloteria, mas bien como le paso el idloteria, no se si me explico, con respecto al regex voy a probar ese Gracias por tu tan pronta respuesta

  14. 14 ddicami en Abr 21st, 2010 dijo:

    Bueno, en el enlace debes poner onClick=»getSorteos(1)» por ejemplo para el enlace 1 o onClick=»getSorteos(2)» por ejemplo para el enlace 2
    En el docuemto HTML debes definir una funcion js, por ejemplo usando prototype.js que es un framework excelente.

    
    

    En el componente el i del sorteo lo obtienes por $_GET
    Asi :

    //codigo del componente
    $i = $_GET['i'];
    $sorteos = modelo::getSorteos($i);
    foreach($sorteos as $idsorteo => $sorteo){$out .= '';} echo $out; }
    
  15. 15 Daniel Dominguez en Abr 21st, 2010 dijo:

    Amigo disculpa que te moleste tanto lo que no entiendo es
    como pasarle la url del componente

    var url = ‘url a tu metodo del componente que hace la consulta a la bd.php’;
    var params = ‘i=’+i; //este es el i que debes capturar en el componente por $_GET[‘i’]

    cuando me dices url a tu metodo como lo hago suponte q el componete se llama com_sorteos

    que debo pasar alli, el codigo q me pasaste asi lo tengo el rollo es la bendita url 🙁

    De verdad muchas Gracias

  16. 16 ddicami en Abr 21st, 2010 dijo:

    Prueba algo del tipo:

    url = ‘/index.php’;
    params = ‘option=com_sorteos&i=’+i;

  17. 17 Daniel Dominguez en Abr 21st, 2010 dijo:

    Sabes que hago eso y me trae toda la pagina, 🙁 creo q tendre que crear unos archivos .php que me realizen las consultas sin la intervencion del api de joomla, me estoy rindiendo 🙁

  18. 18 Daniel Dominguez en Abr 27th, 2010 dijo:

    Hola Amigo queria que supieras que ya logre hacer lo que queria, luego lo posteo con calma porsi alguien necesita usar ajax dentro de un componente, te cuento el componente me esta quedando fantastico(todavia me falta mucho en la parte de diseño) pero en funcionamiento esta haciendo lo que se necesita, la verdad es que estoy enamorado de joomla, ya con esto creo que lo estoy dominando bastante, Gracias Mil por tu ayuda y espero poder ayudarte tambien en alguna oportunidad

  19. 19 ddicami en Abr 28th, 2010 dijo:

    Hola!!!
    Me alegra mucho que mi aporte te pueda servir y que podamos crear extensiones para este maravilloso cms.
    Te invito a que te hagas usuario de mi blog, es totalmente libre y desinteresado, solo aporta info para todos los que estamos en esto!

    http://www.diegodicamillo.com.ar/blog/wp-login.php?action=register

  20. 20 Sara en Ene 19th, 2011 dijo:

    Hola, he seguido los pasos que puesiste, y me surgio otra duda. Al escribir los datos del registro, se verifican el mail y las contraseñas al momento (si lo escribes mal se pone en rojo) pero no el nombre y el nombre de usuario. Como puedo hacer que estos tambien los verifique?

    El problema es que si escribo un nombre o user de 1 caracter, al hacer submit me comprueba que no sea menos que 2 y me va a otra pagina que es modificar y no quiero que haga eso. Quiero que no me valide el tamaño del nombre y del user, o que en su defecto me los copruebe sin tener que hacer submit.

    Un saludo

  21. 21 Esnola en Abr 11th, 2011 dijo:

    Este está de lujo, pero aún le falta algo.
    Cuando vas a actualizar desde el Backend no actualizas las tablas que as creado solo actualizas los datos en params.
    Me explico: (campo personalizado y tabla de BD = DNI)
    Se ha creado un usuario con un DNI = 45679899.
    Va a cambiar en el Control de usuarios este DNI y en la tabla de la BD DNI no se reflejan los cambios.
    Estoy buscando una solución pero no la encuentro.

    Si alguien la tiene le agradecería.

    Un saludo

  22. 22 Esnola en Abr 11th, 2011 dijo:

    Si quieres además controlar los valores de esos campos desde el backend, es decir editarlos.

    administrator/components/com_users/views/user/tmpl/form.php

    donde te venga bien pones(sustituyendo «dni» por tus valores)

    DNI

    <input class="inputbox" type="text" name="dni" id="dni" size="12" value="user->get(‘dni’); ?>» />

  23. 23 Hugo Mora en Dic 14th, 2011 dijo:

    Gracias por el tutorial. Los voy a probar.

Enviando tu Comentario
Por favor espera

Deja una respuesta

Hubo un error con tu comentario, por favor intenta de nuevo.



Comparte este artículo

  • Menéame  Menéalo
  • del.icio.us  Enviar a Del.icio.us
  • Mi Yahoo!  Agregar a Mi Web 2.0
  • Furl  Guardar en Furl
 


wordpressk2openswitchyukei.netfeedwordpress