Clonar componentes Joomla!

Duplicar o clonar  un componente joomla! es una tarea algo complicada pero no imposible. Son muchas, si no bastantes las demandas para la duplicacion de un componente joomla por distintos motivos. Las mas comunes son poder presentar varias listas de precios del mismo producto segun pais y moneda, presentar varios catalogos o incluso directorios o productos para clasificados para distintos paises o tipos de productos en la misma web joomla! y con el mismo componente.  Los componentes que mas se demandan duplicar son componentes joomla! como VirtueMart, AdsManager, Mosets Tree y otros. A continuacion les mostrare como duplicar el componente virtuemart 1.5, la nueva version beta ya integrada en el MVC Joomla 1.5, que les servira de muestra para la duplicacion de otros componentes joomla! que seguro en alguna ocasion se le ha planteado el dilema…


Primero, quiero puntualizar
que si quieren clonar, duplicar la version estable actual de virtuemart, la version virtuemart 1.1.6, ni se molesten en intentarlo, los motivos son varios, aunque parece ser que en los comentarios de este contenido hay quien comenta como si pudo hacerlo, de lo cual me alegro, sin embargo no hay que olvidar que esta version 1.1.5 o 1.1.6 que es la actual tiene como final desaparecer, lo cual explico porque mas adelante. Hay que saber que virtuemart proviene de una solucion externa a Joomla! llamada PhpShop y que actualmente lo que se presenta como version para joomla es un injerto y las complicaciones son multiples al no seguir el MVC Joomla. Si la memoria no me falla la primera implantacion que se hizo sobre Mambo, antecesor de Joomla! se llamo PhpshopCart, aunque duro bastante poco, pasando ya a llamarse Virtuemart. Si acceden al codigo veran referencias a ese nombre y cosas como PHPSHOP_ o archivos llamados ps_product.php. Luego al disponer ya de una version integrada en el MVC Joomla! es todo mucho mas sencillo, aunque no exento de algunas complicaciones que tratare de aclarar en este tutorial. Sigan al pie de la letra cada paso, no traten de adelantarse o saltarse los pasos y si no les funciona, empieze desde cero borrando archivos y tablas clonadas de la base de datos, creanme si les digo que acabaran antes.
Por ultimo señalar que aun no hay modulos para esta version de virtuemart, aunque pronto los habra. Cuando esten disponilbes, hare la segunda parte de este tutorial sobre los modulos para el clon de virtuemart.
Primeros pasos:
El primer paso es si el componente que quieres duplicar viene con los archivos de intalación, debes instalarlo primero, lo siguiente, una vez instalado, bien en local o en remoto, en local les sera mas sencillo y rapido, sera crear una carpeta que llamaremos por ejemplo VIRTUEMART  ya que es el que vamos a tomar como referencia para este tutorial, aunque la pueden llamar como quieran y o como el componente a dulpicar, en la parte que prefieran de su ordenador y dentro de la misma dos carpetas mas llamadas admin y sitio, en admin vamos descargarnos la parte instalada en, /administrator/components/ del componente virtuemart o el que quieran duplicar,  concretamente la carpeta com_virtuemart sera la descargaremos y renombraremos como com_virtuemart2 una vez descargada, para la parte publica lo haremos desde la carpeta situada en la misma raiz de tu joomla! /components y descargaremos com_virtuemart en sitio, ya descargado renombraremos la carpeta como com_virtuemart2, todo esto tiene un porque y lo veremos en la parte final de este tutorial. Los componentes joomla tanto en la parte de administracion como la parte publica, Back-end / Front-end son llamados con el prefijo com_xxx , xxx representando el nombre de la extension, que en nuestro caso es llamado com_virtuemart . Podemos renombrar el componente con cualquier nombre y siempre debera incluir el prefijo com_ , en este caso y para que sea mas facil identificar lo vamos a llamar com_virtuemart2. Ya copiado y renombrado en la parte de administracion de joomla , tendremos las carpetas com_virtuemart2 en nuestra carpeta creada con las sub carpetas admin y site . Este paso nos ha servido para crear la parte duplicada de la administracion del componente virtuemart y para la parte final de este tutorial.

Segundo Paso:
El segundo paso sera realizar una copia de seguridad de las tablas de la base de datos de nuestro componente virtuemart. Este paso nos va a enseñar como hacer un respaldo o copia de seguridad de  no solo las tablas del componente virtuemart si no que tambien nos servira para hacer copias de los datos y estructura del componente del cual queramos guardar una copia e identificar que tablas pertencen y esten relacionadas con el componente, del cual queremos guardar una copia. Incluso les podra ser util para borrar tablas de componentes que ya no utilizan y solo cargan su base de datos.

Para identificar que tablas son las que nos interesan es necesario disponer del instalador del componente. Dentro del archivo comprimido que utilizamos para instalar el componente, el archivo de instalación debe llevar algun archivo que contiene las cadenas de texto CREATE TABLE , puede ser un archivo con extension php o xml y ahí es donde se muestra el nombre de las tablas, que en las tablas joomla segun nuestro prefijo de instalacion que por defecto se asigna y que es jos_ se muestran con un sub prefijo que esta relacionado en la mayoria de las ocasiones con el nombre propio del componente o alguna abreviatura y el nombre que corresponde a la tabla. Lo que deberemos buscar seria algo como esto

"CREATE TABLE `#__vm_

Como pueden ver vm es la abreviatura de virtuemart, con lo que las tablas de virtuemart son llamadas jos_vm_xxx y xxx el nombre utilizado para la estructura de la tabla que esta relacionado con los datos que insertaremos y se utiliza en las llamadas a la base de datos del componente .
Como todo esto puede sonar a chino, les dire que en la inmensa mayoria de los componentes creados para joomla, el nombre que se le suele asignar a las tablas son el mismo que el archivo instalador comprimido del componente. Por ejemplo, el componente Jomsocial por todos conocido, el archivo que se utiliza para su instalacion es llamado com_community. , zip, rar o tar.gz, bien pues las tablas de dicho componente son llamadas jos_community_xxx .

Una vez identificadas las tablas de nuestro componente en este caso virtuemart, les enseñare en forma de imagen como crear la copia de las tablas, exportandolas bien directamente en su formato original SQL o en un archivo zip o rar, que es mas comodo de guadar. Aunque primero hay que hacer una copia completa de la base de datos, que es exactamente igual que copiar tablas seleccionadas pero sin seleccionar tablas ya que suelen venir todas señaladas por defecto, simplemente elegir la base de datos desde phpmyadmin,  hacer clic en exportar, seleccionar tipo de compresion, zip, rar o sin comprimir y pulsar en continuar , lo muestro en las imagenes de mas abajo y nos hara falta para el siguiente paso.

Antes, una breve explicacion del software que vamos a utilizar y que es comun en todos los hosting, sean LAMP (Hosting remoto o Linux) o WAMP (hosting local en windows) y que es llamado PhpMyAdmin . Este software es el que se utiliza para el tratamiento de nuestras bases de datos SQL y que se encuentra facilmente en el panel de nuestro hosting, sea Plesk o Cpanel, siendo estos nombrados por ser los mas extendidos y en nuestro WAMP instalado en nuestro ordenador windows, donde lo hayan instalado, tambien localizable en http://localhost/phpmyadmin . Si tienen algun tipo de problema con su WAMP para encontrar su Phpmyadmin, hice un WAMP portatil con acceso directo a phpmyadmin, pueden informarse y descargar en este enlace –> SoloJoomla Pendrive version J! 1.5.21 , muy rapido de instalar, extraer y colocar en la carpeta que deseen.

Exportar Tablas VirtueMart:
{gallery}exportartablas{/gallery}Bien, una vez tenemos las tablas separadas de nuestra base de datos y la copia completa de la misma podemos ir al siguiente paso.

Tercer Paso:

En este paso vamos a aprender a duplicar las tablas de nuestra base de datos, paso necesario para no mezclar los datos del componente original al clonado o duplicado.
Como fuimos previsores y realizamos una copia de las tablas del componente que fue guardado en su propio archivo, vamos a proceder a hacer uso del mismo.

Editamos el archivo en cuestion con las tablas del componente, recuerden NO la copia de la base de datos completa, si no la copia realizada de las tablas del componente. Para editar un archivo con extension SQL, yo utilizo el Notepad ++ –> descargar Notepad ++ , un editor sencillo y de multiuso. Editamos y nos mostrara la estructura de las tablas de la siguiente manera:

 

CREATE TABLE IF NOT EXISTS `jos_vm_auth_group` ( y INSERT INTO `jos_vm_auth_group` 
(`group_id`, `group_name`, `group_level`) VALUES

Luego la siguiente tabla

CREATE TABLE IF NOT EXISTS `jos_vm_auth_user_group` 
( y INSERT INTO `jos_vm_auth_user_group` (`user_id`, `group_id`) VALUES

asi hasta la ultima

Todas las tablas, las tendremos que renombrar añadiendo el numero 2 en _vm_ asi > _vm2_ , de la siguiente manera, sin olvidar el INSERT TO:

CREATE TABLE IF NOT EXISTS `jos_vm2_auth_group` y INSERT INTO `jos_vm2_auth_group` 
(`group_id`, `group_name`, `group_level`) VALUES (
luego la siguiente tabla CREATE TABLE IF NOT EXISTS
`jos_vm2_auth_user_group` ( y INSERT INTO `jos_vm2_auth_user_group`
(`user_id`, `group_id`) VALUES asi hasta la ultima

Y una vez cambiadas todas las tablas guardamos el archivo. Simplemente con guardar es suficiente ya que esas tablas ya se encuentran en un archivo diferente a la copia general de nuestro joomla, la cual utilizaremos a continuacion.

Aclaracion:
Si tratan con tablas con un prefijo y nombre de tabla, lo cual es bastante raro, poner el numero 2 despues del nombre de la tabla para renombrar. Por ejemplo el componente Banners tiene tablas tipo jos_banners, pero ya les digo que es muy poco frecuente. Renombren siempre en la referencia del componente, asi > jos_nombredelcomponente2_xxx , xxx es el nombre diferenciado en cada tabla. Mas adelante veremos el porque.

Ahora vamos a utilizar la copia completa de nuestra base de datos. Editamos la copia con nuestro editor y buscaremos y seleccionaremos la linea siguiente

CREATE TABLE 'jos_components' Hasta una linea antes del siguiente CREATE TABLE

Copiamos las lineas para volver a abrir si lo han cerrado la copia de las tablas del componente,abrimos la copia del archivo de las tablas y al final del todo, pegamos lo seleccionado y copiado. Les quedara como se muestra en la segunda imagen, junto con la seleccion de la tabla en la base de datos completa en la primera imagen:

{gallery}notepadplus{/gallery}

Ahora vamos a editar el archivo de copia de tablas del componente y nos fijaremos en la ultima tabla que acabamos de añadirle llamada jos_components. Al final de la misma veremos las lineas:

) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=241 ; 

en la parte que dice AUTO_INCREMENT=241 en este ejemplo x=241 que se puede observar en la imagen primera justo antes de este texto y x sera segun el componente a clonar o duplicar pudiendo ser cualquier otro numero y que es el número que se le asignará al siguiente registro de esta tabla. Lo necesitaremos dependiendo de como queremos mostrar el componente virtuemart u otro duplicado en el panel de adminstración.

Luego buscamos en la tabla jos_components del archivo de copia de tablas virtuemart para este caso, lineas de codigo coincidentes con el componente a duplicar, en este caso virtuemart, que deberia de ser nombrado com_virtuemart. En este caso la linea que aparece y que es la siguiente:

(137, 'VirtueMart', 'option=com_virtuemart', 0, 0, 
'option=com_virtuemart', 'VirtueMart', 'com_virtuemart', 0,
'../components/com_virtuemart/shop_image/ps_image/menu_icon.png', 0, '', 1),
Una vez localizada la linea, seleccionamos toda la linea y con el boton derecho de nuestro raton haremos clic y seleccionamos la opcion “Cortar”, veran como linea desaparece. Luego seleccionamos el resto de lineas desde la primera linea marcada como (1 desde INSERT TO , hasta la ultima linea de la tabla jos_components que acaba en un punto y coma “;” y darle a BORRAR o SUPRIMIR desde nuestro teclado. Lo siguiente es situar el raton justo en la linea debajo de INSERT TO y con el boton derecho de nuestro raton haremos clic en “Pegar”, veran como la linea que antes desaparecio vuelve a aprecer mostrada. Muestro el proceso y como quedara en las siguientes imagenes:

{gallery}comvirtuemart{/gallery}

Campos:
El siguiente paso es ajustar los campos de la tabla.
Primer campo:
Aqui cambiaremos el numero 137, que define el ID del componente y que se distingue en la imagen, en este caso debemos cambiarlo por el valor x antes comentado que es el valor que aparece en AUTO_INCREMENT= que en este ejemplo es el 241.

Segundo campo:

El segundo campo que se distingue es “Virtuemart” le añadiremos el 2 empleado para distinguirlo del componente original, aunque lo puedes cambiar con cualquier otra palabra, es solo para distinguirlo del original.

Tercer campo:
El tercer campo es option=com_virtuemart que corresponde al enlace (link) que corresponde al mismo y le añadiremos el numero 2 para identificarlo y enlace.

Cuarto campo:
El cuarto campo es el id del menu y lo dejaremos como esta en 0.

Campo quinto:
El quinto campo esta realcionado con la categoria y si como en este caso aparece 0 es que no cuenta con sub menus y en este caso lo dejaremos tal cual.

Campo sexto:
El sexto campo es el enlace del administrador y deberemos añadirle el numero 2 empleado para distinguirlo del original, asi option=com_virtuemart2 y nos llevara a la carpeta renombrada del duplicado o clonado.

Campo septimo:
Es una descripcion simple. Pueden cambiarlo, por ejemplo y para seguir con las identificaciones diferenciadas añadiremos el 2, asi Virtuemart2.

Campo octavo:
Identificador de la carpeta clonada o duplicada, con lo que deberemos añadirle el 2 que estamos empleando, asi com_virtuemart2.

Campo noveno:
Define el orden en el que les van a aprecer los menus. Campo llamado ordering y que tiene un valor 0 por defecto.

Campo decimo:
Define la imagen, no se cambia, salvo claro esta que queramos personalizar aun mas nuestro clon

Campo decimo primero:
Este campo define si la extension es imprecindible, no se cambia su valor por defecto 0, que significa que no es imprecindible.

Campo decimo segundo:
Parametros en el caso que se reqquieran, no se toca.

Campo decimo tercero:
Extension activada, valor 1, no tocar

Una vez los ajustes hechos quedaria asi:

(241, 'VirtueMart2', 'option=com_virtuemart2', 0, 0, 'option=com_virtuemart2', 'VirtueMart2', 
'com_virtuemart2', 0,
'../components/com_virtuemart/shop_image/ps_image/menu_icon.png', 0, '', 1),

NO olviden cerrar la tabla,cambiando la coma ultima “,” por un punto y coma”;” con lo que el resultado seria este:

(241, 'VirtueMart2', 'option=com_virtuemart2', 0, 0, 'option=com_virtuemart2', 'VirtueMart2', 
'com_virtuemart2', 0,
'../components/com_virtuemart/shop_image/ps_image/menu_icon.png', 0, '', 1);
Lo siguiente es borrar la tabla jos_components ya que la misma ya se encuentra en nuestra base de datos joomla, para a continuacion seleccionar todo el contenido del archivo de las tablas del duplicado o clon, y copiarlo, no sin antes renombrar todas las tablas de virtuemart añadiendo un numero 2 en todas las tablas desde CREATE TABLE y en el segundo campo de INSERT TO, y a que el primer campo de todos los INSERT TO hace referencia al ID y todos los demas campos de cada tabla en los INSERT TO, aunque no todas las tablas de virtuemart incluyen un INSERT TO, con lo que en dichos casos no hara falta seguir el proceso de los campos justo arriba señalados y recordar que no son todos iguales, cambian segun tabla, aunque no deben ser alterados.
No os desanimeis que solo es cuestion de paciencia. Son 52 las tablas a renombrar en el caso de virtuemart . Abrimos de nuevo nuestro phpmyadmin y seleccionamos la base de datos en cuestion, para luego hacer clic en la pestaña SQL que se encuentra arriba. Veremos un campo o cuadro grande vacio en forma de rectangulo, hacemos clic con el boton derecho, seleccionamos y volvemos  hacer clic en “Pegar”. Insertadas en el campo grande las tablas, abajo del todo a la derecha de nuestro phpmyadmin haremos clic en “Continuar”. Habremos introducido en nuestra base de datos las tablas con los cambios necesarios para crear nuestro duplicado del componente virtuemart. Muestro unas imagenes del proceso:

{gallery}borrar{/gallery} 

Seguimos en las tablas de la base de datos del clon:

Renombrar en la tabla jos_vm2_config images/stories/virtuemart por images/stories/virtuemart2 y guardar.
Ya podemos cerrar el editor guardando los cambios. Luego descargar images/stories/virtuemart , renombrar a images/stories/virtuemart2 y volver a subir. Asi habremos creado la carpeta para el uso de las imagenes en nuestro clon virtumart.

Archivo virtuemart.xml:
El archivo virtuemart.xml se encuentra en /administrator/components/com_virtuemart2, lo descargamos y editamos o bien lo editamos directamente desde el cliente FTP. Ahi vamos a renombrar todas las palabras virtuemart a virtuemart2, todas, incluido las de los idiomas. En el caso probable de utilizar idioma español, aunque aun no hay traduccion al español para la version virtuemart 1.5 (A ver quien se anima y lo comparte) vamos a efectuar los cambios en el archivo para cuando esten disponibles, poder subirlos a languages/es-ES sin mas y disponer del idioma.
Editamos el archivo virtuemart.xml con nuestro editor Notepad++ y añadiremos el siguiente codigo despues de los mismos para el ingles:

es-ES/es-ES.com_virtuemart2.ini 

------------------

es-ES/es-ES.com_virtuemart2.ini

Subimos el archivo sobre escribiendo el que ya hay y listo, ya tenemos preparado el clon virtuemart para el idioma español.

Cuarto paso:

En el cuarto paso vamos a proceder a cambiar o modificar los archivos del componente para que pueda conectar con las nuevas tablas de nuestro componente clon o duplicado, ya que el código del componente duplicado aun apunta a las tablas originales y no a las tablas duplicadas. Esto lo vamos a realizar en dos fases.

Primera Fase:
Para buscar las referencias a las tablas originales vamos a primero abrir el editor Notepad ++ que contempla la opcion de busqueda desde archivos a una carpeta que contenga subcarpetas y archivos, con lo que la busqueda sera mucho mas agil y rapida y evitaremos la tediosa labor de buscar las referencias archiva a archivo, esto aclara el porque situamos la duplicacion o clon de nuestro componente en una carpeta a parte y dos sub carpetas llamadas admin y sitio. Nos posicionaremos sobre Buscar en el menu del editor y haremos clic para que aparezca el submenu y haremos clic en Buscar en Archivos, se abrira una pequeña ventana. Primero en “Buscar” pondremos com_virtuemart y remplazar con com_virtuemart2, mas abajo en “remplazar con”  y mas abajo en “Filtro” pondremos *.* para que busque en todos los archivos, luego haremos clic en el boton de Directorio mostrado con tres puntos seguidos y buscaremos la carpeta donde hemos guardado los direcotorios de administracion y parte publica las carpetas com_virtuemart2, o sea, si han seguido las indicaciones, buscaremos la carpeta VIRTUEMART para seleccionarla.

{gallery}vir{/gallery}


Bien a partir de aqui podemos hacer dos cosas
, bien darle directamente a “Reemplazar en Archivos“, lo cual ejecutara la orden de cambiar todas las referencias com_virtuemart a com_virtuemart2 o bien primero hacer clic en “Buscar todo“. Yo os aconsejo que primero realizen una busqueda por una sencilla razon, y es que muchos componentes realizan instalaciones no solo del componente si no tambien de plugins y modulos, en ocasiones incluso de idiomas para modulos y plugins, con lo que es posible, y este es el caso de virtuemart, se instalen modulos o plugins, los cuales los archivos php del mismo incluyan la misma referencia en los nombres de los archivos php, y estaran renombrando cosas que en un principio no deben renombrar. Virtuemart nombra los archivos de sus modulos “mod_virtuemart.php” . Realizen una busqueda e identifiquen si es que los hay, archivos con la misma refrencia que no sean del propio componente. Una vez identificados pueden proceder a hacer clic en “Reemplazar en Archivos“. El siguiente paso es volver a renombrar con su referencia original los archivos de modulos o plugins, de la misma manera que lo han hecho para renombrar la referencias del componente solo que esta vez utilizen el nombre completo del archivo ya reemplazado en este caso añadiendo un 2 con el mismo nombre pero sin el numero 2 que es el mombre original del archivo.

Segunda Fase:
Esta es una de las partes mas delicadas y la realizaremos del mismo modo de la primera fase. Vamos a renombrar las referencias que van a hacer que conectemos con las tablas del clon o duplicado, ya que de momento seguimos conectando con las tablas originales.

Aqui en la version beta de virtuemart se me planteo un error una vez terminada la clonacion. Cuando queria editar un producto me tomaba la base de datos original, ahora veremos como solucionarlo. A tener en cuenta que es posible que segun se vaya optimizando virtuemart 1.5.

Las referencias a remplazar dentro de los archivos son las siguientes:

#__vm_  por  #__vm2_ | com_virtuemart por com_virtuemart2 
(este ya se cambio en la primera fase) | virtuemart.php por virtuemart2.php

Ahora vamos a arreglar el fallo que se me presento y se os presentara a la hora de editar un producto.

Primero hay que saber que han cambiado algunas cosas en esta nueva version de virtuemart. A parte de ser mucho menos pesado y tener la programacion sobre el MVC de Joomla!. Las iran descubriendo segun vayan trabajando con el componente. No son muy relevantes en cuanto funcionamiento del admin, pero les debo indicar uno de ellos para que sepan donde “tocar” para arreglar el fallo de la edicion.
Observaran que cuando editen un producto que en la url desaparecera el 2 de com_virtuemart con lo que nos indica que no esta trabajando con la base de datos del clon si no de la original.

Cambios a realizar:
Editar el archivo product.php en /administrator/components/com_virtuemart2/views/product/tmpl . En la linea 103 aproximadamente encontraran el siguiente codigo:

$link = 'index.php?option='.$option.'&view=product&task=edit&product_id=
'.$product->product_id.'&product_parent_id='.$product->product_parent_id;

y la reemplazaermos por la siguiente

$link = 'index.php?option=com_virtuemart2
&view=product&task=edit&product_id=
'.$product->product_id.'&product_parent_id='
.$product->product_parent_id;

Dentro del mismo archivo podemos reemplazar la otra linea de codigo relacionada con el añadido de productos en caso de problemas sobre la linea 141 del archivo aproximadamente.

product_id; ?>

Por la siguiente

product_id; ?>

Aunque en mi caso no he tenido problema alguno. Les comento esto ya que hemos reemplazado ‘.$option.’ por com_virtuemart2 haciendo una llamada directa en el caso de editar. En el caso de añadir nuevos productos no he tenido ese problema, aunque es posible que aparezca el problema. RECORDAR, esta una version beta de virtuemart y encima totalmente nueva.

Ahora nos queda ajustar la configuracion para que no nos salte un error500 en la visualizacion. Aqui es donde veran que han cambiado la forma de visualizar los productos con virtuemart en joomla!. En las versiones anteriores disponiamos de una carpeta llamada /themes donde subir las plantillas para virtuemart, las cuales tenian su configuracion propia. Esto ya ha pasado a mejor vida con la version 1.5 de virtuemart. Ahora en cada categoria y producto podemos y debemos elegir que plantilla joomla, que tengamos instalada, se va a utilizar.
Accedemos al producto editado para, obvio, editarlo y en la parte inferior de nuestra pantalla se nos muestra la opcion de elegir la plantilla por defecto o el archivo default.xml. Este archivo es el causante de dicho fallo en el clon, en el original no hay problemas y supongo que otra solucion habra, pero esta es la que le he dado y funciona. Como veran en las siguientes imagenes, tambien se puede aplicar a las categorias, donde tambien elegiremos la plantilla de nuestro joomla! donde se va a mostrar la categoria de nuestro virtuemart. Recordar que esta es un version BETA muy reciente con fecha 21/11/2010.

{gallery}clon2{/gallery}

Quinto Paso:
Hay que renombrar todos los archivos php que contengan la palabra virtuemart en el componente clonado, tanto en el admin como en la parte publica, son pocos archivos. Esto es para cualquier componente. Los archivos php que se deben renombrar de virtuemmart son >

{xtypo_alert} Parte administracion : admin.virtuemart.php | virtuemart.cfg.php{/xtypo_alert}

{xtypo_alert} Parte publica : virtuemart.php | virtuemart_parser.php (Este lo vamos a renombrar por precaucion aunque no se utiliza) {/xtypo_alert}

Todos con el numero 2, por ejemplo admin.virtuemart.php debe renombrarse admin.virtuemart2.php .

Cumplimentado el ultimo paso, procedemos a subir manualmente desde un cliente ftp si trabajan en remoto o copiar y pegar en local las carpetas com_virtuemart2 de admin y sitio a /administrator/components/ y /components/ respectivamente.
Ya tenemos nuestro componente virtuemart clonado instalado y listo para funcionar. Vista del admin con el componente virtuemart clonado.
{gallery}clon{/gallery}

{xtypo_info} DEMO temporal > OriginalClonado (Ya no disponible) – en la misma web y Base de Datos . Haciendo clic en el menu horizontal en VIR y CLONVIR observaran que los productos son los mismos pero con diferentes precios{/xtypo_info}

Clonar componente Mosets tree:
Esto va para el usuario Crustier
de www.guiametal.com, que andaba loco buscando una solucion para clonar el Mosets Tree.
Para clonar el MTree, abreviatura Mosets Tree, es aun mas sencillo, es todo igual, solo que el sufijo de las tablas es “mt” y los archivos mtree, con lo que debemos cambiar o renombrar en la base de datos es _mt_ a _mt2_ y tambien mtree a mtree2 que alguna referencia dentro de la base de datos. Luego renombramos los archivos php que contengan la palabra mtree, tanto en el admin como en la parte publica, son unos cuantos mas que virtuemart. Miren en todas las carpetas de admin y del front end (parte publica) y renombren a mtree2 . Ya por ultimo abrimos el editor notepad++ y hacemos clic en Buscar / Buscar archivos, seleccionamos la carpeta donde descargamos el original instalado y renombrado y buscamos y renombramos los siguientes terminos:

{xtypo_alert} #__mt_ y mtree a #__mt2_ y mtree2 . Tan solo esos dos terminos{/xtypo_alert}

Subimos com_mtree2 del admin y front-end y las partes modificadas de la base datos como antes se a explicado para virtuemart.

{xtypo_info}DEMO > OriginalClonado en esta misma web y Base de Datos {/xtypo_info}

Conclusion:

He tomado como ejemplo virtuemart ya que se trata de uno de los componentes mas pesados y  mas complejos de duplicar para que cuando decidan efectuar una clonacion sepan donde se van a meter. No es sencillo aunque tampoco imposible como señalo al principio. Sobre todo tengan paciencia si el componente elegido para clonar es de tamaño considerable. Esto es solo un tutorial que sirve para orientaros en los pasos a seguir para clonar este u otros componentes. Tengan muy en cuenta que no tiene porque funcionar a la primera debido a todos los pasos a seguir. Para esta tarea si aconsejo que trabajen en local. Si consiguen hacerlo funcionar, los demas componentes ya seran tarea sencilla, al menos eso pretendo enseñaros con este tutorialy el clon de virtuemart 1.5.

¿Para que nos puede servir clonar un componente?:
Son muchos los motivos que nos pueden llevar a clonar un componente joomla, por ejemplo en el caso de virtuemart el poder disponer de una tienda con diferentes precios segun pais o lo que se les ocurra.
Espero que os haya servido como refrencia y sepan que la mayoria no son tan complicados de duplicar. Recuerden, las preguntas tecnicas en el foro solojoomla por favor.

11 comentarios en «Clonar componentes Joomla!»

  1. Clonar
    Gracias… Gracias…. Gracias…. jeee por el tutorial para duplicar componentes.. Lo are con el Virtuemart; pero ya sabes que sobre todo me interesaba el Mtree.
    Una Consulta: MVC Joomla 1.5, que es eso realmente?
    Posdata: Crustier (has puesto mal mi nick del foro) jeee
    Un Saludo Agur!

  2. Framework MVC
    Hola tio, cambiado tu nick. [b]M[/b]odelo [b]V[/b]ista [b]C[/b]ontrlador > [url]http://es.wikipedia.org/wiki/Modelo_Vista_Controlador[/url] ahi te explican correctamente que es. Lee bien todo antes de hacer nada. No lo hagas sobre virtuemart si no es para probar yo lo hice con la version beta 1.5 de virtuemart y no esta aun para poder trabajar con ella, solo a modo de prueba. Sobre Mtree funciona 100% . Puedes ir probando sobre esa version de virtuemart para que te vayas haciendo con los pasos y cuando lo controles [b]en 10 minutos o menos te clonas el Mtree[/b] . Funciona perfectamente. [b]OjO[/b] a los que lo intenten con componentes que no estan totalmente integrados con el framework de joomla, son problemas a la vista.

  3. Clonación Virtuemart
    A pesar de que he leído que parece que no se puede clonar el virtuemart o da muchos problemas la cosa es que yo lo necesitaba porque no tenia otra manera de generar 2 articulos diferentes dependiendo de que tipo de usuario lo mirase, hacer que el precio fuese diferente es facil, pero estaba la cuestion de los atributos que no eran los mismos asi que la unica opcion que veia era clonar el virtuemart.

    Ahora me encuentro con el problema de que consigo meter al usuario en el virtuemart2 pero lee todo el rato los articulos del virtuemart en la base de datos en lugar de los de virtuemart2.

    ¿sabes como solucionarlo? es que el fichero que indicas de /administrator/components/com_virtuemart2/views/product/tmpl no existe. Gracias

  4. Virtuemart 1.5 beta
    Es normal que no lo encuentres. Estas intentando duplicar la version 1.1.15 de virtuemart, cuando explico que con esa version ni lo intenten. Hay archivos que ya no estan en la version virtuemart 1.5 que si esta diseñada siguiendo las directrices del MVC Joomla 1.5 . Version 1.5 de virtuemart > [url]http://virtuemart.net/news/list-all-news/388-beta-virtuemart-15-released[/url] El contenido de este tutorial esta realizado con esa version.

  5. Solución 1.1.15
    Al final conseguí solucionarlo, ahora mismo tengo 3 virtuemart funcionando sin problemas. Diferentes precios y usuarios, además con el NoIXACL controlo el acceso a los menus.

    El truco estuvo en cambiar en todos los archivos con el Notepad++ el #__{vm} por jos_vm2 así directamente va a mirar las tablas del virtuemart 2.

  6. Gracias por este enorme trabajo
    Me ha llevado todo el dia pero lo consegi, lo he echo con el Music collection y en principio todo bien.
    Lo que no he condeguido es que en el banked me nombre el 2 osea me sale music collection suplicado si el 2 , pero bueno es un mal menor.

    Muchas gracias por el tutorial

  7. clonar ADSManager
    Hola compañeros, he estado intentando clonar el componente ADSManager siguiendo las instrucciones expuestas ut supra, el problema con el que me encuentro es que en el código del archivo sql no me aparece ninguna tabla jos_components, por lo tanto me he quedado a medias. ¿Hay alguien que haya clonado este componente? de ser así, me gustaría que me ilustrase. Gracias.

  8. jos_components es de Joomla
    Claro, porque [b]jos_components[/b] NO es una tabla de tu componente. Pertenece al core de Joomla 1.5 y se utiliza para insertar los datos presenciales de los componentes que instalas, como [b]jos_plugins[/b] y [b]jos_modules[/b] . Vuelve a leer el tutorial mas despacio.
    [b]Estas tablas en Joomla 1.7 se han cambiado por una sola llamada _extensions[/b] , obviando el prefijo de la tabla que cada uno asigna el que quiere, no como en joomla 1.5 que se asignaba [b]jos_[/b] por defecto.

  9. Duda ¿Alguna solución?
    Hola,

    Explico mi cuestión. Yo tengo 2 tienda online y quiero mismos productos, mismos stock y diferentes precios. Pero lo más importante es que cuando compren en tienda A se actualice también el stock de tienda B. ¿este componente lo hace?

    Gracias de antemano

Deja un comentario

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de sus datos para estos propósitos. Ver
Privacidad