Plugins
Prontus te permite extender su funcionalidad incorporando tus propios paquetes de plugins al panel de administración.
Última modificación: Viernes 9 de septiembre de 2022
La funcionalidad de plugins te permite implementar funcionalidades complejas en el panel de administración de Prontus, sin necesariamente tener acceso al servidor para crear nuevas cgis en los directorios en que normalmente residen. Para utilizarlos se deben habilitar en al configuración general de Prontus, en la opción HABILITAR_PLUGINS
Debes crear tus plugins como paquetes en sus propio directorios dentro del directorio /[prontus_dir]/cpan/prontus_plugins/
.
Supongamos que estás creando un plugin que llamarás "Plugin de Ejemplo". Para empezar, crearás el directorio /[prontus_dir]/cpan/prontus_plugins/plugin_ejemplo
(el nombre del directorio no necesariamente debe corresponder con el nombre del plugin). En ese directorio debes implementar al menos lo siguiente:
- un archivo html con la base para el plugin. Esta será la página principal del plugin, y se cargará al acceder al plugin desde la sidebar del panel de administración
- un archivo
plugin.json
con el siguiente formato:{
"profiles": [1,2], "plugin": "ejemplo.html", "nombre": "Plugin de Ejemplo", "version": "0.1", "habilitado": true, "embebido": true, "css": ["plugin_ejemplo.css", "plugin_ejemplo_2.css"], "js": ["Plugin_ejemplo.class.js"] }
En este objeto JSON, las opciones tienen el siguiente significado:
'profiles'
son los perfiles que pueden tener acceso a este plugin en el panel de administración , perfiles 1: administrador, 2: editor, 3:redactor; por defecto el administrador siempre puede ver los plugins instalados. Para permitir que todos los perfiles tengan acceso se puede utilizar el valor 0 como perfil.'plugin'
es el nombre del archivo html'nombre'
es el nombre del plugin para usar en el sidebar del panel de administración y como titular de la página'css' y 'js'
son listas de archivos que se asume existen dentro de los directorios css y js-local del plugin'embebido'
permite especificar si el plugin debe cargarse embebido dentro de la plantilla prontus_admin_plugins.html o por sí solo'habilitado'
permite activar o desactivar el plugin
Al deshabilitar el plugin con la opción "habilitado", Prontus no lo contará entre los que desplegará en la sidebar, ni permitirá que accedas a él.
Puedes implementar formularios dentro del plugin, preferentemente usando requests AJAX a un script en lenguaje PHP que deberás adjuntar dentro del directorio de tu plugin.
Una alternativa para aprovechar la potencia de Prontus es implementar el script de lado server como una CGI en lenguaje Perl. Si deseas implementar nuevas CGIs debes tener en cuenta que por motivos de seguridad y de configuración, los scripts .cgi
solamente funcionarán dentro de los directorios /cgi-bin y /cgi-cpn
(y sus subdirectorios). Por esto, si necesitas esta funcionalidad, te recomendamos crear un subdirectorio /cgi-cpn/prontus_plugins/[nombre_del_plugin]/
con tus CGIs dentro. En el ejemplo, crearías el subdirectorio /cgi-cpn/prontus_plugins/plugin_ejemplo/
y dentro la CGI plugin_ejemplo.cgi
. Esta CGI se vería aproximadamente de este modo:
#!/usr/bin/perl
use strict; use warnings;
BEGIN {
use FindBin '$Bin';
my $pathLibsProntus = $Bin;
unshift(@INC,$pathLibsProntus);
$pathLibsProntus =~ s/\/[^\/]+\/[^\/]+$//;
unshift(@INC,$pathLibsProntus); # Para dejar disponibles las librerias de prontus
}
use utf8;
# Captura STDERR
use lib_stdlog;
&lib_stdlog::set_stdlog($0, 51200);
use glib_cgi_05;
use glib_html_03;
use lib_prontus;
main: {
&lib_prontus::setUtf8();
# Rescatar parametros recibidos
&glib_cgi_05::new();
$prontus_varglb::PRONTUS_ID = &glib_cgi_05::param('_prontus_id');
# ... resto de tu código
&glib_html_03::print_json_result(1, 'Todo terminó bien!');
# o, en caso de error:
# &glib_html_03::print_json_result(0, 'Encontré un error!');
}
Este fragmento de código sigue el formato de las demás CGIs de Prontus, y te proporciona los mismos beneficios:
- crea un log de errores automáticamente manejado en
/cgi-cpn/prontus_plugins/plugin_ejemplo/prontus_error_log/plugin_ejemplo.cgi.error.log
- gestiona los parámetros recibidos via request HTTP GET o POST mediante la función
glib_cgi_05::param()
- te permite acceder a las variables de configuración del servidor contenidas en
$prontus_varglb
Puedes devolver datos desde la CGI en formato JSON usando la función print_json_result()
de la librería cgi-cpn/glib_html_03.pm
.
Una nota final: ¡recuerda que las CGIs deben tener permisos de ejecución para poder funcionar!
Conceptos Básicos
¿Qué es Prontus?
Estructura de directorios
Glosario
Navegadores soportados
Tutoriales
Instalación de Prontus CMS
Implementar un nuevo sitio en Prontus
Cómo crear un FID
Cómo crear una plantilla de artículo
Cómo crear una plantilla de portada
Cómo crear plantillas de formulario
Cómo implementar un formulario
Cómo implementar un buscador
Cómo implementar un buscador Elasticsearch
Cómo crear una plantilla de taxonomía
Cómo crear plantillas de tags
Cómo crear una plantilla de listado
Cómo crear una plantilla de tags jerárquicos
Implementar carga de videos en Prontus
Integración de Redes Sociales
Instalación y Configuración
Requerimientos
Configuración del servidor
Base de datos
Asegurar la plataforma
Instalación con Wizard Prontus
Ajustes post-instalación
Archivos de configuración de Prontus
Friendly URLs
Friendly URLs para imágenes
SSI en Prontus
Logs de Eventos
Ejecutar procesos periódicamente con cron
Debugging
Plantillas
Plantillas de FID
Plantillas de artículo
Plantillas de portada
Plantillas de taxonomía
Plantillas de artículos relacionados
Plantillas de tags
Plantillas de listado
Plantillas de tags jerárquicos
Plantillas de mapa de taxonomía
Plantillas de mapa de tags
Marcas
Tipos de marcas
Diccionario de marcas
Marcas para texto
Marcas de lógica
Marcas de despliegue
Marca Menú y Panel
Parsing de marcas en formularios Prontus
Funcionalidades
Funcionalidades SEO en Prontus CMS
Multivistas
Galería de Imágenes
Buscador Multivista
Buscador
Buscador Elasticsearch
Calendarios
Imprimir artículos
Posting de contenidos
Plugins
Post-procesos
Prontus functions
Implementar copias de seguridad automáticas con Dropbox
Implementar múltiples ediciones
Regeneración masiva de artículos via línea de comandos