Plugins en Joomla


Un plug-in en su definición más genérica es un complemento, códigos añadidos a una aplicación desarrollada en cualquier lenguaje que integra nuevas características, funcionalidades y ejecutado siempre por la aplicación principal.

En Joomla la definición no varía, mantiene su esencia y objetivo, alimentar y extender. También conocido como extensión o add-on. Permite mejor colaboración de los desarrolladores con la aplicación principal (framework de Joomla), reduce la cantidad de código a implementar lo cual lo hace más fácil de mantener entre otras muchas facilidades.

Joomla brinda a los desarrolladores una serie de eventos (trigger events) los cuales utiliza en su funcionamiento y son un punto de entrada. Cuando un evento en particular ocurre todos los plugins asociados a él son ejecutados secuencialmente.

La mejor manera de entender es con un ejemplo práctico, una situación real. Supongamos estamos en el proceso de desarrollo de nuestra tienda virtual, como parte del trabajo de marketing comercial y divulgación de la misma y decidimos colocar una serie de anuncios publicitarios, los cuales direccionan siempre a nuestro sitio agregando en la URL el identificador de la fuente publicitaria que lo originó, es decir, de donde vienen nuestros clientes.

Las direcciones de los anuncios publicitarios tendrán el siguiente formato: http://myshop.com?source=ebay donde sourcevaría dependiendo del origen. Nuestra tienda virtual en el panel de administración precisa de estadísticas construidas a partir de un componente que chequea las

COOKIEs

de nuestros clientes, donde deberá existir dicha variable source.

El objetivo de nuestro plug-in será chequear cada encuesta a nuestra tienda virtual en busca de un source válido y si este existiera creará una variable de igual nombre y valor en las COOKIEs de nuestros clientes para posteriormente ser procesadas por el componente antes descrito.

EL plug-in se asociará a un evento que se ejecuta en cada encuesta, hace su trabajo y por sobre todas las cosas debe ser totalmente transparente al usuario. De la lista de eventos disponibles utilizaremos onAfterInitialise(). Un plug-in se compone por varios ficheros php y xml, en nuestro caso por solo dos.

  • www/myshop.com/plugins/system/plg_selers/plg_selers.php
  • www/myshop.com/plugins/system/plg_selers/plg_selers.xml

El primero implementa las acciones a ser ejecutadas cada vez que el evento onAfterInitialise() sea cargado. El segundo tiene información a cerca del plug-in.

// www/myshop.com/plugins/system/plg_selers/plg_selers.php
defined('_JEXEC') or die;

class plgSystemPlg_selers extends JPlugin
{
    function onAfterInitialise()
    {
        $seler = JRequest::getVar('source', '', 'get');
                if ($seler) {
                    setcookie('seler', $seler);
                }
    }
}

// www/myshop.com/plugins/system/plg_selers/plg_selers.xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="2.5" type="plugin" group="system">
    <name>plg_selers</name>
    <author>JL3yR0y</author>
    <creationDate>Aug 2013</creationDate>
    <copyright>Copyright (C) 2013 Open Source Matters. All rights reserved.</copyright>
    <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
    <authorEmail>lele140686@gmail.com</authorEmail>
    <authorUrl>www.joomla.org</authorUrl>
    <version>2.5.0</version>
    <description>Example plugin</description>
    <files>
        <filename plugin="selers">plg_selers.php</filename>
        <filename>index.html</filename>
    </files>
</extension>

Los plug-ins herendan de la clase JPlugin que implementa una serie de eventos y funciones que pueden ser sobre escritos según sea necesario. El evento onAfterInitialise() obtiene las variables GET en nuestra URL y si existe nuestra source la guarda en las COOKIEs del cliente, para luego ser procesada por otro componente. El fichero XML es solo una plantilla que siempre uso, puede tener más o menos información, la cual será accesible por la consola de administración de nuestro Joomla y por los programadores que quieran reutilizar nuestro plugin.

Un plug-in es una herramienta muy útil si tienes imaginación, este es solo un ejemplo sencillo y práctico. Estudiando los eventos que el framework de Joomla pone a nuestra disposición seguro que les encuentras utilidad. En otros artículos abordaremos más a cerca de ellos, los que a mi personalmente me han salvado la vida muchas veces.

Latest posts by Leroy Ley (see all)