domingo, 14 de noviembre de 2010

Agregar campos en el formulario de registro joomla 1.5x

Hace poco tuve la necesidad de agregar más campos un formulario de registro para nuestro joomla 1.5x, entonces como buen investigador me di en la búsqueda de aquella valiosa información y lograr minimizar los costos de mi cliente.

Pues bien, lo que encontré es que se puede hacer mediante un componente que se llama Community Builder, pero a mi modo de ver es un componente muy extenso para solo añadir un par de campos nuevos en nuestro formulario de registro, sin embargo también es una salida.

La solución que vi más viable fue modificar nuestras tablas en la base de datos y en un par de archivos de nuestro gestor de contenidos gracias a un foro que encontré en internet ( http://www.joomlaspanish.org/foros/showthread.php?t=31225 ):


" Hola a todos:
hace unos días tuve que añadir unos cuantos campos al registro de usuarios en Joomla 1.5.7 y tras buscar en el foro vi que no estaba bien documentado para esta versión, pero si para Joomla 1.0.xx.

Despues de navegar un poco por la red encontré como hacerlo y de paso lo he traducido para ponerlo a disposición de quien lo necesite.

Saludos!

Advertencia: El siguiente ejemplo implica modificar el código del núcleo de Joomla. Esto conlleva una serie de riesgos si se realiza mal, como la posible perdida de funcionalidad del componente de registro y la necesaria reconfiguración del sistema para poder recuperarlo. Por eso es absolutamente necesario hacer copias de seguridad de todos los archivos que editemos para poder volver a la situación original en caso de desastre.


Por supuesto, no me hago responsable de posibles fiascos, yo he realizado estos pasos uno a uno y puedo confirmar que funciona en una instalación limpia de Joomla 1.5.7 en mi servidor de pruebas
# Apache 2.0.59
# MySQL 5.0.41
# PHP 5.2.6

Dicho esto, pasamos a la acción.

La página de registro Joomla normalmente contiene suficiente información para la mayoría de sitios web. Ciertos webmaster que desean mejorar la información del usuario, por lo general, usan el component Community Builder que ampliar los campos del registro. Sin embargo, es totalmente posible crear nuevos campos del registro sin necesidad de instalar otros componentes, mediante la modificación de algunas líneas en el código del core de Joomla. Aquí te indicamos cómo hacerlo.

En este ejemplo, vamos a añadir los campos Negocio y Teléfono al formulario de registro de usuarios, sin embargo esto solo es un ejemplo y puedes modificarlo para agregar el campo que quieras

El primer paso es agregar los campos campos a la tabla de usuarios en nuestra base de datos.
Nosotros usaremos el phpMyAdmin para realizarlo, pero puedes realizarlo de otra forma si conoces como. Las siguiente consultas en SQL añaden estos campos:



ALTER TABLE jos_users ADD business VARCHAR (100) NOT NULL AFTER name;


y despues


ALTER TABLE jos_users ADD phone VARCHAR (100) NOT NULL AFTER business;



Una vez que se hayan creado las columnas, verifica que se han creado correctamente y comenzaremos a modificar código de 4 archivos de joomla

Segundo paso, modificar el archivo libraries/joomla/database /table/user.php para insertar los nuevos campos. Un avez abierto buscamos estas lineas de código


var $name = null;

      /**

      * The login name

      *

      * @var string

      */

      var $username = null;



e inmediatamente después añadimos estas dos lineas (en este caso con las variables bussiness y phone, pero ya sabes que podrás usar otras siempre que el mantengas el nombre de las variables para todas las lineas de código que agregues)


var $business = null;

    var $phone = null;



Tercer paso, modificar el código que muestra la página de registro en el archivo components/com_user/views/register/tmpl/default.php Una vez abierto el archivo buscamos el siguiente código:


<tr>

<td width="30%" height="40">

<label id="namemsg" for="name"><?php echo JText::_( 'Name' ); ?>: </label> </td>

<td>

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

</tr>



he inmediatamente despues añadimos:


<tr>

    <td width="30%" height="40">

    <label id="businessmsg" for="business"><?php echo JText::_( 'Business' ); ?>: </label> </td>

    <td>

    <input type="text" name="business" id="business" size="40" value="<?php echo $this->user->get( 'business' );?>" class="inputbox required" maxlength="50" /> * </td>

    </tr>

    <tr>

    <td width="30%" height="40">

    <label id="phonemsg" for="phone"><?php echo JText::_( 'Phone' ); ?>: </label> </td>

    <td>

    <input type="text" name="phone" id="phone" size="40" value="<?php echo $this->user->get( 'phone' );?>" class="inputbox required" maxlength="50" /> * </td>

    </tr>




Cuarto paso, modificamos ahora el archivo components/com_user/views/user/tmpl/form.php, que es el que muestra los campos a rellenar por el usuario al registrarse, buscamos el siguiente código:



<tr>

      <td width="120">

      <label for="name">

      <?php echo JText::_( 'Your Name' ); ?>:

      </label>

      </td>

      <td>

      <input class="inputbox" type="text" id="name" name="name" value="<?php echo $this->user->get('name');?>" size="40" />

      </td>

      </tr>

      <tr>



e inmediatamente despues añadimos:


<td width="120">

    <label for="business">

    <?php echo JText::_( 'Business' ); ?>:

    </label>

    </td>

    <td>

    <input class="inputbox" type="text" id="business" name="business" value="<?php echo $this->user->get('business');?>" size="40" />

    </td>

    </tr>

    <tr>

    <td width="120">

    <label for="phone">

    <?php echo JText::_( 'Phone' ); ?>:

    </label>

    </td>

    <td>

    <input class="inputbox" type="text" id="phone" name="phone" value="<?php echo $this->user->get('phone');?>" size="40" />

    </td>

    </tr>



Quinto paso, ahora vamos a modificar la página que muestra los datos del usuario en el backend, editando el archivo: administrator\components\com_users\views\user\tmpl \form.php en el cual buscamos el siguiente código:


<tr>

                    <td class="key">

                        <label for="email">

                            <?php echo JText::_( 'Email' ); ?>

                        </label>

                    </td>

                    <td>

                        <input class="inputbox" type="text" name="email" id="email" size="40" value="<?php echo $this->user->get('email'); ?>" />

                    </td>

                </tr>



e inmediatamente despues añadimos este otro código:




<tr>

                    <td class="key">

                        <label for="business">

                            <?php echo JText::_( 'Business' ); ?>

                        </label>

                    </td>

                    <td>

                        <input class="inputbox" type="text" name="business" id="business" size="40" value="<?php echo $this->user->get('business'); ?>" />

                    </td>

                </tr>

                <tr>

                    <td class="key">

                        <label for="phone">

                            <?php echo JText::_( 'Tel' ); ?>

                        </label>

                    </td>

                    <td>

                        <input class="inputbox" type="text" name="phone" id="phone" size="40" value="<?php echo $this->user->get('phone'); ?>" />

                    </td>

                </tr>



Eso es todo, para que funcione correctamente, aunque nos falta un pequeño detalle, tanto en la administración como en la página de registro nos salen las etiquetas Business y Phone, por lo que tendremos que acudir a los archivos de idioma para ponerlo en el idioma de Cervantes, Rosalia de Castro, Ausiàs March o el que corresponda...
En mi caso y asta que saquemos la versión andaluza de Joomla, acudo al archivo languages/es-ES/es-ES.com_user.ini y añado estas dos lineas (aquí donde lo coloques es indistinto...)

PHONE=Teléfono
BUSINESS=Negocio

Con lo que en la parte pública ya estaría traducido, después accedemos a

administrator/languages/es-ES/es-ES.com_user.ini y repetimos la acción, así ya tendremos en nuestro idioma tanto la parte pública como la administración


Ahora tienes un par de campos adicionales en la tabla de usuarios, y más información disponible para su uso.

Asegrate de tener copias de seguridad antes de hacer este cambio!

Espero que te sea útil y solo me queda darle las gracias al usuario de joomla.org jtullous por ponerme en el camino para hacerlo y a usuarios de otros foros que me ayudaron a resolver un pequeño problema de sintaxis en la consultas a MySQL

Espero que os sea útil"


A mi me funcionó perfectamente, aunque no son campos requeridos, para esto hay que estudiar más o pagarle al ingeniero. Te recomiendo que hagas los pasos al pie de la letra porque hay cosas que parecen obvias pero al final la terminamos liando. Ahh y obviamente si tienes dudas o comentarios lo puedes hacer en el foro de donde saqué la info: http://www.joomlaspanish.org/foros/showthread.php?t=31225

Como siempre, si te sirvió o gustó no seas desagradecido enlaza el blog ;)

No hay comentarios:

Publicar un comentario