Está en la página 1de 28

Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.

com

Manual Ilustrado para clonar


componentes de Joomla.

Autor: Jesús Piña


jesuspina@solucionesopensource.com
http://www.solucionesopensource.com

Joomla Open Source:

www.joomla.org

Página 1 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

Prefacio:

El término clonación en el ámbito de la ingeniería de software se refiere a hacer una


copia de un sistema y modificarla de tal forma que permita complementar el
sistema actual.

En fin los motivos pueden ser variados, ya sea porque necesita duplicar las
funciones de un componente, o por si desea hacer ingeniería inversa para ver como
funciona y hacer algo parecido por usted mismo, como normalmente escribo de
forma muy técnica decidí mejor poner imágenes paso a paso para aquellos que no
están familiarizados con los términos.

NOTA: Este manual esta desarrollado para componentes instalados en modo local,
porque siempre es mejor instalar cualquier módulo, componente o mambot en
nuestra computadora, ver su funcionamiento y después subirlo al servidor. para
hacerlo a través de internet los pasos son muy parecidos. NOTA: debido a que el
autor prefiere la instalación manual de componentes, de optó por hacer también la
clonación manual.

Página 2 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

Paso 1: Duplicar los archivos para el Administrador.

Estos archivos son los que aparecen en el panel de administración, con ellos puedes
administrar el componente. normalmente consiste en añadir, editar y borrar. y
algunos otros añaden funciones extra como subir, publicar, no publicar, ayuda, etc.

Debes hacer una copia de la carpeta


/administrator/components/com_componenteaclonar en este ejemplo vamos a
clonar el componente banners que viene por defecto en joomla, si el componente
que deseas clonar viene con los archivos de intalación, debes instalarlo primero en
tu computadora y despues hacer la clonación.

Hacemos la copia del componente.

Página 3 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

Una vez que lo hemos copiado sobre la misma carpeta, debemos renombrarlo a
com_banners2 o como quieras que se llame pero siempre debe llevar el prefijo
com_ o de lo contrario no te va a servir, te sugiero el uso de números para evitar
que te confundas sobretodo al momento de hacer la parte difícil que es editar los
archivos.

Con esta copia se han creado los archivos del panel de administración para este
clon.

Página 4 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

Paso 2: Duplicar los archivos para el usuario.

se encuentran en la carpeta /components/com_componenteaclonar, estos archivos


definen la interfaz para el usuario, es lo que tus visitantes van a poder ver.

Copiamos la carpeta ubicada en /components/com_componenteaclonar que en este


caso seria banners y la duplicamos.

Una vez copiada, se renombra igual que en el paso anterior se llamará


com_banners2

Con esto ya tenemos los archivos que verá el usuario o el visitante de tu website.

Página 5 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

Paso 3: Respaldar la base de datos:

Esto es útil en caso de que algo te salga mal o como simple medida de seguridad,
al hacer el respaldo de la base de datos estas guardando toda la información de tu
sitio.

Primero entramos en el phpmyadmin de nuestro servidor en modo local, por


defecto es:
http://localhost/phpmyadmin o http://127.0.0.1/phpmyadmin

del lado derecho aparecen las bases de datos, en este caso seleccionamos la de
nuestro sitio que en este ejemplo se llama joomla.

Ahora hacemos click en la opción Exportar que se encuentra en la parte superior.

Página 6 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

En esta pestaña nos da la opción para exportar toda la base de datos de nuestro
sitio, así que hacemos click en seleccionar todo (si es que no esta seleccionado y en
la parte de abajo seleccionamos la casilla “Enviar (genera un archivo descargable)”

Haciendo esto nos va a generar el archivo SQL con el contenido de los datos.

Página 7 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

Ahora solo lo guardamos en donde queramos, y con esto ya tenemos respaldada la


base de datos de nuestro sitio.

Una vez que tenemos el respaldo de la base de datos podemos hacer las cosas más
serias que son hacer las copias de las tablas, y registrar el componente clonado
manualmente.

Página 8 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

4: Duplicar tablas:

Para que tu componente clonado funcione perfectamente y no mezcle datos con el


componente original debes también hacer un duplicado de las tablas, para hacerlo
abrimos el archivo de la base de datos que acabamos de bajar con cualquier editor
que soporte SQL, en lo personal me gusta Geany, o Kate para abrir este tipo de
archivos, pero si usan Windows les recomiendo Notepad++, del cual un servidor
realizó una versión portable en español la cual pueden descargar en:

http://www.solucionesopensource.com/index.php?option=com_remository&Itemid=
27&func=fileinfo&id=7

El editor SourceEdit, también es bueno solo que trae mucha publicidad, en fin,
bueno volviendo al tema:

Buscamos las tablas que queremos cambiar, por suerte para nosotros los nombres
de las tablas corresponden a los diferentes componentes que tenemos en joomla, si
no saben como se llaman las tablas de su componente, solo basta abrir el archivo
de instalación que se encuentra dentro del archivo comprimido (.zip, .tar.gz, .tar,
.rar o cualquier otra extensión de compresión. el archivo de instalación debe llevar
algo como install.xml y ahí aparecen los nombres de las tablas que usa ese
componente porque debe decir “CREATE TABLE .... y aqui aparece el nombre de la
tabla.

En este ejemplo vamos a usar las tablas que llevan jos_banner, jos porque es el
prefijo que viene por defecto en joomla y banner por que son las tablas de este
componente.

al ver en el phpmyadmin los nombres de las tablas, nos damos cuenta de que el
componente banners usa tres tablas que son: “jos_banners”, “jos_bannerclient” y
“jos_bannerfinish”, siempre los nombres de las tablas se relacionan con el
componente, así las tablas del componente remository llevan downloads, de
virtuemat el prefijo vm, etc.

A través de nuestro editor, vamos a seleccionar el código de las tablas y copiamos


desde donde empieza “CREATE TABLE 'Aqui va las tablas del componente que van a
clonar” en este caso jos_banners, jos_bannerclient y jos_bannerfinish
hasta una línea antes de donde empiece la tabla del siguiente componente que
también debe empezar con “CREATE TABLE”, se reconoce porque tiene nombre
diferente.

Página 9 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

Seleccionamos todas las líneas desde donde empiezan las tablas a clonar hasta la
primer línea de la tabla del siguiente componente.

Página 10 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

hasta una línea antes de la tabla del siguiente componente, lo reconocemos


porque tiene nombre diferente, en este caso la tabla jos_categories es la que
adminstra las categorias del contenido de nuestro sitio.

Una vez que hemos seleccionado todo lo copiamos.

Por norma general en la parte superior izquierda de nuestro editor esta el icono de
“Nuevo” o “New”, hacemos click en ese botón para que nos abra una nueva
pestaña en blanco, y ahí pegamos lo que acabamos de copiar. Esto es importante
porque hay que recordar que estamos trabajando con el respaldo de la base de
datos de nuestro sitio y por seguridad debe ser solo para lectura, no debemos
escribir en el a menos que sepamos lo que estamos haciendo.

Página 11 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

Una vez que hemos pegado el contenido de las tablas, procedemos a modificarlas,
al principio del nuevo archivo (o la nueva pestaña que acabamos de crear) debe
decir CREATE TABLE `jos_banner` o dependiendo de como se llame la tabla del
componente que quieres clonar y le agregamos un 2 al final para que quede
CREATE TABLE `jos_banner2`, lo mismo en donde dice:
INSERT INTO `jos_banner` se debe cambiar a INSERT INTO `jos_banner2` y así
sucesivamente con todas las tablas que tenga ese componente.
guardamos el archivo con el nombre componenteclonado.sql

Ahora regresamos a nuestro editor y buscamos la tabla jos_components que se


encuentra en el archivo joomla.sql, para evitar andar buscando línea por línea les
recomiendo que usen la función buscar que trae incorporado su editor, así solo
escribimos components, le damos enter y automáticamente nos posiciona el la
línea que contiene components.

Página 12 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

Seleccionamos todo el contenido desde CREATE TABLE 'jos_components' hasta una


linea antes de que vuelva a decir “CREATE TABLE”. lo copiamos, y ahora
regresamos a nuestro archivo componenteclonado.sql, nos posicionamos al final del
archivo y ahí pegamos el contenido de la tabla jos_components.

Página 13 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

Ahora vamos a editar el archivo componenteclonado.sql nos fijamos en la línea que


aparece en CREATE TABLE 'jos_components', debe ser igual a la última línea que se
ve en la figura ENGINE = ...., en la parte que dice AUTO_INCREMENT=n en este
caso n=53 que es el número que aparece en la figura y es el que se le asignará al
siguiente registro de esta tabla. Es probable que lo necesites dependiendo de como
quieras que aparezca el componente clonado en el panel de adminstración.

Por ejemplo si quieres que al hacer click en el menú componentes te aparezca dos
veces el componente, entonces vas a tener que usar el numero que acabas de
anotar en este ejemplo es el 53 y te va a aparecer algo como

banners -> gestion de banners


-> clientes
banners2 -> gestion de banners2
->clientes2

esto es en el caso de que tu componente te aparezca con submenus, en caso

Página 14 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

contrario te aparecera

componenteoriginal
componenteclonado

en lo personal prefiero tener todo organizado en el mismo menu que sería algo
como:

banner->categorias o bien banners->categorias


->clientes ->categorias2
->categorias2 ->clientes
->clientes2 ->clientes2

Aqui podemos jugar con los valores y nos aparecera en distinto orden, con distinto
nombre, etc. Ahora vamos a aprender como jugar con estos valores.

analizamos los registros de la tabla jos_components que se encuentran en nuestro


archivo componenteclonado.sql y buscamos las líneas que lleven algo de
com_nombredelcomponente a clonar que siguiendo este ejemplo sería
com_banners. La forma más rápida de hacerlo es usar la función de búsqueda de
nuestro editor.

seleccionamos las líneas de código tal como se muestra en la siguiente figura

Página 15 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

Lo cortamos, ahora seleccionamos el resto: que en este caso empezaría desde


(4,'Enlaces Web', ...) hasta el final de los registros:

Página 16 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

Una vez que hemos seleccionado todos los registros los elmiminamos y nos debe
quedar algo asi:

Página 17 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

Ahora pegamos los registros que habiamos cortado y nos queda:

Página 18 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

NOTA: observa que el primer registro en realidad no apunta a nada, es solo la


categoría, esto nos damos cuenta por que el sexto campo que debe ser la URL a
relativa a la que debe apuntar aparece como '' y porque en el quinto campo
aparece 0, o sea que no esta relacionado con ningun otro. si queremos que nuestro
componente sea registrado sobre la misma categoria (o menu principal) en nuestro
panel de administración quitamos esta línea, pero no sin antes ver el ID de este
registro que en este caso sería el 1, porque es el primer número que aparece
despues del parentesis.

Ahora vamos a jugar con los campos, al eliminar esta línea nos debe quedar algo
así:

Página 19 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

en el siguiente registro van a estar los valores del componente clonado, esto es
para que el panel de adminstración pueda diferenciar del componente original y del
componente clonado o de lo contrario todo lo va a a tomar del componente original.

el numero 2: define el ID del componente, en este caso lo debes sustituir por el


valor n que no es otra cosa que el valor que aparece en donde dice
AUTO_INCREMENT= que en este ejemplo es el 53, también puedes usar '' pero
recomiendo que si no estas muy familiarizados con MySQL le pongas el número que
sigue o sea el 53 en este ejemplo.

El segundo campo es el nombre con el que nos va a aparecer en el panel de


administración, que puede ser banners2 o banners clonado o administrador de
banners o como quieras que se llame esto es algo con lo que tu lo vas a identificar.
El tercer campo corresponde al link, en el caso de los submenus no se utiliza y por
defecto es ''.
El cuarto campo es el ID del menú, hasta el momento no tengo idea para que sirve
pero todos los componentes lo registran por defecto como 0,
El quinto campo es la relación con la categoría, si aparece 0 es porque no esta

Página 20 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

relacionado con otras categorías o mejor dicho aparece en el menú principal y es


todo no cuenta con submenus. el número que aparece es el ID de la categoria con
la que esta relacionada, en este caso es la número 1.
el 6: campo es el link del administrador, en otras palabra a donde te va a llevar
cuando hagas click en esa opción, y aqui si tenemos que editarlo y poner
“option=com_banner2” para que nos lleve a la carpeta del componente clonado.
el campo 7: es una breve descripción de ese componente, en este caso lo podemos
renombar a “banners activos 2” o “banners 2”.

El campo 8: es el nombre de la carpeta en donde se encuentra el componente, en


este caso se debe renombrar a com_banners2,

El campo 9: es el orden en el que va a aparecer en el menú. es decir, categorias,


categorias2, clientes, clientes2 o como quieran que aparezca. NOTA: no deben
repetirse los números para una misma categoria, en este caso como el menú solo
trae dos opciones lo debemos cambiar a 3 que seria el orden del nuevo submenu.

El décimo campo define la imagen que va a tener el submenú, por defecto se


encuentra en la carpeta /includes/js/ThemeOffice ahí pones el icono que quieras,
pero sin el include, por ejemplo js/ThemeOffice/home.png o según el ícono que
quieras.

El onceavo campo define si el componente es impresindible en joomla, por defecto


es que no, asi que toma el valor de 0

y el doceavo campo son los parámetros en caso de que se requieran.

de esta forma podemos editar el registro de nuestros componentes clonados y nos


quedaría algo asi.

Página 21 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

finalmente seleccionamos todo lo que aparece en la siguiente imagen:

Página 22 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

y lo borramos, esto es porque la tabla jos_components ya se encuentra creada en


nuestra base de datos y si lo dejamos no podremos ejecutar la consulta en la base
de datos y nos va a marcar error.

NOTA: el delimitador en la base de datos por defecto es el ; así que al final del
archivo se debe poner “;” justo en la última línea en vez de “,” como se muestra en
la figura.

finalmente guardamos el archivo, seleccionamos todo el contenido y lo copiamos.

Ahora solo falta hacer la consulta a la base de datos y subir las tablas que
acabamos de modificar.

Esto lo hacemos entrando nuevamente en phpmyadmin, seleccionamos la pestaña

Página 23 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

SQL y nos va a abrir un cuadro de texto como el que se muestra a continuacion:

En este cuadro pegamos el contenido del archivo componenteclonado.sql y le


damos click en continuar para ejecutar la consulta, es mucho mejor por este
método que por subir el archivo directamente desde la pestaña Importar, ya que si
se importa est en función del juego de caractéres que se tenga por defecto en el
servidor y nos puede causar problemas con los acentos y las “ñ”.

Página 24 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

Finalmente nos vamos al panel de administración de nuestro sitio y nuestro


componente clonado ya aparece tal y como se muestra a continuación

PASO 5: Modificar el código del componente.

Sin embargo esto no significa que esta funcionando correctamente ya que el código
del componente clonado apunta a las tablas originales y no a las tablas clonadas
por lo que debemos editar los archivos.

Tenemos que editar el código fuente de nuestro componente clonado y esto lo


hacemos nuevamente con nuestro editor favorito. en mi caso prefiero el Geany,
pero ustedes pueden usar el que quieran.

Primero vamos a buscar las referencias a las tablas originales, algunos editores
pueden buscar en toda la carpeta específicada, en caso de que tu editor no tenga
estas funciones debes abrir todos los archivos de la carpeta
com_componenteclonado en este caso com_banners2 y seleccionar buscar en todos
los archivos.

Página 25 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

con esto nos aparece una lista de todos los archivos y las lineas en donde se tienen
que hacer modificaciones,

Página 26 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

aquí nos aparece el listado de los archivos que tenemos que cambiar y las líneas a
las que les tenemos que hacer cambios, solo basta en hacer click en la línea para
que nos lleve de forma automática al archivo y a la línea que necesitamos corregir.
aquí cambiamos “option=com_banners” lo cambiamos a “option=com_banners2”
esto es para que al hacer click en el enlace nos lleve a la página de edición del
componente clonado en vez del componente original.

para cambiar las consultas a la base de dato es exactamente lo mismo.

Página 27 de 28
Manual para clonar componentes en Joomla Autor: Jesús Piña: www.solucionesopensource.com

aqui se cambia en donde dice “FROM #__banner” a FROM #__banner2 y así


sucesivamente con el resto de las tablas. con esto logramos que el componente
clonado tome y haga consultas desde las tablas clonadas, sin que afecte las tablas
originales.

NOTA: este ejemplo para editar los archivos solo se muestra para el administrador o
sea la carpeta /administrator/components/com_XX donde xx representa el
componente clonado. se tiene que hacer lo mismo para los archivos que va a ver el
usuario estos se encuentran en /components/com_XX.

Espero que les haya sido de utilidad.

Atentamente:
Jesús Piña
www.solucionesopensource.com

Página 28 de 28