Joomla 1.5: desarrollo de componentes

2,354 views

Published on

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,354
On SlideShare
0
From Embeds
0
Number of Embeds
399
Actions
Shares
0
Downloads
48
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Joomla 1.5: desarrollo de componentes

  1. 1. 1/125Desarrollo de componentes, módulos y plugins Joomla 1.5
  2. 2. 2/1251. Visión global
  3. 3. 3/125 El código se estructura en 2 carpetas: back_end y front_end● Back_end – Joomlaadministrator – components – com_reviews● Front_end – Joomla – components – com_reviews
  4. 4. 4/125 ¿Qué es eso de el front_end y el back_end?● El front_end contiene el código que ejecutan los usuarios que NO son administradores del sitio web● El back_end contiene el código que ejecuta el administrador (o los administradores) del sitio web
  5. 5. 5/125 Control de flujo● En un componente se ejecuta una y otra vez el mismo fichero● En cada vez se invocan diferentes funciones● La controladora gestiona el flujo● El modelo gestiona el acceso a datos● La vista gestiona la visualización en pantalla
  6. 6. 6/125 Modificar permisos de directorio● Debemos modificar los permisos de la carpeta de nuestro sitio web para que el propio Joomla pueda escribir dentro de ella● Si accedemos en modo administrador Ayuda Permisos de directorio...
  7. 7. 7/125 Modificar permisos de directorio● Desde la shell, sobre nuestro directorio del sitio web escribimos: – sudo chmod -R 777 marudesign/● Y ahora, refrescamos la página de permisos:
  8. 8. 8/1252. Iniciación al desarrollo decomponentes
  9. 9. 9/125 Estructura del componente● Prefijo com_. Si el componente se llama reviews, las carpetas contenedoras se llamarán com_reviews● Dos carpetas contenedoras. Una para el front end y otra para el back end: – componentescom_reviews y – administratorcomponentscom_reviews● Fichero main. – El fichero principal del componente se llamará reviews.php y admin.reviews.php para el back end (El nombre coincide con el nombre del componente) – Este fichero tiene que estar ubicado justo en la carpeta del componente.
  10. 10. 10/125 Ejecutar el front end del componente● index.php?option=com_<nombre_componente> – En joomla siempre se ejecuta el fichero index.php – En el querystring, la variable option designa qué componente ejecutar – http:joomlaindex.php?option=com_reviews – Esto invocará al fichero main del componente, que en nuestro caso es componentscom_reviewsreviews.php – Cualquier cosa que pongamos en este fichero main se ejecutará
  11. 11. 11/125 Seguridad: Evitar invocación directa● Como vemos, joomla hace un routing de la página solicita, no escribimos directamente el fichero .php en la barra de direcciones● ¿Cómo evitar que un usuario escriba directamente en la barra de direcciones la ruta de nuestro fichero .php?● En la primera línea debemos escribir este código: <?php defined( _JEXEC ) or die( Restricted access ); ... ?>● De esta manera aseguramos que ha accedido vía joomla!
  12. 12. 12/125 Ejecutar el back end del componente● administrator/index.php? option=com_<nombre_componente> – En joomla siempre se ejecuta el fichero index.php – En el querystring, la variable option designa qué componente ejecutar – http:joomlaadministratorindex.php? option=com_reviews – Esto invocará al fichero main del componente, que en nuestro caso es administrator components com_reviews admin.reviews.php – Cualquier cosa que pongamos en este fichero main se ejecutará
  13. 13. 13/125 Registrar el componente● Registrar el componente implica agregar una línea a la tabla del sistema jos_components
  14. 14. 14/125 Creación de barras de herramientas● Una barra de herramientas se divide en dos ficheros: – toolbar.reviews.html.php ● Se encargará de mostrar/dibujar la barra de herramientas en formato HTML – toolbar.reviews.php ●Decide qué barra de herramientas mostrar, por si tenemos más de una● Por la simple existencia de estos ficheros, joomla asume que tenemos una barra de herramientas asociada a nuestro componente
  15. 15. 15/1253. Back-end
  16. 16. 16/125 Visión global● Creación de la tabla de datos● Creación del formulario básico de creación/edición de registros● Procesamiento de los datos e inserción en la tabla● Listado de los datos● Edición y borrado de datos
  17. 17. 17/125 Creación de la tabla de datos● Creamos la tabla en la que vamos a guardar datos – En el ejemplo será jos_reviews, donde se almacenan las opiniones de los restaurantes● Se trata simplemente de lanzar un script: – CREATE TABLE jos_reviews (...
  18. 18. 18/125 Creación de la clase tabla● Asociado a la tabla tendremos una clase que maneja los datos de esa tabla● Hereda de JTable● El fichero se tiene que llamar review.php porque aloja una única fila de la tabla● Situaremos este fichero bajo la carpeta Tables● El nombre de la clase tiene que ser TableReview● La clase contiene simplemente cada uno de los campos inicializados a null y exactamente con el mismo nombre que los campos de la tabla● Hay que crear el constructor
  19. 19. 19/125Clase de la tabla
  20. 20. 20/125 Formulario de inserción de datos● Dos ficheros: – admin.reviews.php ●Lógica del formulario – admin.reviews.html.php ● Visualización HTML del formulario
  21. 21. 21/125 Formulario de inserción de datos: lógica● fichero admin.reviews.php● En función de la variable $task, que recupera del qs, realiza una acción u otra● Para la creación de nuevos registros, $task = add● Carga el modelo: filas y las listas necesarias● Invoca a la vista con los valores cargados, en nuestro caso HTML_reviews::editReview que se aloja en el fichero admin.reviews.html.php
  22. 22. 22/125Formulario de inserción de datos: lógica
  23. 23. 23/125Formulario de inserción de datos: lógica Al final invocamos a la vista para que muestre el formulario
  24. 24. 24/125 Procesar los datos: detectar tarea save● Desde el formulario de inserción de datos se redirige a: – admin.reviews.php – option=com_reviews – task=save● En su switch, debemos invocar a la función saveReviews cuando task=save
  25. 25. 25/125 Procesar datos: recuperar y guardar datos función saveReview● Los datos del nuevo registro llegan desde un formulario● Cargamos esos datos en una nueva row● Para ello hacemos: – Creamos una instancia vacía de row – Bindeamos cada uno de sus campos a los valores que llegan en $_POST – CUIDADO: Joomla “limpia” esos campos de caracteres espúreos
  26. 26. 26/125 Procesar datos: recuperar y guardar datos función saveReview● Los datos que contienen HTML, como quicktake y review los cargamos en crudo.● Para ello hacemos:● Guardamos la fila en base de datos
  27. 27. 27/125 Procesar datos: recuperar y guardar datos funcion saveReview● Al terminar, redirigimos el navegador:
  28. 28. 28/125 Listar todos los registros: visión global● admin.reviews.php – Capturar el task=showReviews – Crear la función showReviews(), que será la lógica de la visualización● admin.reviews.html.php – Crear el formulario de visualización bajo la función showReviews()
  29. 29. 29/125 Listar todos los registros: capturar task● En admin.reviews.php
  30. 30. 30/125 Listar todos los registros: lógica● Recuperamos todos los registros● Los cargamos en $rowsw● Invocamos a la vista
  31. 31. 31/125 Listar todos los registros: visualización● Simplemente es una table que rellenamos con un for recorriendo cada uno de los elementos que hay en $rows
  32. 32. 32/125Listar todos los registros: visualización
  33. 33. 33/125 Editar un registro: visión global● 1. En admin.reviews.php capturamos task = edit e invocamos al handler● 2. Modificamos la función editReview que utilizamos para insertar para que recupere los datos del registro a editar
  34. 34. 34/125 Editar un registro: visión global● 3. En la visualización de registros, creamos un link sobre el nombre que nos lleve a la edición
  35. 35. 35/125 4. Edición de un registro: visión global● 4. Modificamos el toolbar para que muestre los botones de guardar, aplicar y cancelar cuando el task es edit
  36. 36. 36/125 Eliminar registros● 1. Capturamos el task = remove en admin.reviews.php:
  37. 37. 37/125 Eliminar registros● 2. Función handler removeReviews
  38. 38. 38/1254. Front-end
  39. 39. 39/125 Visión global● El fichero reviews.php hará de router● Se encarga de recoger el task que llega del queryString e invocar a una función handler u otra● reviews.php básicamente es un mega switch, con una entrada por cada posible task y una lista de funciones handler que gestionan la lógica de cada task● Las operaciones básicas serán: – Listar todos los registros – Ver en detalle un registro – Añadir comentarios a un registro – Ver los comentarios – Crear enlaces amigables
  40. 40. 40/125 Listar los registros● 1. Capturamos el task – En reviews.php, iniciamos el switch que recoge el task y en base al cual invoca a una función handler o a otra
  41. 41. 41/125 Listar todos los registros● 2. Función handler para el task – Ya hemos capturado el task y ya hemos invocado a la función manejadora de esta tarea. – Código de la función manejadora
  42. 42. 42/125 Listar todos los registros● 3. Vista en el fichero revies.html.php
  43. 43. 43/125Listar todos los registros: resultado Cada registro muestra su nombre y contiene un enlace para la vista en detalle
  44. 44. 44/125 Mostrar un registro en detalle● 1. Capturamos el task
  45. 45. 45/125 Mostrar un registro en detalle● 2. Función handler de task=view – Carga el registro en $row – Invoca a la vista con $row como parámetro
  46. 46. 46/125 Mostrar un registro en detalle● 3. Vista, muestra el registro que recibe por parámetro
  47. 47. 47/125Mostrar un registro en detalle: resultado
  48. 48. 48/125 Generar URLs amigables● El objetivo es generar enlaces sencillos● En lugar de esto: – http://localhost/joomla/index.php? option=com_reviews&id=1&task=view&Itemid=1● Tener esto: – http://www.dominio.com/reviews/view/1● Debemos codificar y decodificar URLs● Para ello, activamos el SEF a través del backend – SEF=Search Engine Friendly
  49. 49. 49/125 Generar URLs amigables: activar SEF● 1. Backend/site/Global configuration
  50. 50. 50/125 Generar URLs amigables: activar SEF● 2. Activar Search Engine Friendly URLs● 3. Activar también Apache mod_rewrite, conseguimos que en la URL tampoco aparezca index.php
  51. 51. 51/125 Generar URLs amigables: activar SEF● Renombrar fichero htaccess.txt por .htaccess● Este fichero se encuentra en la carpeta raíz del proyecto joomla
  52. 52. 52/125 Generar URLs amigables: activar SEF● Activar mod_rewrite en Apache2:Tecleamos lo siguiente en la línea de comandos:$ sudo a2enmod rewriteEl comando a2enmod (podría ser una abreviatura de Apache2 Enable Module) sirvepara activar módulos que se encuentren en el directorio /etc/apache2/mods-availableylos pasa al directorio /etc/apache2/mods-enabled.Ahora lo que sigue es modificar nuestro host donde queremos que aplique el rewrite, enmi caso sera para todo lo que este dentro de mi localhost, entonces me voy aldirectorio /etc/apache2/sites-enabled/ y aquí debe de haber un archivo llamado 000-default, lo abrimos con vim o nano.$ sudo vim /etc/apache2/sites-enabled/000-defaultAquí buscamos en las líneas que digan AllowOverride None y las cambiamosporAllowOverride All. Incluso podemos definir que directorios queremos que aplique esrewrite y cuales no.Por último tenemos que reiniciar Apache2:$ sudo /etc/init.d/apache2 force-reloadY eso es todo!!!
  53. 53. 53/125 Generar URLs amigables: codificar● Las tareas de codificar/decodificar URLs las realizaremos en el fichero router.php, que se aloja en la raíz del componente (y se tiene que llamar forzozamente así)● Dentro de este fichero debe haber una función que se llame <mi_componente>BuildRoute(&$query) – En nuestro ejemplo, ReviewsBuildRoute(...)● $query es un array asociativo, con la queryString parseada● Vamos eliminando de ese array las opciones que sabemos manejar con unset y vamos insertando en $segments los valores● Devolvemos $segments
  54. 54. 54/125Generar URLs amigables: codificar
  55. 55. 55/125 Generar URLs amigables: codificar● En todos los sitios en los que insertamos un link, hay que pasarlo como parámetro a la función JRoute::_● Así, en reviews.html.php, en la función showReviews, ahora tenemos:
  56. 56. 56/125 Generar URLs amigables: decodificar● En el fichero router.php, añadimos la función <nombre_componente>ParseRoute($segments) – En nuestro caso ReviewsParseReoute($segments)● Listo, ya podemos insertar URLs como – http://www.oursite.com/reviews/view/1
  57. 57. 57/1255. Módulos
  58. 58. 58/125 Visión global● Registrar el módulo● Recuperar y obtener parámetros● Centralización del acceso a datos y visualización con helpers● Utilización de layouts● Mostrar las últimas reviews● Mostrar una review al azar
  59. 59. 59/125 Registrar el módulo● INSERT INTO jos_modules (title, ordering, position, published, module, showtitle, params) VALUES (Restaurant Reviews, 1, left, 1, mod_reviews, 1, style=simplenitems=3nrandom=1);
  60. 60. 60/125 Indicar en qué páginas se debe mostrar● En el back-end, vamos a Extensions/Module manager● Pinchamos el enlace de nuestro módulo (Restaurant reviews)● En Menu assignment, marcamos All● Guardamos
  61. 61. 61/125 Creación de su estructura básica● Directorio del módulo – Joomla/modules/mod_reviews● Fichero main dentro del directorio del módulo – mod_reviews.php● Inicialmente, el código del main puede ser así:
  62. 62. 62/125 Resultado● VACÍO
  63. 63. 63/125 Mostrar los 3 últimos registrosRecuperamos los parámetros del módulo Cargamos sólo los 3 primeros registros
  64. 64. 64/125 Desarrollo de algunos Helpers y layouts● Helper: Vamos a centralizar el acceso a datos en un clase que llamaremos helper.php● renderReview: muestra una única review. Crea el link y llama al layout de una review
  65. 65. 65/125 Desarrollo de algunos Helpers y layouts● Layouts – _review.php: muestra una única review – default.php: muestra una lista de reviews – bulleted.php: muestra una lista de reviews poniéndole a cada una una viñeta – Cambiamos el main del módulo para que tome los helpers y los layouts
  66. 66. 66/125 Desarrollo de algunos Helpers y layouts● _review.php: Layout para una única review. Este layout es el que invoca renderReview, que es la función del helper que muestra una única review
  67. 67. 67/125 Desarrollo de algunos Helpers y layouts● default.php: Layout por defecto para mostrar un listado de reviews● Invoca sucesivamente a renderReview, que a su vez llamará a _review, que se encarga de mostra una sola review
  68. 68. 68/125 Desarrollo de algunos Helpers y layouts● bulleted.php: layout para mostrar un listado de reviews con una viñeta acompañando a cada una
  69. 69. 69/125 Desarrollo de algunos Helpers y layouts ● Modificamos el main del módulo, mod_reviews.php, para que use los helper y los layouts:1. Incluye el código delhelper2. Invoca al métodogetReviews del helperpara recuperar la listade registros Si no pasamos este parámetro, tomará default.php3. Incluye el código dellayout bulleted.php
  70. 70. 70/125Desarrollo de algunos Helpers y layouts: resultado
  71. 71. 71/125 Desarrollo de algunos Helpers y layouts● Podemos cambiar el módulo para que muestre un registro al azar, haciéndolo a través de los parámetros del propio módulo
  72. 72. 72/1256. Diseño MVC del proyecto
  73. 73. 73/125 Modelo: modelar una lista de reviews● Crear la carpeta models bajo components/ com_reviews● Una clase para recuperar una colección – ModelReviewsAll, Model + <nombre componente> + <nombre modelo> – Hereda de JModel – Cada clase modelo se encargará de recuperar los datos de base de datos – El fichero se llamará all.php
  74. 74. 74/125Modelo: modelar una lista de reviews
  75. 75. 75/125 Modelo: Modelar una review● Fichero review.php bajo models● Hereda de JModel● Sobreescribimos constructor para recuperar el id. Debemos invocar al constructor del padre● Tiene un objeto _db que hereda del padre para ejecutar consultas● El método getList para recuperar una review
  76. 76. 76/125Modelo: Modelar una review
  77. 77. 77/125 Vistas: Estructura de carpetas● Carpetas de las vistas – Carpeta views bajo components/com_reviews – A su vez, una subcarpeta para cada tipo de visualización, en nuestro caso, una subcarpeta all y otra review – Cada subcarpeta alojará la vista que se llamará view.html.php – Además, cada subcarpeta debe tener una nueva carpeta llamada tmpl, que alojará como mínimo la plantilla por defecto default.php
  78. 78. 78/125Vistas: Estructura de carpetas
  79. 79. 79/125 Vistas: vista para ver todas las reviews● Vista com_reviews/views/all/view.html.php● Hereda de JView● La clase se tiene que llamar ReviewViewAll● Método display: – Recupera su modelo – Invoca al método getList, para obtener los elementos necesarios – Para manipular los datos de la plantilla, utiliza el método AssignRef – Invoca al método display del padre con la plantilla deseada
  80. 80. 80/125Vistas: vista para ver todas las reviews
  81. 81. 81/125 Vistas: vista para ver todas las reviews● Template com_reviews/views/all/default.php● Se dedica simplemente a visualizar● Maneja un objeto list, que habremos de haber suministrado desde la vista (con AssignRef)● La lista es una lista de objetos review, que hemos cargado con el modelo
  82. 82. 82/125 Vistas: vista para ver una review● com_reviews/views/review/view.html.php● Hereda de Jview● Método display – Recupera el modelo – Dentro del modelo, carga el objeto para la visualización – Mediante AssignRef, carga todos los objetos que manejará su template – Invoca al método display del padre
  83. 83. 83/125Vistas: vista para ver una review
  84. 84. 84/125 Vistas: vista para ver una review● El template o layout default.php se dedicará a mostrar mediante HTML uno a uno los campos de una review● Mostramos un pequeño fragmento:
  85. 85. 85/125 Controladora● Hereda de JController● Fichero controller.php se coloca en la carpeta base del componente● Debe contener un método display, que se invocará en cuanto se ejecute la controladora● Contendrá otros métodos para realizar otras acciones● El método display... – ...recupera la vista – ...recupera el modelo – ...establece el layout – ...invoca a su vista::display()
  86. 86. 86/125Controladora
  87. 87. 87/125 Iniciar todo: Fichero main del componte● Joomla invoca al fichero reviews.php, que es el fichero main del componente● Carga una instancia de controller● Invoca el método execute con lo que haya en el queryString en task● Si no hay task, ejecuta método display● Si en task hay algo, ejecutará el método de la controladora que se llame como ese algo
  88. 88. 88/125Iniciar todo: fichero main del componente
  89. 89. 89/125 Codificar/decodificar URLs● Debemos retocar el fichero router.php para parsear y generar URLs amigables que se ajusten a este nuevo esquema● La función ReviewsBuildRoute quedaría así:
  90. 90. 90/125 Codificar/decodificar URLs● La función ReviewsParseRoute quedaría así:
  91. 91. 91/125 El módulo: corregir links● Ya sólo nos falta corregir los enlaces del módulo mod_reviews● El fichero helper.php, que crea un enlace, modificamos $link para que quede así: Actualizamos el enlace para que encaje con el nuevo esquema
  92. 92. 92/125 Resultado● Llegados a esta punto, el front-end funciona exactamente igual pero con estructura MVC
  93. 93. 93/125 Reestructuración del back-end● Creamos controller.php bajo administrator/ components/ com_reviews● Contendrá una función por cada task, de modo que desaparece el mega switch● Las funciones dejan de llamarse editReview, saveReview, removeReviews y pasan a ser edit, save, remove,...● Con registerTask, registramos las tareas o task que va a manejar esta controladora
  94. 94. 94/125Reestructuración del back-end
  95. 95. 95/125 Reestructuración del back-end Iniciar todo: Fichero main del componte● Joomla invoca al fichero admin.reviews.php, que es el fichero main del componente● Lo modificamos para que utilice la controladora● Carga la visualización● Carga la controladora● Carga las tablas● Recuperamos del queryString el task● Cambiamos el método default, para que no sea display sino showReviews● Ejecutamos el task de la controladora
  96. 96. 96/125 Reestructuración del back-endIniciar todo: fichero main del componente
  97. 97. 97/125 Paginación: en la carga de registros...● En el elemento que carga los registros... – recuperamos la variable limit – recuperamos la variable limitstart – calculamos el número total de registros – lanzamos la consulta con registro inicial y número de registros a recuperar – Creamos un objeto JPagination con total, registro inicial y número de registros a cargar – A la vista le pasamos las filas cargadas y el objeto JPagination
  98. 98. 98/125Paginación: en la carga de registros...
  99. 99. 99/125 Paginación: en la visualización...● En la vista... – Simplemente le pasamos el objeto de paginación ya configurado – Mostramos un footer en la tabla de visualización de registros que muestre los botones de paginación
  100. 100. 100/125Paginación: en la visualización...
  101. 101. 101/1257. Plug-ins
  102. 102. 102/125 Concepto de plug-in● Un plug-in es un trozo de código que se ejecuta cuando ocurre algún tipo de evento
  103. 103. 103/125Registrar un plug-in
  104. 104. 104/125 Fichero main del plugin● El fichero main del plugin debe guardarse en Joomla/ plugins/ content● Podemos ponerle el nombre que queramos al fichero● En el fichero main tendremos: – Registrar el evento que queremos capturar, con la función que se ejecutará cuando tal evento se produzca – Función que captura el evento – Funciones auxiliares
  105. 105. 105/125Ejemplo 1: actuar sobre el texto de un artículo justo antes de que salga en pantalla● Un cliente nos pide que cuando publique un artículo, o una noticia,... o cualquier contenido, que si en el texto del artículo aparece el nombre de un restaurante, automáticamente se reemplace por un hipervículo a la crítica sobre ese restaurante● Para eso, nuestra función, que se ejecuta justo antes de que salga en pantalla el artículo, buscará en su cuerpo, en su texto si coincide con el nombre de un restaurante, y fabrica el enlace a su crítica, y modifica el texto de dicho artículo en memoria para que figure con el hipervínculo automáticamente
  106. 106. 106/125 Ejemplo 2: códigos de reemplazo● En este nuevo ejemplo, el usuario quiere que si aparece el nombre de un restaurante, al final del artículo se incluya la información básica del restaurante: precio, dirección, teléfono, tarjetas admitidas,...● Para eso, el cliente tendrá que escribir donde quiera que aparezca esta “caja de información” un “comando” que será {review – nombre restaurante}● Así que, justo antes de que joomla muestre en pantalla el artículo, se ejecutará nuestra función, buscaremos mediante expresiones regulares esta llave abrir/llave cerrar con la palabra review en medio, y sustituimos ese bloque por la información básica del restaurante.
  107. 107. 107/125Ejemplo 2: códigos de reemplazo
  108. 108. 108/125 Ejemplo 3: Capturar el evento de búsqueda para añadir otros registros● Cuando un usuario utiliza el cuadro de búsqueda integrado en Joomla, el sistema sólo busca en los artículos, en las noticias,...● Si queremos que la búsqueda se realice también dentro de las reviews, debemos,... – capturar el evento de búsqueda – hacer una función que lo maneje – buscar dentro de nuestras tablas – mostrar los resultados
  109. 109. 109/125Ejemplo 3: Capturar el evento de búsqueda para añadir otros registros
  110. 110. 110/1258. Parámetros deconfiguración de extensiones
  111. 111. 111/125 Parámetros en los módulos● Creamos el fichero mod_reviews.xml justo al lado del fichero main de nuestro módulo, bajo Joomla/modules/mod_reviews● Este fichero tiene una sección global y una sección de parámetros● La sección global almacena información del módulo: – Nombre del módulo – Autor – Fecha de creación – …● La sección de parámetros guarda cada uno de los parámetros configurables
  112. 112. 112/125Parámetros en módulos
  113. 113. 113/125 Parámetros en módulos● Ya podemos acceder al back-end y configura nuestro módulo
  114. 114. 114/125 Parámetros en módulos● En el módulo, recuperamos los valores de los parámetros:
  115. 115. 115/125 Parámetros en plugins● La cosa cambia un poco
  116. 116. 116/125 Parámetros en componentes● La cosa cambia un poco
  117. 117. 117/1259. Agregar campos al registro de usuarios
  118. 118. 118/125 Descarga e instalación● Descargamos el plugin UserMeta de esta dirección: – http://joomlacode.org/gf/project/usermeta/frs/● Desde el back-end de joomla/ extensiones/ instalar- desinstalar● Localizamos el fichero .zip e instalamos● NOTA: NO copiar el fichero .zip dentro del directorio de joomla, sino en cualquier carpeta local de nuestro sistema
  119. 119. 119/125 Configuración del plugin● Utilizaremos el campo params de la tabla jos_user● Desde el back-end, vamos al administrador de plugins, y buscamos UserMeta
  120. 120. 120/125 Configuración del plugin● En la configuración global/ sistema/ parámetros de usuario:
  121. 121. 121/125 Agregamos los campos adicionales● Archivo /plugins/system/usermeta/user.xml● Modificaremos el primer grupo de parámetros, los que se guardan en jos_user Parámetros que se guardan Parámetros que se guardan en jos_user en campo params en otra tabla
  122. 122. 122/125Agregamos campos adicionales Hemos agregado el campo teléfono
  123. 123. 123/125Formulario de registro: mostramos los nuevos campos● El formulario de registro se encuentra en – joomla/ templates/ <mi_template>/ html/ com_user/ register/ default.php● Hay plantillas que NO sobreescriben el formulario de registro de joomla, de modo que NO existe esta ubicación, sino que usan directamente el formulario del sistema, que está en – joomla/ components/ com_user/ views/ register/ tmpl/ default.php – Es el caso de la plantilla ja_purity● Si es así, copiamos todo el contenido de esa ubicación del sistema y lo volcamos al lugar que le correspondería en nuestra plantilla, para NO modificar los archivos del sistema
  124. 124. 124/125Resultado
  125. 125. 125/125 Resultado en BD● Y efectivamente, si registramos un usuario, se almacena en BD su teléfono

×