(Tiempo estimado: 3 - 5 minutos)

Desde hace poco tiempo las condiciones para poder subir tus extensiones al JED (Centro de Extensiones de Joomla) se ha modificado y, una de ellas, es que los componentes, módulos y plugins deben tener integrado el sistema de actualizaciones (ver la noticia).

En este artículo te enseño todo sobre este sistema y cómo implementarlo en tus extensiones Joomla.

Qué es el sistema de actualizaciones de Joomla!

Básicamente, el sistema de actualizaciones de Joomla es lo que nos permite saber de forma rápida desde el panel de administarciín si alguna extensión (o el CORE) tienen una mueva versión y poder actualizar en un clic dicha extensión (o el CORE).

Qué ventajas tiene

Como ventajas del sistema de actualizaciones de Joomla tenemos las siguientes:

  • No tenemos que estar pendientes de revisar contínuamente los sitios de los desarrolladores para saber si tienen nueva versión.
  • No tenemos que descargar la nueva versión, guardarla y posteriormente instalarla ya que se hace todo desde el panel de administración.

Con lo cual... ganamos en tiempo y en seguridad.

Cómo se implementa el sistema de actualizaciones de Joomla!

Te voy a explicar cómo lo he hecho yo en los módulos que he desarrollado desde sergioisEXT.

El proceso se divide en 2 fases.

1/ Desarrollo en Extensión

Se trata de añadir un par de líneas de código en el fichero XML de instalación.

En mi caso (vamos a ver lo desarrollado en el módulo de Custom Thumbnails) he tenido que añadir las siguientes líneas de código en mod_custom_thumbnails.xml:

<updateservers>
  <server type="extension" name="Custom Thumbnails">https://sergiois.github.io/custom-thumbnails.xml</server>
</updateservers>

En esta línea le estoy diciendo:

  • Tipo (type): poner "extension".
  • Nombre (name): nombre de la extensión sobre la que se hace la comparación de versiones.
  • URL: entre las etiquetas server hay que poner la URL en la que está la información sobre nueva versión y URL de actualización de la extensión.

Puedes ver el commit correspondiente en GitHub con los cambios realizados.

2/ Fichero XML con datos de actualización

Se trata de un fichero que tendras que poner en algún sitio accesible para que pueda ser consultado.

En mi caso está en GitHub (puedes ver el fichero correspondiente del módulo sobre el que estamos viendo el ejemplo: https://sergiois.github.io/custom-thumbnails.xml).

<updates>
  <update>
    <name>Custom Thumbnails</name>
  <description>Custom Thumbnails Module</description>
  <element>mod_custom_thumbnails</element>
  <type>module</type>
  <version>1.1.0</version>
  <client>site</client>
  <infourl title="Custom Thumbnails">https://sergiois.github.io/custom-thumbnails.html</infourl>
  <downloads>
    <downloadurl type="full" format="zip">https://github.com/sergiois/mod_custom_thumbnails/archive/master.zip</downloadurl>
  </downloads>
  <tags>
    <tag>stable</tag>
  </tags>
  <maintainer>Sergio Iglesias</maintainer>
  <maintainerurl>https://sergioiglesias.net</maintainerurl>
  <targetplatform name="joomla" version="3.[6789]"/>
  </update>
</updates>

A continuación te explico cada una de las etiquetas:

  • name: nombre de la extensión (en este caso Custom Thumbnails).
  • description: descripción de la extensión (Custom Thumbnails Module).
  • element: nombre completo del módulo (mod_custom_thumbnails).
  • type: module (por tratarse de un módulo). En función del tipo de extensión podrá ser component, plugin, package, library...
  • version: la nueva versión en la que se encuentra (si la actual es la 1.0.0 podría ser la 1.0.1). Dependerá del sistema de versionado que estés utilizando.
  • client: site (ya que se trata de la parte de Front).
  • infourl: está formado por el atributo "title", que lleva el nombre de la extensión (Custom Thumbnails) y por la URL en donde se encuentra la información de la misma (https://sergiois.github.io/custom-thumbnails.html).
  • downloads: esta etiqueta está formada por otra, downloadurl, que tiene un atributo "type" para indicar el tipo (en mi caso "full"), un atributo "format" para indicar el formato de descarga (en mi caso "zip") y la URL en donde se encuentra la extensión para su descarga/instalación (https://github.com/sergiois/mod_custom_thumbnails/archive/master.zip).
  • tags: formada por la etiqueta "tag" en la que se indica el estado de la extensión (stable, beta...).
  • maintainer: nombre del desarrollador (Sergio Iglesias).
  • maintainerurl: URL del desaroollador (https://sergioiglesias.net).
  • targetplatform: formada por el atributo "name" (joomla) y por el atributo "vesion" en donde se indica la versión o versiones para la que es compatible. La forma de poner este valor es, 3.X en donde X puede ser las diferentes versiones de la rama 3 metidas entre corchetes. Si es compatible con las versiones 3.6, 3.7, debería tener el valor 3.[6,7].

Cómo funciona

El modo de funcionamiento es muy simple:

  • Cuando se instala tu extensión se hace con una versión determinada (ejemplo, 1.2.0). Esto viene indicado en el fichero XML de instalación de tu extensión, en la etiqueta "version" (correspondiente al punto 1 de este artículo).
  • Cuando haces cambios en tu extensión tendrás que cambiar esta versión por la nueva y, a la vez, tendrás que modificar la etiqueta del fichero XML con esa misma version (ejemplo, 1.2.1)
  • Cuando accedes a tu panel de administración se va a acceder a ese XML y se va a comprobar que la versión que tiene instalada corresponde con la del XML. En caso de que la de este último sea mayor se lanzará el aviso correspondiente para proceder a actualizarlo.
  • El aviso podrás verlo en 2 sitios dentro del panel de administración:
    • En el dashboard o home del panel.
      Dashboard Panel Administración Joomla
    • Dentro de la sección Extensiones > Actualizar.
      Actualizar Extensiones Panel Administración Joomla

Recuerda que si la tienes subida en el centro de extensiones de Joomla tendrás que modificar también esta versión.


De esta forma tan sencilla, integrando el sistema de actualizaciones en tus extensiones Joomla, estarás dando mayor seguridad y velocidad de actuación a tus usuarios.
(Además, recuerda que es un requisito obligatorio para poder publicar tus extensiones en el JED)

Sobre el autor, Sergio Iglesias

Sergio Iglesias

Sergio Iglesias es formador, desarrollador y front-end del CMS Joomla!. A través de su blog y sus cursos puedes aprender a desarrollar tu propio portal web autogestionable.

 

¿Te ha gustado el artículo? ¡Suscríbete YA!

¿Necesitas un sitio web que funcione?

¿No quieres depender de nadie para gestionar tu página web?

Recibe contenido exclusivo y GRATIS mi curso sobre desarrollo de plantillas Joomla!


Me apunto ya!

Comentarios

#2 sergiois 01-09-2017 11:57
Gracias Pablo,
La verdad que sí. Y encima es fácil de implementar, por lo que todos ganamos ;-)
Citar
#1 Pablo Arias 30-08-2017 11:04
Buena explicación Sergio. Un paso más para mejorar la seguridad de nuestros sitios.
Gracias y saludos
Citar

Escribir un comentario

Puedes publicar el comentario que quieras, pero si lo considero SPAM será eliminado automáticamente.

 

SergioIglesias.NET te informa que los datos de carácter personal que nos proporciones rellenando este formulario serán tratados por Sergio Iglesias Sánchez como responsable de esta web. La finalidad de la recogida y tratamiento de los datos personales que te solicitamos es, únicamente, para gestionar los comentarios de este blog. La legitimación se realiza a través del consentimiento del interesado. Te informamos que los datos que nos facilitas estarán ubicados en los servidores de SiteGround (proveedor de hosting). Ver política de privacidad de Siteground. El hecho de que no introduzcas los datos de carácter personal que aparecen en el formulario como obligatorios podrá tener como consecuencia que no pueda atender tu solicitud. Podrás ejercer tus derechos de acceso, rectificación, limitación y suprimir los datos en info@sergioiglesias.net así como el derecho a presentar una reclamación ante una autoridad de control. Puedes consultar la información adicional y detallada sobre Protección de Datos en mi política de privacidad.

¿Quieres tener un sitio web que funcione?

Contacta conmigo