Tutoriales
Creación de plugins en Joomla 1.6
Este 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
- Plugins en Joomla 2.5
- Términos de Joomla 2.5
- Popup Anywhere - Ventanas modales en Joomla
- Módulos y plugins para Vituemart 2.0 en Joomla 1.7
- ¡Por fin! K2 disponible para Joomla 1.7
- Help Desk en Joomla 1.6 con RsTickets!Pro
- Cambiar los permisos a los ficheros y carpetas de Joomla
- Autenticación en Joomla 1.6
- Añadir código en Joomla 1.6 con Jumi
- Formularios en Joomla 1.6 con ChronoForms
- Importar usuarios en Joomla 1.6
- SQL Injection sobre Joomla 1.6.0
- Google Calendar en Joomla 1.6 con Gcalendar
- Creación de módulos en Joomla! 1.6
- Tutorial JoomSEF. Mejorar el posicionamiento de nuestra web Joomla en los buscadores
Artículos Recientes
- Migración de Joomla 1.5 a Joomla 2.5
- Joomla 2.5.4 - Actualización de seguridad
- El nuevo iPad es Joomlero
- Liberado Joomla 1.5.26
- Joomla 3.0: así será su interfaz
- ¿Tendrá Joomla 1.5 soporte hasta Septiembre de 2012?
- Gestión de extensiones en Joomla 2.5
- Plantillas en Joomla 2.5
- Plugins en Joomla 2.5
- Modulos en Joomla 2.5
Más Leidos
- Plantillas gratuitas para Joomla
- Contador de visitas para Joomla
- Plantillas tipo revista o periódico
- Insertar pdf en Joomla
- Como conocer la posición de un módulo en una plantilla
- Insertar código HTML en Joomla
- Tutorial de JoomlaPack - Realizar backups de Joomla (Parte 1)
- Galería de Imágenes para Joomla: Phoca Gallery
- Plantillas gratis para Joomla 1.7
- Crear mapa web o sitemap para Joomla con XMAP
Comentarios recientes
En el foro...
Artículos relacionados
- Requisitos de Joomla 1.5
- Joomla 1.6: los bloggers opinan
- Instalar y desinstalar extensiones, plantillas e idiomas en Joomla
- Plantillas gratuitas para Joomla
- Joomla 1.6 Alpha saldrá el próximo 22 de Junio
- Joomla llega a los 10 millones de descargas
- Preview del gestor de menús de Joomla 1.6
- Requisitos técnicos para Joomla 1.6 Alpha
- com_helloworld para Joomla 1.6
- Joomla 1.6 Beta 1 cuenta atrás...
- Ahorra espacio con Tabs & Slides para Joomla
- ¿Donde esta la Beta de Joomla 1.6?
- Todo que tienes que saber sobre Joomla
- Joomla 1.6 Alpha 2 ya esta disponible
- Se acerca Joomla 1.6 Beta
- Liberado Joomla 1.6 Beta 1
- Estilos de plantilla en Joomla 1.6
- Joomla 1.6 Beta 3
- Videotutoriales en Nosolocodigo y WebEmpresa
- Joomla 1.6 Beta 4
- Joomla 1.6 Beta 5
- Mastering Joomla! 1.5 Extension and Framework Development
- Liberado Joomla 1.6 Beta 6
- ¿Qué necesitas saber sobre Joomla 1.6? Niveles de control de accesos en la ACL de Joomla 1.6
- Liberado Joomla 1.6 Beta 7
- Liberado Joomla 1.6 Beta 8
- Liberado Joomla 1.6 Beta 9
- Liberado Joomla 1.6 Beta 10
- Plantillas Kunena gratis
- Joomla 1.5! Accesibility
- Liberado Joomla 1.6 Beta 12
- Liberado Joomla 1.6 Beta 11
- Molajo: una distribución basada en Joomla 1.6.
- Liberado Joomla 1.6 Beta 13
- Liberado Joomla 1.6 Beta 14
- Liberado Joomla 1.6 Beta 15
- Joomla 1.6 RC1 ya disponible
- Comparte tu opinión, comparte Joomla! 1.6, ¡envía tu vídeo!
- Joomla 1.6.0 GA - Versión estable
- 10 extensiones joomla 1.6
- Migrar Joomla 1.5 a Joomla 1.6
- AdminPraise Lite - Plantilla de administración para Joomla 1.6
- Paquetes de idioma español para Joomla 1.6
- Fiesta Drupal 7 en Málaga el 14 de Enero
- 2 Plantillas Joomla 1.6 gratis
- Migración de Joomla! 1.5 a Joomla! 1.6 con jUpgrade
- Template de Joomla 1.6 ButterflyMeadow
- Instalar Joomla! 1.6 en Windows con XAMPP
- Galerías de imágenes en Joomla 1.6 con Ozio Gallery
- ¿Lo sabes todo sobre Joomla?
- Mapas de Google en Joomla 1.6 con Phoca Maps
- Tutorial Virtuemart - Crear una tienda online en Joomla
- Joomla 1.6 ó Joomla 1.5 ¿Cual uso?
- Crear una red social con Community Builder
- Flash en artículos y módulos Joomla 1.6
- Desarrollo de componentes para Joomla 1.6. Backend Básico
- Aprende a usar Joomla 1.6
- Descargas en Joomla 1.6 con Phoca Download
- Actualizar Joomla 1.6. Guía paso a paso
- Sistema de puntuación en Joomla 1.6 con Alpha User Points
- Tutorial de Sobi2 - Creación de un directorio de contenidos
- Joomla 1.6: las comunidades opinan
- K2 estará disponible para Joomla 1.6
- Mejoras SEO en Joomla 1.6
- Extensiones SEO para Joomla! 1.6
- Posiciones de los módulos en Joomla 1.6 con tp=1
- Multilenguaje en Joomla 1.6
- Sistemas de menú para Joomla 1.6
- 10 templates de Joomla 1.6 gratis
- Joomla 1.6: las empresas opinan
- Google Calendar en Joomla 1.6 con Gcalendar
- SQL Injection sobre Joomla 1.6.0
- Formularios en Joomla 1.6 con ChronoForms
- Joomla 1.6 First Look [Review]
- Añadir código en Joomla 1.6 con Jumi
- Instalar plantillas en Joomla 1.6
- Help Desk en Joomla 1.6 con RsTickets!Pro
- Creación de plantillas para Joomla 1.6
- Mandar emails a usuarios en Joomla 1.6
- Tutorial CiviCRM: CRM para Joomla 1.6
- Vídeos en Joomla 1.6 con AllVideosReMix
- Plantillas para Joomla 1.7
- Joomla 1.6 Guía para principiantes. Libro Joomla gratuito
- Liberado Joomla 1.6.4
- Tutorial de K2 en Joomla 1.6
- Windows Live Writer en Joomla 1.6 con MovableyType XMLRPC
- Partilhator - Social Bookmarking
- Liberado Joomla 1.6.5
- Ofertas de empleo en Joomla 1.6 con Job Board
- Liberado Joomla 1.7.0
- Gestión de proyectos en Joomla 1.6 con Projectfork
- Nueva estrategia de desarrollo de Joomla
- Restringir el acceso a los contenidos en Joomla 1.6
- Creación de plantillas para Joomla 1.6 y 1.7
- Termina el ciclo de vida de Joomla 1.6
- ¡6 años junto a Joomla!
- Google +1 en Joomla
- Review del libro Joomla Explained
- Tienda online en Joomla 1.7 con JoomShopping. Empieza a vender (2/3)
- ¡Por fin! K2 disponible para Joomla 1.7
- Tienda online en Joomla 1.7 con JoomShopping. Módulos, plugins y addons (3/3)
- Tienda online en Joomla 1.7 con JoomShopping. Configuración del componente (1/3)
- Popup Anywhere - Ventanas modales en Joomla
- Términos de Joomla 2.5











