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.
Hola…sabes como se pueden cambiar los labels de los input del formulario de contacto ?? . Saludos
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
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
Excelente !! me algra que te haya servido la información
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 😀
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.
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
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 !!!
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.
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..
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!!
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
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
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 :
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
Prueba algo del tipo:
url = ‘/index.php’;
params = ‘option=com_sorteos&i=’+i;
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 🙁
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
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
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
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
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’); ?>» />
Gracias por el tutorial. Los voy a probar.