sábado, 17 de abril de 2010

SPIP: Moviendo el esqueleto (I)

Antes de entrar en tema es muy recomendable que lean el artículo Principio general, para empezar a entender cómo funciona Spip y, en particular, sus esqueletos.

Luego de esa lectura, ya estamos en condiciones de intentar tener más control sobre la apariencia de un sitio Spip. Primero, preparé las condiciones para poder hacer algunas pruebas: fui al Espacio Privado de la migración de pruebas que vengo haciendo con este mismo blog y en Configuración del sitio / Gestión de plugins, desmarqué el esqueleto Ahuntsic y luego di Validar. De esta manera, quité el esqueleto que estaba utilizando y la apariencia del sitio volvió a ser la que viene por defecto con Spip:

Un primer paso para entender cómo hacer un esqueleto completamente desde cero

Para empezar, seguí los pasos del artículo Mi primer esqueleto, del sitio web de Spip.

O sea, al directorio squelettes/ del sitio (que, en caso que no exista, hay que crearlo manualmente en la raíz del sitio), hay que subir un archivo de nombre, por ejemplo, tutorial.html, con el siguiente contenido:

<BOUCLE_articulo(ARTICLES){id_article=1}>
#TITRE
</BOUCLE_articulo>

Luego, hay que ir a http://tusitio.net/spip.php?page=tutorial y, en la ventana del navegador, se verá sólo el título (#TITRE) del primer artículo ({id_article=1}).

Para que se muestre más información, se podría modificar el archivo tutorial.html de la siguiente manera:

<BOUCLE_articulo(ARTICLES){id_article=1}>
<h1>#TITRE</h1>
<div align="justify">#TEXTE</div>
</BOUCLE_articulo>

Y, ahora, lo que se mostraría en http://tusitio.net/spip.php?page=tutorial es el título del artículo 1 más grande y en negrita (gracias a la etiqueta h1) y luego todo el artículo con alineación justificada (gracias al atributo align, de la etiqueta div).

De la misma manera, además de #TITRE y #TEXTE, se puede ir probando distintas balizas, como por ejemplo, #CHAPO (copete, introducción o epígrafe), #SURTITRE (colgado o antetítulo), #LESAUTEURS (autores), #SOUSTITRE (subtítulo), #NOTES (notas), etc.

Segundo paso

Lo siguiente está tomado del artículo un esqueleto, varios artículos, también del sitio de Spip.

Evidentemente, lo visto en el apartado anterior sólo sirve para publicar el artículo número 1 de la base de datos. Así que ahora vamos a ver qué hacer para que con un mismo código se pueda publicar cualquier artículo.

Si en la barra de direcciones del navegador web escribimos http://tusitio.net/spip.php?page=tutorial&id_article=2, lo que obtenemos es lo mismo que en el ejemplo anterior: el artículo número 1 y no el artículo número 2, como podría esperarse.

Para solucionar este problemita, en el código de tutorial.html hay que sustituir <BOUCLE_articulo(ARTICLES){id_article=1}> por <BOUCLE_articulo(ARTICLES){id_article}>. O sea, no definir el número de artículo en el código.

Con esta modificación hecha, al llamar a http://tusitio.net/spip.php?page=tutorial&id_article=2, veremos el artículo número 2 de la base de datos, formateado de la misma forma que el artículo 1 en la oportunidad anterior.

Lo mismo va a pasar con cualquier número que coloquemos en id_article, siempre y cuando exista en la base de datos un artículo con tal número.

Tercer paso

Lo siguiente está basado en el artículo Una sección (rúbrica).

Para la próxima prueba, el archivo tutorial.html debe tener el siguiente contenido:

<BOUCLE_articulos(ARTICLES){0,5}>
#TITRE<br>
</BOUCLE_articulos>

Y se vería algo así en el navegador web:

Esto se ve así porque en el código de tutorial.html le pedimos a Spip que muestre los títulos (#TITRE) de los artículos, separados por un salto de línea (<br>). Pero, ¿los títulos de qué artículos está mostrando? Los 5 artículos desde el primero (el de la fila 0 de la base de datos). Esto queda definido por la porción de código que dice {0,5}.

Una variación interesante al código de tutorial.html podría ser:

<BOUCLE_articulos(ARTICLES){par date}{inverse}{0,10}>
<a href=#URL_ARTICLE>#TITRE</a><br>
</BOUCLE_articulos>

En este caso, se hace un bucle (BOUCLE) de artículos (ARTICLES) ordenados por fecha ({par date}), empezando por el más reciente ({inverse}) de los 10 primeros artículos ({0,10}) que cumplen con las condiciones. Además, por cada una de las 10 ocurrencias, se muestra el título del artículo (#TITRE) como un vínculo (a href=) a la url del artículo completo (#URL_ARTICLE), todos separados por un salto de línea (<br />).

El resultado sería:

Si al código precedente le agregamos lo que a continuación aparece en rojo...

<BOUCLE_articulos(ARTICLES){id_rubrique}{par date}{inverse}{0,10}>
<a href=#URL_ARTICLE>#TITRE</a><br>
</BOUCLE_articulos>

...y a la página la invocamos con la siguiente url: http://tusitio.net/spip.php?page=tutorial.php&id_rubrique=7 (la sección 7 corresponde, en nuestro caso, al mes de octubre de 2008), el resultado sería:

Como se ve, se listan en orden inverso todos los artículos de octubre de 2008. No se listan 10 artículos porque en la sección consultada hay solo 6.

Cuarto paso

Para terminar, por ahora, vamos a basarnos en el artículo Bucles en bucles del sitio de Spip.

Hay que modificar el contenido del archivo tutorial.html agregando lo que se muestra en rojo:

<BOUCLE_seccion(RUBRIQUES){id_rubrique}>
<h1>#TITRE</h1>


<BOUCLE_articulos(ARTICLES){id_rubrique}{par date}{inverse}{0,10}>
<a href=#URL_ARTICLE>#TITRE</a><BR>
</BOUCLE_articulos>


</BOUCLE_seccion>

En este momento, lo que logramos es que el bucle que ya teníamos hecho (el que muestra los títulos de los artículos) queda dentro de un nuevo bucle, que muestra el título de la sección (dentro de un par de etiquetas <h1>). Esto se debería ver como se ve en la siguiente captura de pantalla, si en la barra de título se invoca algo del estilo http://tusitio.net/spip.php?page=tutorial&id_rubrique=7 (recordemos que la sección 7 correspondía al mes de octubre de 2008):

Seguimos en una próxima entrada...

No hay comentarios:

Publicar un comentario

Lo que escriba a continuación será revisado antes de publicarse.
Gracias por tus comentarios.