Crear un plugin básico para Joomla

Ya compartí como crear un modulo simple de Joomla, ahora les comparto como crear un plugin, en este caso, será uno también muy básico que permitirá agregar JS's y CSS's a nuestro sitio.
Con este plugin lo que haremos será agregar JS's y CSS's, tanto como código y/o como archivos de manera muy simple.

Para comenzar a crear nuestro plugin haremos los siguientes pasos:
1- Crear una carpeta con el nombre del plugin (En minúsculas), en nuestro ejemplo usaremos customcode.
2- Crearemos 2 archivos, uno con extensión .php y otro con extensión .xml y ambos con el mismo nombre de nuestro folder, es decir customcode.
3- El archivo customcode.xml será nuestro manifiesto y lo llenaremos con el siguiente código:

<?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="system" method="upgrade">
	<name>Add custom code Plugin</name>
	<author>TU NOMBRE</author>
	<creationDate>July 2017</creationDate>
	<copyright>Copyright (C) 2017 Open Source Matters. All rights reserved.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>TU EMAIL</authorEmail>
	<authorUrl>TU URL TIPO www.tuweb.com</authorUrl>
	<version>1.0.0</version>
	<description>Add custom codes like CSS's and JS's</description>

	<files>
		<filename plugin="customcode">customcode.php</filename>
	</files>

	<config>
		<fields name="params">

			<fieldset name="basic">

				<field name="code_css" type="textarea" default="" label="Custom CSS" />

				<field name="code_js" type="textarea" default="" label="Custom JS" />

				<field name="file_css" type="textarea" default="" label="File CSS" description="If need add more that 1 file add one for line" />

				<field name="file_js" type="textarea" default="" label="File JS" description="If need add more that 1 file add one for line" />
			
			</fieldset>

		</fields>
	</config>

</extension>​

En este código lo que estamos haciendo es definir los datos del plugin como el autor, tu url, version, etc. además de agregar los campos para la configuración del mismo, en este caso, agregamos 4 campos del tipo textarea.

Estos campos son los que veremos cuando entremos a Extensiones -> Plugins -> Add custom code Plugin (El nombre de nuestro plugin) y en estos mismos campos son donde llenaremos la información que queremos que nuestro plugin agregue a nuestro sitio.


4- Llenamos nuestro archivo customcode.php con el siguiente código:
<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System Custom code
 *
 * @copyright   Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die();

class PlgSystemCustomcode extends JPlugin
{

	public function onAfterDispatch()
  	{

		// Verifica el área en la que estémos, si estamos en el administrador no se agrega el código de nuestro plugin
		$app  = JFactory::getApplication();
		if ($app->isClient('administrator'))
		{
			return;
		}
                
		// Obtiene los parametros de los campos de nuestro plugin y agrega los que hayamos incluido
		$document = JFactory::getDocument();
		$code_css = $this->params->get('code_css');
		$code_js  = $this->params->get('code_js');
		$file_css = $this->params->get('file_css');
		$file_js  = $this->params->get('file_js');

		if ( $code_css ) {
			$document->addStyleDeclaration($code_css);
		}

		if ( $code_js ) {
			$document->addScriptDeclaration($code_js);
		}

		if ( $file_css ) {
			$archivoscss = explode(PHP_EOL, $file_css);
			foreach ($archivoscss as $archivocss) {
				$document->addStylesheet($archivocss);
			}
		}

		if ( $file_js ) {
			$archivosjs = explode(PHP_EOL, $file_js);
			foreach ($archivosjs as $archivojs) {
				$document->addScript($archivojs);
			}
		}

  	}

}​


En este archivo creamos la clase PlgSystemCustomcodex que extiende la clase de Joomla JPlugin, después y dentro de ella creamos la función onAfterDispatch() que lo que hace es ejecutar el código dentro de ella después de que el framework haya enviado la aplicación. Obtenemos los valores que le dimos a nuestro plugin y en base los agrega al sitio.

5- Ya tenemos nuestros archivos necesarios, una vez hecho todo esto ahora solo nos queda crear nuestro archivo de instalación de nuestro plugin, para esto tenemos 2 opciones:
  • Crear un archivo .ZIP
    Para esto simplemente comprimimos nuestro folder customcode para generar el archivo customcode.zip y una vez creado nos vamos a Extensiones -> Gestionar -> Instalar y en la pestaña Subir archivo del paquete simplemente arrastramos (o seleccionamos) nuestro archivo y listo, no debería haber ningún problema, nuestro plugin se instalará.
  • Subir nuestra carpeta
    Guardamos nuestra carpeta customcode en la ruta plugins / system y la subimos a nuestro servidor, una vez arriba nos vamos en nuestro Joomla a Extensiones -> Gestionar -> Descubrir y damos click en el botón Descubrir y ahí debería aparecer nuestro plugin detectado, lo seleccionamos y damos click en Instalar y listo, deberá quedar instalado nuestro plugin.

6- En cualquier método que uses para la instalación el siguiente pase será activar y configurar nuestro plugin, para esto nos vamos a Extensiones -> Plugins y buscamos Add custom code Plugin y damos click en el nombre de el para entrar a la configuración de nuestro plugin, ahi nos aparecerán los 4 campos que declaramos en nuestro manifiesto. Lo siguiente será llenar los códigos que necesitemos agregar.

NOTA: Si agregamos archivos estos deben tener una ruta absoluta, por ejemplo: http://www.tusitio.com/template/tutemplate/js/custom.js


Espero haya sido claro en la explicación y sobre todo, que te sirva, si tienes dudas contáctame.

Sígueme en Twitter: @Javi_Mata