Creación de plugins en Joomla 1.6

Joomla - Tutoriales

puzzleEste tutorial explica cómo programar desde cero un plugin para Joomla 1.6 a través de un ejemplo, en concreto, se realizará un plugin de contenidos para Joomla 1.6

Para desarrollar un plugin será necesario al menos dos archivos: Un archivo XML y un archivo PHP. También se puede incluir un archivo INI para poder adaptar el plugin a diferentes idiomas

 

 

Archivo XML

El archivo XML debe tener el mismo nombre que el archivo PHP. Este archivo siempre comienza con la etiqueta XML y es importante definir que está escrito en el formato UTF-8. En el tipo definiremos que es un plugin y en el grupo definiremos que el plugin está dentro del grupo de Plugins de Contenido.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install
PUBLIC "-//Joomla! 1.5//DTD plugin 1.0//EN" "http://www.joomla.org/xml/dtd/1.5/plugin-install.dtd">
To define that the plugin has to be a content plugin, add this line:
<source lang="xml"><install version="1.6" type="plugin" group="content">

Después de esto, añadiremos un poco de información acerca del autor:

<name>Name of your Content Plugin</name>
<creationDate>Created Date</creationDate>
<author>Your name</author>
<authorEmail>Your e-mail address</authorEmail>
<authorUrl>Your website</authorUrl>
<copyright>Copyright</copyright>
<license>License, for example GNU/GPL</license>
<version>Version of the plugin</version>
<description>Description of the Plugin; showed with installation and when editing
the Plugin in the Plugin Manager</description>

Y ahora indicamos el archivo PHP para poder acceder al contenido del plugin. El nombre de este archivo debe ser el mismo que el nombre del XML. También se pueden añadir más archivos, por ejemplo una imagen. Sólo se tiene que añadir otra fila entre <files> y </files>.

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

Para adaptar el plugin a los diferentes idiomas, usaremos archivos de idioma INI.

<languages>
<language tag="en-GB">en-GB.plg_content_nameofplugin.ini</language>
</languages>

Opcionalmente también, se puede añadir algunos parámetros para el plugin:

<params>
<param name="paramname" type="typeofparameter" default="defaultsetting" label="title" description="description"/>
</params>

  • name: El nombre del parámetro. Necesario a la hora de crear el archivo PHP.
  • type: Se puede elegir entre varios tipos de parámetros.
  • default: La configuración por defecto para este parámetro.
  • label: El nombre que se mostrará de este parámetro.
  • description : Descripción.

Y es importante no olvidar de poner fin al archivo XML con la siguiente etiqueta:

</ Install >

Archivo PHP

Inicie el archivo PHP con el siguiente código en cualquier archivo PHP:

<?php
defined( '_JEXEC' ) or die( 'Restricted access' );

Esto impide que se tenga acceso directo a este archivo PHP.

Después de esto, se debe importar el archivo general plugin de Joomla! :

jimport( 'joomla.plugin.plugin' );

Para indicar que se está escribiendo un plugin, se añade el siguiente código.

class plgContentNameofplugin extends JPlugin {

Ahora se escribirá un plugin (es importante tener en cuenta que será un ejemplo genérico)

function plgContentNameofplugin ( y $ asunto , $ params )
{
parent:: __construct ( $ asunto , $ params ) ;
}

Se tiene que elegir en qué momento el plugin debería ser ejecutado. Se puede elegir entre los siguientes:

  • onContentBeforeSave
  • onContentAfterSave
  • onContentPrepare
  • onContentAfterTitle
  • onContentBeforeDisplay
  • onContentAfterDisplay

onContentBeforeSave

Los parámetros article y isNew deben contener lo siguiente:

  • article: Una referencia al objeto JTableContent que se está guardando el cual contiene los datos del artículo.
  • isNew: Un booleano que se establece en true si el contenido está a punto de ser creado.

function onContentBeforeSave( &$article, $isNew )
{
global $mainframe;
//add your plugin codes here
return true;
}

onContentAfterSave

Los parámetros article y isNew deben contener lo siguiente:

  • article: Una referencia al objeto JTableContent que se guardó, que contiene los datos del artículo.
  • isNew: Un booleano que se establece en true si el contenido se ha creado.

function onContentAfterSave( &$article, $isNew )
{
global $mainframe;
//add your plugin codes here
return true;
}

onContentPrepare

Los parámetros article, params y limitstart debe contener lo siguiente:

  • article: Una referencia al artículo que se está representando por la vista.
  • params: una referencia a una matriz asociativa de los parámetros pertinentes.
  • limitstart: Un entero que determina la "página" del contenido que se va a generar.

function onContentPrepare( &$article, &$params, $limitstart )
{
global $mainframe;
//add your plugin codes here
//no return value
}

onContentAfterTitle

Los parámetros article, params y limitstart debe contener lo siguiente:

  • article: Una referencia al artículo que se está representando por la vista.
  • params: una referencia a una matriz asociativa de los parámetros pertinentes.
  • limitstart: Un entero que determina la "página" del contenido que se va a generar.

function onContentAfterTitle( &$article, &$params, $limitstart )
{
global $mainframe;
//add your plugin codes here
return '';
//return a string value. Returned value from this event will be displayed in a placeholder.
// Most templates display this placeholder after the article separator.
}

onContentBeforeDisplay

Los parámetros article, params y limitstart debe contener lo siguiente:

  • article: Una referencia al artículo que se está representando por la vista.
  • params: una referencia a una matriz asociativa de los parámetros pertinentes.
  • limitstart: Un entero que determina la "página" del contenido que se va a generar.

function onContentBeforeDisplay( &$article, &$params, $limitstart )
{
global $mainframe;
//add your plugin codes here
return '';
//return a string value. Returned value from this event will be displayed in a placeholder.
// Most templates display this placeholder after the article separator.
}

onContentAfterDisplay

Los parámetros article, params y limitstart debe contener lo siguiente:

  • article: Una referencia al artículo que se está representando por la vista.
  • params: una referencia a una matriz asociativa de los parámetros pertinentes.
  • limitstart: Un entero que determina la "página" del contenido que se va a generar.

function onContentAfterDisplay( &$article, &$params, $limitstart )
{
global $mainframe;
//add your plugin codes here
return '';
//return a string value. Returned value from this event will be displayed in a placeholder.
// Most templates display this placeholder after the article separator.
}

Archivo INI

Para la adaptación del plugin a los diferentes idiomas se utilizan los archivos INI. Se puede agregar todo el texto que muestra el plugin en este archivo. Sólo hace falta añadir en el archivo PHP JText:: _ ('cadena').

El archivo INI se inicia con algo como esto:

# $Id: en-GB.plg_content_nameofplugin.ini
# Joomla! Project
# Copyright (C) 2005 - 2007 Open Source Matters. All rights reserved.
# License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
# Note : All ini files need to be saved as UTF-8 - No BOM

Por supuesto, también se podría añadir otra información, como el autor.

El contenido del archivo INI será de la siguiente forma:

MODE=Mode
SELECT HOW THE EMAILS WILL BE DISPLAYED=Select how the e-mails will be displayed
NONLINKABLE TEXT=Nonlinkable text
AS LINKABLE MAILTO ADDRESS=As linkable mailto address

En Ayuda Joomla | Programar módulos de Joomla 1.6

En Ayuda Joomla | Programar componentes para Joomla 1.6

Sobre el autor

Xavier Pacheco es Ingeniero Técnico en Informática de Sistemas. Forma parte del equipo de WebActualizable (www.webactualizable.com), empresa especializada en el desarrollo de proyectos sobre Joomla


blog comments powered by Disqus

Aprende a crear todo tipo de sitios web

Sigue este blog por

Suscríbete a Ayuda Joomla y recibe las actualizaciones de forma automática.

RSS Facebook Twitter

Si te suscribes a nuestra newsletter recibirás una recopilación de 16 plantillas para Joomla gratuitas y cupones de descuento para extensiones y servicios premium de Joomla

Pack de plantillas Ayuda Joomla

Mi email es:

Patrocinadores

Plantillas Joomla
programacion y diseño joomla
Plantillas joomla
Monito Joomla
Comunidad Hispana K2

Comentarios recientes

Artículos relacionados

Zona de Usuarios

Estadísticas

mod_vvisit_counterHoy6230
mod_vvisit_counterAyer4506
mod_vvisit_counterEsta semana6230
mod_vvisit_counterEste mes120050
Suscríbete al feed de Ayuda Joomla