Incluir archivos en plantillas

En este artículo se describen las distintas maneras de incluir un archivo dentro de otro documento de Prontus.

Muchas veces se hace necesario incluír archivos (ya sean documentos Prontus o no) dentro de una plantilla Prontus. Por ejemplo, los módulos Prontus de header y footer suelen ser portadas Prontus incluídas dentro de todas las demás plantillas. Hay tres alternativas básicas:

Includes Prontus

Tal como la marca %%macro()%%, la marca Prontus %%include()%% permite insertar un documento de Prontus dentro de otro. A diferencia de %%macro()%%, esta marca no procesa el contenido del documento incluído. A diferencia de la marca %%macro()%%, permite especificar una ruta, mientras que %%macro()%% buscará en un directorio específico dependiente del tipo de plantilla. Puede verse más documentación y ejemplos sobre la marca %%include()%% en el enlace sobre el tema.

Include PHP

A diferencia de la marca Prontus %%include()%%, este tipo de instrucción se procesa en el momento en que el lector abre el artículo o portada, no al momento de guardar el artículo desde el CPAN Prontus. Esto significa que los dos documentos son independientes: si uso include para embeber el header dentro de los artículos, cuando hago un cambio en el header basta con guardarlo, no debo regenerar todos los artículos que lo incluyen. Valga como ejemplo de uso (notar que se pueden usar marcas Prontus dentro del código PHP):

<?php
$ruta_al_archivo = "%%_PRONTUS_ID%%/site/edic/base/port/_m_header.html";
if (is_file($ruta_al_archivo)) {
    include $ruta_al_archivo;
}
?>

La contra de usar includes con código PHP es que activan el intérprete PHP, lo cual puede afectar el rendimiento del sitio sin otra ventaja. Por supuesto, si en el sitio se usa PHP para otros propósitos, esta es una alternativa viable.

Include SSI

El lenguaje de lado servidor SSI (server side includes) permite entre otras cosas especificar archivos a incluír. La funcionalidad ofrecida es la misma que con PHP, pero las instrucciones SSI son mucho más eficientes. Un ejemplo de uso:

<!--#include virtual="/%%_PRONTUS_ID/site/edic/base/port/_m_header.php" -->

<!--#include file="/%%_PRONTUS_ID/site/edic/base/port/_m_header.html" -->

La diferencia es que un include "virtual" espera un path especificado desde el directorio raíz del sitio en el servidor, mientras que la instrucción "include file" especifica el directorio relativo a la ruta del documento del include.

El inconveniente de las instrucciones SSI es que son incompatibles con el uso de PHP. Si se usan includes SSI no se puede usar código PHP en las plantillas.

Hay más información sobre las posibilidades de las instrucciones SSI en el siguiente artículo: Instrucciones SSI.