Principio general - versión archivada

Este artículo sólo es válido hasta SPIP 1.8.3, volviéndose obsoleto a partir de SPIP 1.9. Para una versión actualizada de este artículo, ver aquí

Sin embargo, la lectura subsecuente no es inútil. Es necesario tener en cuenta lo que se dice para los ficheros html, considerando que los archivos php3 desaparecen y las URL cambian.

Todo el contenido de un sitio que se maneja con SPIP está almacenado en una base de datos mySQL. Para mostrar estas informaciones a quien visita el sitio es necesario realizar la operación que consiste en recuperarlas, organizarlas y colocarlas conforme a la paginación para presentarlas como una página HTML en el navegador.

Esta operación es habitualmente bastante dificultosa:
-  es necesario conocer PHP y mySQL, y escribir «rutinas» relativamente complejas;
-  la integración de tales rutinas en una página HTML elaborada es bastante dificultosa;
-  hay que tomar en cuenta criterios de rendimiento: el recurso sistemático a solicitudes mySQL y código PHP en una página consume importantes recursos, ralentiza la visita y en casos extremos provoca que se cuelgue el servidor.

SPIP propone una solución completa para resolver estas dificultades:
-  la paginación del sitio se efectúa a través de páginas HTML denominadas esqueletos, que contienen las instrucciones simplificadas que permitirán indicar donde y como se coloca en la página la información extraída de la base de datos;
-  un sistema de cache permite almacenar cada página y así evitar provocar llamadas a la base de datos con cada visita. No sólo se reduce la carga del servidor sino que la velocidad se acelera considerablemente, y además un sitio SPIP continúa siendo utilizable incluso si la base mySQL está colgada.

Para cada tipo de documento, un par de archivos

El interés (y el límite) de un sistema de publicación automatizado es que no se volverá definir una interfaz diferente en HTML para cada página aislada. Por ejemplo todos los artículos tendrán la misma interfaz, simplemente el sistema colocará informaciones diferentes en este grafismo (veremos más adelante que SPIP permite sin embargo cierta flexibilidad).

La ventaja de esta manera de proceder es evidente: se define un formato-tipo (esqueleto) para, por ejemplo, todos los artículos y el sistema fabricará cada página individual colocando automáticamente el título, el texto, los enlaces de navegación... de cada artículo.

Para cada tipo de documento, SPIP solicita dos archivos: un archivo .php3 y un archivo .html. Así, tras instalar SPIP encontrarás las parejas: «article.php3 / article.html», «rubrique.php3 / rubrique.html», etc.

Se puede, naturalmente, modificar estas parejas y crear otras. Desde [SPIP 1.8.2], sin embargo, existe un archivo page.php3 utilizable para todos los tipos de documento que se pueden crear.

El principio de funcionamiento de la caché

La llamada de una página específica se realiza a través del archivo PHP. Por ejemplo, para llamar al artículo n°5, la URL correspondiente es: http://www.misitio.net/article.php3?id_article=5

1. El archivo solicitado es por tanto article.php3, con el parámetro id_article=5.

2. El archivo article.php3 es un archivo PHP; su primera tarea consiste en verificar en la carpeta /CACHE de tu servidor si existe ya un archivo correspondiente a este artículo.

2bis. Si el archivo existe en /CACHE, article.php3 verifica su fecha de creación. Si es suficientemente reciente lo devuelve directamente a quien lo solicita. El procedimiento de consulta termina ahí.

3. Si el archivo no existe en /CACHE (en el caso, por ejemplo, de la primera visita al artículo) o bien si su fecha de creación es demasiado antigua, SPIP pone en marcha el cálculo de esta página.

4. Es en este momento cuando la página article.html se carga y se analiza. Este archivo contiene la paginación correspondiente a este tipo de documento. Se trata de HTML completado con indicaciones que permiten colocar los elementos extraídos de la base de datos. En función de los elementos solicitados por article.html, SPIP buscará las informaciones necesarias extraídas de la base de datos mySQL y las insertará en las zonas previstas.

5. También se fabrica un archivo por article.php3, a partir de la descripción contenida en article.html, con los elementos extraídos de la base de datos. Este archivo se guarda en la carpeta /CACHE y se reenvía a la persona visitante de la página.

En una visita siguiente, si el tiempo que transcurre entre una visita y otra es suficientemente corto, será el nuevo archivo almacenado en /CACHE el que se entregue sin necesidad de realizar un nuevo cálculo a partir de la base de datos. En caso de que se cuelgue la base de datos, se seguirá mostrando este archivo, incluso si es «demasiado antiguo», a quien lo solicite.

Nota. Se observa aquí que cada página del sitio se introduce en la cache individualmente y que cada actualización está provocada por las visitas del sitio. No existe la opción de actualizar todas las páginas del sitio a la vez de manera regular (ya que este tipo de «gran maniobra» provoca sobrecarga del servidor e incluso a veces acaba colgándolo).

El archivo PHP

El archivo .php3 es muy simple. Por ejemplo, article.php3 contiene únicamente:

Su único objetivo es establecer dos variables ($fond y $delais) y llamar al archivo que inicia el funcionamiento de SPIP (inc-public.php3).

La variable $fond es el nombre del archivo que contiene la descripción de la puesta en página (el esqueleto). Allí, dado que $fond="article", el archivo de descripción se incluirá en article.html [1]. Nótese que en la variable $fond, no se indica la terminación .html.

Nota: El interés de elegir por si mismo el nombre del archivo de esqueleto (que se hubiera podido deducir automáticamente del nombre del archivo .php3 es para cuando sea necesario utilizar otro nombre. Se produce para no remplazar, eventualmente, archivos HTML que podrían subsistir de una antigua versión del sitio que no se desea suprimir. Si existe, de una versión anterior del sitio, un archivo article.html que no se desea borrar se utilizará, por ejemplo, un archivo esqueleto para SPIP titulado spip-article.html, y se colocará en article.php3:
$fond="spip-article".

La variable $delais es el tiempo máximo para la utilización del archivo almacenado en /CACHE. Este tiempo se fija en segundos. Un plazo de 3600 corresponde a una hora; el plazo de 24*3600 sería de 24 horas.

Se escogerá este valor en función de la frecuencia de actualización de contenidos en el sitio (nuevos artículos, nuevas notas breves...). Un sitio actualizado varias veces al día podría adoptar un plazo de una hora; un sitio en el que se publican varios artículos por semana podría adoptar un plazo mucho más largo. Por otro lado también es importante el contenido de las páginas: si utilizas la sindicación del contenido de sitios frecuentemente actualizados, sin duda querrás adaptar tu propio plazo al de los sitios referenciados.

Nota. Algun@s webmaster/webmisstres sucumben a la tentación de fijar plazos irrisorios (algunos segundos) para que el sitio corresponda muy exactamente, a cada instante, a las últimas modificaciones de la base de datos. En este caso, pierdes todas las ventajas del sistema de la caché: las visitas se ralentizan notablemente e incluso al límite, en sitios muy visitados, puedes provocar que la base de datos se cuelgue (o ser expulsado por quien alberga tu sitio, porque estás monopolizando la potencia de su servidor...).
Nota. Otra razón que parece animar a webmasters/webmisstres a fijar un plazo muy corto es la presencia de foros en su sitio. Para que las contribuciones sean visibles desde que se envían creen que es necesario reducir el plazo de actualización. Es inútil. SPIP maneja automáticamente este aspecto; cuando se envía una contribución al foro la página correspondiente se borra de la caché y se actualiza inmediatamente sea cual sea el plazo establecido para esta página.

Desde [SPIP 1.8.2], se puede utilizar un mismo archivo .php3 para todos los esqueletos. Se trata del archivo page.php3 que se encuentra en la raíz del sitio web. Es un poco más complejo que el descrito más arriba, pero cumple la misma función. Cuando se utiliza, las variables $fond y $fond pueden pasarse como parámetros, por ejemplo: http://www.misitio.org/page.php3?fond=monsquelette&id_rubrique=12

El archivo .HTML

En SPIP, los archivos .html se llaman esqueletos. Son ellos los que describen la interfaz gráfica de las páginas.

Estos archivos se crean directamente en HTML a lo que se suman instrucciones que permiten indicar a SPIP donde deberá colocar los elementos extraídos de la base de datos (del tipo: «colocar el título aquí», «situar en este lugar la lista de artículos que se refieren al mismo tema», etc.).

Las instrucciones de colocación de los elementos se realizan en un lenguaje específico explicado en este manual de uso. Este lenguaje constituye la única dificultad de SPIP.

«¿Otro lenguaje?» Pues sí, vas a tener que aprender un nuevo lenguaje. Sin embargo, no es muy complicado y permite crear interfaces complejas muy rápidamente. En relación a PHP/mySQL, verás que te permite ganar mucho tiempo (sobre todo: es mucho más simple). Se trata de un lenguaje de marcas (markup language), es decir, un lenguaje utilizando códigos similares al HTML.

Nota. De la misma manera que se aprende HTML inspirándose en el código fuente de los sitios que se visitan, puedes inspirarte en los esqueletos utilizados por otros sitios que funcionan con SPIP. Basta con buscar el archivo « .html » correspondiente. Por ejemplo, puedes ver el esqueleto de los artículos de uZine (visualizar el código fuente para obtener el texto del esqueleto).

Una interfaz diferente en el mismo sitio

Ante todo cabe mencionar que es posible crear varias parejas de archivos para el mismo elemento lógico (artículos, secciones, ...). Por ejemplo puedes crear archivos para visitar un mismo artículo con diferentes interfaces article.php3/html para el formato normal, imprimir.php3/html para el mismo artículo en un formato adaptado a la impresión, articulo-texto.php3/html para el artículo en un formato texto (adaptado a quienes tienen problemas de visión, por ejemplo), article-heavy.php/html con una interfaz pesada adaptada a una conexión de alta velocidad, etc.

Una interfaz diferente según las secciones (rubriques) Se puede, para un mismo tipo de documento, crear esqueletos diferentes según las secciones del sitio. Se trata de crear simplemente nuevos archivos .html en función de las secciones (es inútil, aquí, modificar el archivo .php3, nos contentaremos con jugar con los nombres de los archivos de esqueleto).

Alcanza con completar el nombre del archivo esqueleto con «-numero» (guión seguido de un número de sección). Por ejemplo si creas un archivo: article-60.html, todos los artículos contenidos en la sección n°60 utilizarán este esqueleto (y no el esqueleto por omisión article.html). Atención: el número indicado es el de una sección («rubrique»). Si esta sección 60 contiene sub-secciones, los artículos contenidos en estas sub-secciones utilizarán igualmente este nuevo esqueleto article-60.html.

Nota: En nuestro ejemplo, también nos interesará sin duda crear un rubrique-60.html, un breve-60.html, etc. para acompañar el cambio de formato de esta sección.

-  Una interfaz para un sola sección. (SPIP 1.3) Se puede crear una interfaz que se aplique sólo a una sección, pero no a sus sub-secciones. Para eso hay que crear un archivo: article=60.html, que se aplicará únicamente a los artículos de la sección 60, pero no a sus sub-secciones.

Qué puede incluirse en un archivo .HTML

Los archivos de HTML son esencialmente archivos «de texto» completados con instrucciones de colocación de elementos de la base de datos.

SPIP analiza únicamente las instrucciones de colocación de los elementos de la base de datos (codificados según el lenguaje específico de SPIP); no le importa lo que está colocado en este archivo y que no corresponda a estas instrucciones.

Su contenido esencial es pues HTML. Tú mism@ determinas el aspecto de la página, la versión del HTML deseado, etc. Puedes incluir no sólo hojas de estilo (CSS) sino también JavaScript, Flash... es decir, todo lo que se coloca habitualmente en una página Web.

Pero también puedes (sigue siendo texto) crear XML (por ejemplo, «backend.php3/html» genera XML).

Más original: todas las páginas devueltas a quien visita el sitio son extraídas de la /CACHE por una página escrita en PHP. Por lo tanto en tus esqueletos puedes incluir instrucciones en PHP, que serán ejecutadas durante la visita. Utilizada con precisión, esta posibilidad permite una gran agilidad a SPIP, al que así puedes completar (por ejemplo añadir un contador) o hacer evolucionar algunos elementos de paginación en función de las informaciones extraídas de la base de datos.

Notas

[1Si article.html no existe, el archivo «dist» se utiliza en su lugar. Leer más sobre esto en «¿Qué son los archivos «dist»?».

Publicado el: Actualizado: 26/10/12

Traducciones: عربي, català, Deutsch, English, Español, italiano