Debugging
En este artículo te mostramos algunas técnicas que te servirán para encontrar y corregir errores cuando estás implementando un sitio Prontus.
Publicado: Martes 25 de septiembre de 2018 por
Adriano Varoli Piazza
Última modificación: Viernes 26 de octubre de 2018
Última modificación: Viernes 26 de octubre de 2018
Debug de errores en plantillas
Típicamente los errores que encuentres en plantillas ocurren al usar marcas Prontus incorrectamente:
- si intentas usar una marca de texto (aquellas con prefijo "
txt_
" o "vtxt_
") sin el prefijo. Esto en particular vale en las condiciones de los operadores lógicos. Por ejemplo, esto nunca mostrará el código que pongas dentro de la marcaIF
:%%if(_bajada ~ Viva Chile tu cielo)%%
porque el nombre de la marca es
...
%%/if%%_txt_bajada
, no_bajada
, entonces la condición (si la marca_txt_bajada
contiene el texto "Viva Chile tu cielo
") siempre será falsa. - Si no cierras correctamente una marca, como por ejemplo en el código siguiente
%%_txt_titular.raw% (aquí deberían haber dos '%')
verás el siguiente error:*** Error en Marcas Prontus ***
(estamos trabajando para hacer menos críptico este mensaje). - En Prontus 11 era posible quitar el prefijo
txt_
ovtxt_
de una marca de texto para mostrar el texto limpio, sin etiquetas HTML. En Prontus 12 esto ya no funciona, debes usar la salida.raw
:<h1>%%_txt_titular.raw%%</h1>
- Si no cierras correctamente una marca de lógica, como
IF
oNIF
, Prontus escribirá un mensaje de error en la página avisándote, como por ejemplo"Error en marcas if: la cantidad de aperturas[4] es distinta de la cantidad de cierres[3]"
- Si usas la marca
IFVC
en unLOOP
sin acompañarla de al menos unIFV
final, verás un error como el siguiente:Error en Loop: Sentencia IFVC debe ir acompañada de a lo menos un IFV.
Debug de errores en CGIs
Si estás extendiendo las funcionalidades de Prontus, ya sea escribiendo postprocesos, nuevas soluciones o nuevas CGIs para el núcleo de Prontus, te servirán las siguientes consideraciones:
- En tus CGIs y módulos Perl siempre deberías usar las directivas
use strict; use warnings;
. Esta es la base para evitar muchos dolores de cabeza. - Si creaste la CGI extendiendo otra CGI existente, tendrás acceso a un log de errores específico. El código relevante es el siguiente:
Estas líneas hacen que Prontus genere un archivo de log específico. Por ejemplo, si creas un nuevo postproceso "# Captura STDERR use lib_stdlog; &lib_stdlog::set_stdlog($0, 51200);
generar_correlaciones.cgi
" en/cgi-cpn/pproc/
, Prontus generará un nuevo archivo/cgi-cpn/pproc/prontus_error_log/generar_correlaciones.cgi.error.log
y lo actualizará cada vez que se gatille esa CGI. Además, Prontus rotará los archivos de log automáticamente. Mientras programas y haces pruebas puedes tener abierta una terminal con la salida de ese log usando el siguiente comando:tail -f /cgi-cpn/pproc/prontus_error_log/generar_correlaciones.cgi.error.log
- Si la CGI falla completamente por un error de sintaxis de Perl posiblemente no veas ninguna salida, ni en el navegador ni en la consola. Para validar la sintaxis de tus scripts Perl puedes usar el comando
[usuario del webserver]$ perl -cw [ruta al script]
que te devolverá ya sea un mensaje "Syntax OK" o una lista con los errores encontrados. - Si tu CGI parece no funcionar para nada, asegúrate que tenga permisos de ejecución. Puedes darle los permisos correctos con el comando
[usuario del webserver]$ chmod 755 [ruta al script]
Artículos Relacionados
- Marcas condicionales ifv, nifv e ifvc Las marcas ifv, nifv e ifvc permiten evaluar el valor de la variable de iteración de un loop contra...
- Marcas condicionales if y nif Las marcas if y nif permiten implementar comparaciones y condiciones para mostrar u ocultar bloques...
- Diccionario de marcas Prontus Este es el listado completo de las marcas que puedes usar o definir en Prontus. Dentro de Prontus...
- Post-procesos Los post-procesos son scripts que se ejecutan luego de un proceso general, por ejemplo guardar una...
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