Prontus functions

Prontus te permite extender su funcionamiento creando funciones para procesar el contenido de tus artículos como nuevas marcas de función.

Publicado: Martes 25 de septiembre de 2018 por Equipo de desarrollo AltaVoz
Última modificación: Jueves 20 de agosto de 2020

Las marcas Prontus permiten crear e invocar funciones que tú definas para extender la funcionalidad de Prontus, por ejemplo para manipular datos en plantillas de algún modo específico. Por ejemplo, podrías necesitar en tu sitio una hipotética función que toma la marca _FECHAP (la fecha de publicación de un artículo en formato aaaammdd) y la procesa para devolver la fecha en inglés en formato largo, como por ejemplo "Friday, 05 October 2018".

Implementación

Para poder extender Prontus creando Prontus Functions debes tener acceso al directorio /[webroot]/cgi-cpn/. Allí, debes buscar el archivo lib_custom-sample.pm y copiarlo o renombrarlo a lib_custom.pm. Dentro de ese archivo debes agregar tus nuevas funciones. Este archivo, como el resto de Prontus, está escrito en lenguaje Perl. El que sigue es un ejemplo de Prontus function extraído de él:

# recibe una fecha en formato aaaammdd
# devuelve una fecha en formato largo en inglés, como "Friday, 05 October 2018"
sub fechapEngLong {
    use Time::Local qw(timelocal_nocheck);
    my $aaaammdd = $_[0]; # fechap
    return '' if ($aaaammdd =~ /^9999/);
    return '' if ($aaaammdd !~ /^\d{8}$/);

    my (@dias) = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
    my (@meses) = ('January','February','March','April','May','June','July',
    'August','September','October','November','December');
    $aaaammdd =~ /(\d\d\d\d)(\d\d)(\d\d)/;
    my ($dia,$mes,$ano) = ($3,$2,$1);
    my ($tiempo) = &Time::Local::timelocal_nocheck(0,0,12,$dia,($mes - 1),($ano - 1900)) || return '';
    my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($tiempo);
    $dia = $dia + 0; # Para extraer los ceros de adelante.
    
    return $dias[$wday] . ", " . $meses[($mes - 1)] . ' ' . $dia . " $ano";
}

Para usar una Prontus function en una plantilla debes invocarla con el prefijo _PF_ y pasarle el parámetro, en este caso la marca _FECHAP:

%%_pf_fechapenglong('%%_fechap%%')%%

Es posible usar las Prontus functions en plantillas y también en el texto y asunto de los mensajes de auto-respuesta enviados al usuario mediante los formularios Prontus. Por ejemplo, es posible implementar fácilmente un sistema de validación de e-mail con una URL única que el usuario debe visitar.

Aunque los parámetros pasados a las Prontus functions pueden incluir marcas Prontus, no debes usar marcas de lógica dentro de un parámetro. Por ejemplo, esto no funcionará:

%%_pf_fechapenglong('%%if(_fechap < 20120507)%%%%_%fechap%%%%/if%%')%%