Crear el XML del componente de Joomla y generar instalable

Índice de la serie: desarrollo de extensiones con Joomla

  1. Hacer componentes en Joomla!
    1. Patrón MVC
    2. Concepto de Front-End y Back-End
    3. Primer componente MVC simple con Joomla!
    4. Segundo componente, Back-End y acceso a datos.
    5. Crear el xml del componente de joomla y generar instalable.
  2. Hacer Módulos para Joomla!
  3. Hacer Plugins para Joomla!

Hasta ahora habíamos visto como hacer los componentes, tanto la parte de backend, como la de frontend, pero no habíamos visto como crear un paquete instalable para poder compartirlo con todo el mundo que se pueda instalar desde el instalador de extensiones de Joomla!.

Para ello simplemente hay que generar un fichero XML con nombre igual al del componente, en este caso prueba.xml y con un formato específico y comprimirlo todo en un zip. Este zip será el instalable.

Vamos a ver un posible fichero XML para un componente de prueba.


<?xml version=»1.0″ encoding=»utf-8″?>

<!DOCTYPE install SYSTEM «http://dev.joomla.org/xml/1.5/component-install.dtd»>

<install type=»component» version=»1.5.0«>

      <name>COM_PRUEBA</name>

      <!– Los siguientes elementos son opcionales –>

      <creationDate>2007 01 17</creationDate>

      <author>David</author>

      <authorEmail>david@nosolocodigo.com</authorEmail>

      <authorUrl>https://www.nosolocodigo.com</authorUrl>

      <copyright>Copyright Info</copyright>

      <license>License Info</license>

      <!–  Esta cadena es almacenada en la base de datos –>

      <version>Component Version String</version>

      <!– La descripción es opcional, y por defecto es el nombre del componente –>

      <description>Descripción del componente …</description>

 

      <!– Script php personalizado que se ejecutará en la instalación –>

      <installfile>install.php</installfile>

     

      <!– Script php personalizado que se ejecutará en la desinstalación  –>

      <uninstallfile>uninstall.php</uninstallfile>

 

      <!– Scripts SQL que se ejecutaran en la instalación –>

      <install>

            <sql>

                  <file driver=»mysql» charset=»utf8«>install.mysql.utf8.sql</file>

                  <file driver=»mysql«>install.mysql.nonutf8.sql</file>

            </sql>

      </install>

     

      <!–Scripts SQL que se ejecutarán en la desinstalación–>

      <uninstall>

            <sql>

                  <file driver=»mysql» charset=»utf8«>uninstall.mysql.utf8.sql</file>

                  <file driver=»mysql«>uninstall.mysql.nonutf8.sql</file>

            </sql>

      </uninstall>

 

      <!– Ficheros de la parte de front-end del componente, incluye aquí todos los ficheros del componente, incluidas las vistas, controladores, etc… –>

      <files>                               

            <filename>index.html</filename>

<!—El punto de entrada al componente ha de tener el atributo component–>

<filename component=”prueba.php>prueba.php</filename>

      </files>

     

      <!– Ficheros de leguanjes para el sitio –>

      <languages>

            <language tag=»en-GB«>en-GB.com_prueba.ini</language>

            <language tag=»de-DE«>de-DE.com_prueba.ini</language>

            <language tag=»nl-NL«>nl-NL.com_prueba.ini</language>

      </languages>

     

      <!– Ficheros multimedia para el sitio –>

      <media destination=»com_test«>

            <filename>image.png</filename>

            <filename>flash.swf</filename>

      </media>

 

      <administration>

     

            <!– Sección para el menu del Back-End –>

            <menu img=»components/com_test/assets/test-16.png«>EventList

</menu>

            <submenu>

                  <!– Date cuenta que todos los & estan escapados a &amp; para que el fichero XML valide correctamente y pueda ser parseado por el instalador –>

                  <menu link=»option=com_helloworld&amp;task=hello&amp;who=world» >

Hello World! </menu>

                  <!– Puedes especificar el link como arriba o los atribitos de la URL individualmente como abajo –>

                  <menu img=»icon» task=»hello» controller=»z» view=»a» layout=»b» sub=»c«>Hello Again!</menu>

                  <menu view=»prueba» layout=»foo«>Testing Foo Layout</menu>

            </submenu>

           

            <!– Ficheros de la parte de Administración–>

            <!–El atributo folder especifica la carpeta desde donde serán copiados los ficheros, por lo tanto index.html estará ubicado dentro del componente en

                  admin/index.html

                  –>

            <files folder=»admin«>

                  <filename>index.html</filename>

<!—El punto de entrada al componente ha de tener el atributo component–>

                  <filename component=”admin.prueba.php> admin.prueba.php</filename>

            </files>

           

            <!– Ficheros de lenguaje de la parte de Administración –>

            <languages folder=»admin«>

                  <language tag=»en-GB«>en-GB.com_prueba.ini</language>

                  <language tag=»de-DE«>de-DE.com_prueba.ini</language>

                  <language tag=»nl-NL«>nl-NL.com_prueba.ini</language>

            </languages>

           

            <!–Ficheros multimedia de la parte de Administración–>

            <media folder=»admin» destination=»com_prueba«>

                  <filename>admin-image.png</filename>

                  <filename>admin-flash.swf</filename>

            </media>

      </administration>

</install>

Este fichero será leído por el instalador de Joomla! y de aquí sacara la información para proceder a instalar el componente. Si el fichero no valida correctamente, no podrá ser parseado y fallará la instalación, así que estate al tanto de que valide ya que XML es muy estricto y puede fallar por cualquier tontería, como dejarse espacios en blanco al inicio. Con los comentarios incluidos dentro del fichero creo que se entiende todo, este fichero de ejemplo ha sido sacado de la documentación oficial de Joomla y traducido al castellano para su mejor comprensión.

Compartir:
Abrir chat
¿Tienes alguna duda que podamos aclarar?