Voy a comenzar una serie de artículos que servirán de tutorial para poder crear tu propio componente para Joomla. Para empezar vamos a echar un vistazo a la estructura básica de un componente y a lo largo de los siguientes artículos vamos a crear un componente que tendrá un panel de administración con un par de pestañas donde podrás introducir en una tu nombre y apellidos y en otra tu fecha de cumpleaños. La ídea es bastante simple e inútil como componente, pero permitirá dar a conocer como se debe de montar un componente para Joomla.
En general para empezar lo mejor es utilizar un autogenerador de componentes. Esta herramienta te permitirá generar la estructura básica de un componente.
Al generar el componente se descargará un fichero comprimido en “.zip”. Al descomprimir esto tendrás la siguiente estructura de directorios.
- administrator – Contiene la parte que conformará la parte de administración (back-end)
- components – Contiene el componente u componentes de administración.
- com_nombrecomponente Contiene un componente de administración.
- controllers – Contiene los controladores para las diferentes vistas que crees (opcional).
- helpers – Contiene clases que nos aportarán una seríe de métodos para facilitar el desarrollo.
- models – Contiene las clases que implementan la lógica de negocio de nuestro componente.
- tables – Clases que asisten en el acceso a la base de datos.
- views – Contiene las diferentes vistas que forman el componente.
- config.xml – Parámetros de configuración.
- controller.php – Este será el controlador genérico.
- index.html – Fichero vacío.
- install.nombrecomponente.php – Script de instalación.
- joomdiet.php – Script de entrada de ejecución del componente.
- uninstall.nombrecomponente.php – Script de desinstalación.
- com_nombrecomponente Contiene un componente de administración.
- language – Ficheros de lenguaje para la parte de administración.
- en-GB – Ficheros de lenguaje para ingles del Reino Unido.
- en-GB.com_nombrecomponente.ini – Fichero de traducción.
- index.html – Fichero vacío.
- en-GB – Ficheros de lenguaje para ingles del Reino Unido.
- index.html – Fichero vacío.
- components – Contiene el componente u componentes de administración.
- components – Aquí está la parte de pública del componente.
- com_nombrecomponente – Componente de la parte pública.
- models – Modelos de la parte pública.
- views – Vistas del componente.
- controllers – Controladores para cada vista del componente.
- controller.php – Controlador principal.
- index.html – Fichero vacío.
- nombrecomponente.php – Fichero de entrada de ejecución del componente.
- router.php – Permite configurar el sistema de enrutamiento del componente.
- index.html – Fichero vacío-
- com_nombrecomponente – Componente de la parte pública.
- language – Ficheros de traducción de la parte pública (la estructura es similar a la parte de administración).
- index.html – Fichero vacío.
- nombrecomponente.xml – Fichero de definición del componente.
Una vez se tiene todo esto, es el momento de empezar a trabajar. Lo ideal para empezar es tener más o menos claro que es lo que se quiere hacer y que secciones tendrá el panel de administración o que secciones tendrá la parte pública (en caso de tener más de una sección). Para configurar todo esto se deberá de editar el fichero nombrecomponente.xml.
Es recomendable que mientras leas esto, a partir de aquí tengas abierto el fichero xml de definición del componente. Ya que voy a comentar un poco por encima que significa cada sección de dicho fichero. A continuación hay un xml de ejemplo.
En las primeras líneas de xml verás que se describe lo básico: nombre del componente, autor, dirección de email del autor, url del autor, copyright del componente, fecha de creación, licencia del producto (aquí poner siempre GNU/GPL, es bueno
), versión del componente y finalmente la descripción. Estos datos los utilizará para mostrar en el administrador de componentes de Joomla!. El cual me imagino que estareis familiarizados.
Luego los siguiente es definir los ficheros que necesita ejecutar el componente para instalar el componente. En general si el componente va a usar base de datos lo normal será tener un fichero de inicialización de la base de datos. En dicho fichero la sintaxis será la normal de SQL, pero se deberá de nombrar las tablas de la siguiente manera #__nombrecomponente_nombretabla. De esta manera tendrás las tablas integradas con el resto de tablas de joomla, donde reemplazará el #_ por el prefijo de la base de datos configurado en Joomla.
Lo mismo para el fichero de desinstalación de la base de datos. Además de que se aplica la misma sintaxis que en el fichero de instalación de la base de datos.
Luego se definen los ficheros que servirán para inicializar la instalación y desinstalación. Estos ficheros están pensados por si te interesa inicializar algunos parámetros del componente de alguna manera en concreto. En caso de que esto no sea necesario, lo recomendable es dejar estas entradas apuntando a los correspondientes ficheros y los ficheros dejarlos vacíos, por si los necesitas más adelante.
Luego pasas a la sección de usuario, en esta sección hay una serie de entradas donde se le dice a Joomla donde están los ficheros y directorios de instalación. Cuando se incluye un directorio, Joomla asume que tiene que instalar todos los ficheros contenidos en dicho directorio automáticamente. Luego está la sección de lenguages donde se indica donde están los ficheros de lenguaje para cada código de idioma. Lo normal es que en donde pone folder apunte sólo a “language” y dentro de la etiqueta language indicar la ruta relativa a partir de language.
La parte de administración será totalmente idéntica a la parte de usuario, salvo que se añade la sección de menú. Esto permitirá que tu componente pueda definir sus propias entradas de menú. Lo habitual es crear una entrada de menú para el componente y a continuación un submenú con las diferentes partes de adminsitración que tendrá el componente. En este caso como comenté anteriormente sólo habrá dos entradas de menú.
<menu task="default" img="js/ThemeOffice/component.png">Saludador</menu>
<submenu>
<menu task="nameconfig">Nombre</menu>
<menu task="birthconfig">Cumple</menu>
</submenu>
Una cosa interesante para comentar es acerca de una limitación de introducir de esta manera el menú. Los nombres de las entradas de menú no serán traducibles. De todas formas hay diferentes trucos para que Joomla acabe aplicando traducción. Trucos que veremos más adelante (espero xD).
Finalmente hay una sección de parámetros donde se podrán introducir los parámetros de configuración del componente, en caso de haberlos.
Algunas observaciones a tener en cuenta, es que vereis que el generador no creó la carpeta de controllers, esto es porque por defecto controller.php, será el controlador que implemente todas las acciones de todas las vistas. Yo no recomiendo esto para nada. Lo mejor que se puede hacer aquí es tener un controlador de entrada que sea capaz de lanzar las vistas de las diferentes secciones y luego un controlador para cada una de las secciones que tendrá el componente. Esto hará que el código del componente sea más fácil de mantener.
Para ello lo mejor es hacer lo siguiente en el fichero de entrada de cada parte. (nombrecomponente.php)
// Initialize the dedicated controller
if ($controller = JRequest::getWord('controller')) {
// determine path
$path = JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php';
if (file_exists($path)) {
require_once $path;
} else $controller = '';
}
$classname = 'NombrecontroladorController'.$controller;
$controller = new $classname();
// Perform the Request task
$controller->execute( JRequest::getVar('task'));
$controller->redirect();
Con esto, cada vez que creeis un controlador nuevo, tan sólo lo tendreis que añadir a controladores y en el implementar las funciones de las acciones que tendrá que implementar el controlador.
Con esto dejo por ahora esta primera parte del tutorial. En la siguiente parte del tutorial hablaré de la creación de un controlador, una vista y un modelo en el panel de administración del componente. Hasta la próxima.
Artículos relacionados:
Creando componentes para Joomla!: Parte 2










Tener claro lo que se quiere hacer que es la parte más complicada
Enhorabuena por la información detallada y ver que nos trae la segunda entrega.
Para cuando el desenlace!!!…XDXD
SALU2
Pronto… es que estuve bastante liado durante estos meses…. pero tranquilos que no me olvido de continuar con el tutorial
Llevaba tiempo buscando una forma de crear la estructura de un component correctamente. La parte pública lo había conseguido, pero la administración (y el instalador) se me resistían.
Así que esto me ha venido de perlas. Muchas gracias!
Te seguiré leyendo, no es este el primer post interesante que veo aquí
Un saludo!
Gracias!!, el tema es que por desgracia ultimamente no tengo mucho tiempo. Pero a ver si continúo con los tutoriales de Joomla y los de LaTeX que también los tengo algo pendientes.
[...] Creación de componentes para Joomla: parte 1 VN:F [1.9.7_1111]please wait…Rating: 0.0/10 (0 votes cast)VN:F [1.9.7_1111]Rating: 0 (from 0 votes)Share| Desarrollo, Tutorial none [...]
Vamos un esfuerzo, necesitamos la parte 3. Gracias!