Í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>http://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:
  • del.icio.us
  • BarraPunto
  • Bitacoras.com
  • Facebook
  • Google Bookmarks
  • Meneame
  • Netvibes
  • Technorati
  • FriendFeed
  • Twitter
  • HelloTxt


Comentarios

  1. 1
    AyVoy
    12 de marzo del 2008 a las 1:11 am

    Gracias por este fantastico tutorial.

  2. 4
    Gaston
    25 de marzo del 2008 a las 8:05 pm

    Estimado, la verdad es que estoy sorprendido por la calidad y explicación de tus tutoriales. Lamentablemente no todos somos tan buenos, ni entendemos tanto. Quería consultarte por un problema: Estoy buscando un componente/modulo para mostrar efemérides en mi sitio web. Solo encontré uno que se llama “Whats Today”, y que en teoría sirve para lo que necesito. El problemas es que no se instala en Joomla 1.5. Tienes alguna idea de dónde puedo conseguir algo de esto? O cómo modificar el que conseguí para que instale en J1.5? Un abrazo y mil gracias.
    Gastón.

  3. 5
    David
    27 de marzo del 2008 a las 6:04 pm

    Hola gaston, probablemente el componente funciones si activas el legacy mode en Joomla! 1.5. Para activarlo ves al gestor de plugins.

    Si no funciona, lo unico que te queda es reprogramarlo con compatibilidad para 1.5…

    La nueva versión a salido hace poco y aún hay muchos componentes, módulos y plugins que no se han actualizado, es un incordio, pero en un tiempo se solucionará..

    Un saludo!!

  4. 6
    Fran
    29 de marzo del 2008 a las 12:10 pm

    Hola David,

    Primero felicitarte por el tutorial, que está muy bien.

    Luego una crítica constructiva: vendría bien que pusieras el archivo zip del componente disponible para descargar, o los archivos por separado, en lugar de tener que copiar y pegar que ya sabes que a veces da problemas.

    Por lo demás espero que sigas adelante con ello, a mí me está resultando muy útil a la par que interesante. :-)

    Un saludo,

  5. 7
    Guillermo
    23 de abril del 2008 a las 3:03 pm

    Hola, Muy interesante tu articulo pero sabes estoy en un pequeño aprieto, tengo un layout en Photoshop lo estoy maqueteando pero sabes no se como pasarlo a Joomla

    que seria lo que tengo que hacer

    ?
    gracias por tu valiosa ayuda

  6. 8
    David
    24 de abril del 2008 a las 4:29 pm

    Hola Guillermo, pues en la web de leandro donofrio tienes un tutorial muy bueno sobre como hacer un template para Joomla.

    No es nada complicado, si ya lo tienes pasado a html solamente hay que añadir unas etiquetas especiales de joomla.

    Aqui lo tienes

    Un saludo

  7. 9
    jseros
    15 de agosto del 2008 a las 1:05 pm

    Espectacular tutorial, te felicito y muchas gracias por traer esta información tan valiosa al castellano.

    Mucha Suerte.

  8. 10
    Javier
    16 de diciembre del 2008 a las 7:14 am

    Muchas gracias por este tutorial, ha sido sumamente útil, aunque ahora estoy tratando de solucionar un problema, donde espero puedas, por favor, ayudarme.

    Hise todos los archivos que mencionas y si copia la carpeta com_prueba en la de componentes de mi servidor Joomla funciona. Ahora, hise el zip que incluye el archivo xml que menciona esta parte del tutorial y al tratar de instalarlo me sale el siguiente mensaje de error:

    ¡Error! No puedo encontrar un archivo de configuración XML para Joomla! en el paquete.

    Lo encuentro extraño ya que dentro esta prueba.xml con el contenido que se menciona en esta parte.

    Espero que puedas ayudarme, muchas gracias por la buena disposición.

  9. 11
    Javier
    16 de diciembre del 2008 a las 7:26 am

    Logre solucionar lo anterior, era un problema de copiado y pegado con las comillas, al igual que en los archivos anterior.

    Pero ahora mi problema cambio, el error que lanza el instalador es:

    JInstaller::install: El archivo ‘/var/www/Joomla/tmp/install_4947c78a75d6c/index.html’ no existe

    Podrian ayudarme por favor.

  10. 12
    juankysmith
    22 de diciembre del 2008 a las 4:51 am

    Hola compañer@s!! Me ha gustado mucho este tutorial.

    El problema es que mi componente es más complejo y no se como añadir subcarpetas y los ficheros que éstas contienen.

    Por ejemplo tengo una carpeta llamada “js” que incluye un javascript usado dentro del componente. Dentro de esta carpeta hay archivos de imágenes… ¿las incluyo como otro fichero o debo hacerlo en la parte de archivos multimedia?

    Gracias de antemano amig@s!!!

  11. 14
    juankysmith
    8 de mayo del 2009 a las 4:18 am

    Hola compañer@s!!

    He creado mi propio componente y todo ha ido bien hasta la creación del paquete de instalación.

    Creo el fichero .zip con el siguiente contendio:

    - Carpeta administartor: con la parte de administración del componente
    - Carpeta components: con la parte front-end del componente
    - Fichero micomponente.xml siguiente el modelo que habeis expuesto arriba.
    - install.micomponente.php
    - uninstall.micomponente.php
    - install.mysql.nonutf8.sql
    - install.mysql.nutf8.sql
    - uninstall.mysql.nonutf8.sql
    - uninstall.mysql.nutf8.sql

    El problema surge cuando instalo el paquete desde la administración Joomla 1.5.3, intento subirlo y recibo el siguiente error:

    [I]“¡Error! No puedo encontrar un archivo de configuración XML para Joomla! en el paquete.”
    [/I]

    ¿Sabeis a qué puede ser debido?
    Gracias de antemano.
    Un saludo

  12. 17
    Andres
    19 de agosto del 2009 a las 9:12 am

    Saludos!, la verdad que está muy interesnate el tema y muy bien explicado.

    Tengo una duda, hay componentes o modulos que pueden ocultar archivos al instalarse?. Lo digo porque estoy tratando de hacer una traduccion al español de un modulo (de un tercero) y cuando busco el archivo de lenguaje (en-EN.mod_cd_fapa.ini), este no aparece en la carpeta ‘administrator\language\en-EN’, que es donde se supone deberia quedar y el cual si aparece referenciado en el XML.

    Si me puedes brindar alguna pista estaria muy agradecido!!.

    en-GB.com_prueba.ini

  13. 18
    Alejo
    9 de octubre del 2009 a las 5:16 am

    Si mi componente tiene varias muchas carpetas jeje y archivos tengo que hacer un nomCarpeta/nomaArchivo
    por cada archivo ? no hay otra solucion que escribir todos los archivos que tengo ??
    Saludos!
    Espero tu rta.
    Gracias por aportar tanto en la creacion de componentes joomla.

  14. 19
    Alejo
    2 de diciembre del 2009 a las 4:44 pm

    Hola, nose si mi pregunta va a ser respondida porque hice una pregunta hace unos cuantos meses y no se respondio nunca :s, el blog me copa esta muy bueno…
    Voy a la pregunta, si yo quiero agregar parametros para que cuando cree el menu yo puedo modificar propiedades, donde agrego los parametros ( ) como en los plugins ??? lo he intentado y no aparecen nunca si me respondes me sera de mucha ayuda.. Saludos cordiales!!

Trackbacks

  1. Tutorial: Módulos para Joomla! 1.5 | nosoloCodigo
  2. Componentes para Joomla! 1.5 I | nosoloCodigo
  3. Tutorial: Componente para Joomla 1.5 III | nosoloCodigo
  4. Tutorial: Componente para Joomla 1.5 IV | nosoloCodigo
  5. Tutorial: Componentes para Joomla! 1.5 II | nosoloCodigo