Documento traducido por: Montserrat Boix (Mujeres en red por el software libre y no sexista http://www.mujeresenred.net/software_libre/indexsl.html) y compilado por: Jos Mara Glvez (Bradomn http://www.bradomin.es.vg)
- Pgina 2 de 114 - ndice I. PRIMEROS PASOS................................................................................................................. 4 I.1. CONTRIBUIR AL DESARROLLO DE SPIP............................................................................. 5 I.2. SEGURIDAD: SPIP E IIS..................................................................................................... 6 I.3. RAPIDEZ DEL SITIO PBLICO............................................................................................ 7 I.4. QU SON LOS FICHEROS -DIST.HTML?........................................................................ 8 I.5. FAQ PARA WEBMASTERS Y WEBMISSTRES ........................................................................ 9 II. FORMATEO: MANUAL DE REFERENCIA............................................................................... 11 II.1. PRINCIPIO GENERAL ..................................................................................................... 12 II.2. BUCLES Y BALIZAS......................................................................................................... 14 II.3. LA SINTAXIS DE LOS BUCLES......................................................................................... 16 II.4. LA SINTAXIS DE LAS BALIZAS SPIP............................................................................... 19 II.5. EL BUCLE ARTICLES (ARTCULOS) ................................................................................. 21 II.6. EL BUCLE RUBRIQUES (SECCIONES) .............................................................................. 23 II.7. EL BUCLE BREVES........................................................................................................... 24 II.8. EL BUCLE AUTEURS (AUTORES) ..................................................................................... 25 II.9. EL BUCLE FORUMS (FOROS)........................................................................................... 26 II.10. EL BUCLE MOTS (PALABRAS) ....................................................................................... 27 II.11. EL BUCLE SITES (O SYNDICATION) (SITIOS O SINDICACIN) .................................... 28 II.12. EL BUCLE DOCUMENTS (DOCUMENTOS) ....................................................................... 29 II.13. EL BUCLE SYNDIC_ARTICLES ....................................................................................... 30 II.14. EL BUCLE SIGNATURES (FIRMAS) ................................................................................ 31 II.15. EL BUCLE HIERARCHIE (JERARQUA)........................................................................... 31 II.16. CRITERIOS COMUNES A TODOS LOS BUCLES ............................................................... 32 II.17. LAS BALIZAS PROPIAS DEL SITIO................................................................................ 34 II.18. LOS FORMULARIOS ...................................................................................................... 35 II.19. LOS BUCLES DE BSQUEDA.......................................................................................... 37 II.20. LOS FILTROS DE SPIP .................................................................................................. 37 II.21. LOS BUCLES RECURSIVOS............................................................................................ 40 II.22. LA POPULARIDAD DE LOS ARTCULOS ......................................................................... 40 II.23. LA GESTIN DE LAS FECHAS ........................................................................................ 41 II.24. RESALTAR UN ARTCULO DE UNA LISTA ...................................................................... 43 III. SPIP PASO A PASO. ......................................................................................................... 45 III.1. MI PRIMER ESQUELETO (LO SACO DEL ARMARIO) ....................................................... 46 III.2. UN ESQUELETO, VARIOS ARTCULOS... ES PARA ESO QUE SIRVE................................. 46 III.3. UNA SECCIN (RBRICA) O CMO HACER LISTAS DEL CONTENIDO DE LA BASE ......... 47 III.4. BUCLES EN BUCLES....................................................................................................... 47 III.5. GESTIONAR LA CACH... Y EVITAR HACER TRABAJAR AL SERVIDOR QUE TIENE OTRAS COSAS QUE HACER................................................................................................................. 48 III.6. LOS FILTROS. SUTILEZAS ESQUELTICAS .................................................................... 49 IV. GUA DE LAS FUNCIONES AVANZADAS............................................................................. 50 IV.1. ESTRUCTURA DE LA BASE DE DATOS ............................................................................. 51 IV.2. EL SOPORTE LDAP ......................................................................................................... 54 IV.3. SPIP Y LAS HOJAS DE ESTILO........................................................................................ 55 IV.4. <INCLURE>: INCLUIR OTROS ESQUELETOS .................................................................. 58
- Pgina 3 de 114 - IV.5. HACER UN SITIO MULTILINGE .................................................................................... 59 IV.6. INTERNACIONALIZAR LOS ESQUELETOS ....................................................................... 62 IV.7. UTILIZAR URLS PERSONALIZADAS................................................................................ 66 IV.8. EL MOTOR DE BSQUEDA .............................................................................................. 67 IV.9. LAS VARIABLES DE PERSONALIZACIN ........................................................................ 69 V. INICIACIN: UTILIZAR HOJAS DE ESTILO CON SPIP......................................................... 72 V.1. INTRODUCCIN.............................................................................................................. 73 V.2. ESTILOS CON CLASE ................................................................................................. 73 V.3. PERSONALIZAR LA TIPOGRAFA..................................................................................... 75 V.4. QU FORMULARIOS MS BONITOS! ............................................................................... 77 V.5. PARA PROFUNDIZAR....................................................................................................... 78 VI. TUTORIAL: UTILIZACIN AVANZADA DE BUCLES Y PALABRAS CLAVES............................ 80 VI.1. INTRODUCCIN............................................................................................................. 81 VI.2. EL OBJETIVO DEL JUEGO: UN SITIO WEB DEDICADO A LOS VIDEOJUEGOS................... 82 VI.3. LA ESTRUCTURA DEL SITIO WEB................................................................................... 84 VI.4. DESPLIEGUE DE LA ESTRUCTURA .................................................................................. 86 VI.5. ESCRIBIR LOS ARTCULOS ............................................................................................ 87 VI.6. PRIMERA VERSIN DEL ESQUELETO DE LOS ARTCULOS .............................................. 90 VI.7. LA PGINA DE LAS SECCIONES ..................................................................................... 91 VI.8. LAS PALABRAS CLAVE EN LOS ARTCULOS .................................................................... 94 VI.9. LAS PALABRAS CLAVE EN LAS SECCIONES .................................................................... 96 VI.10. LA INTERFAZ DE LAS NOTICIAS .................................................................................. 98 VII. TUCOS Y UTILIDADES ..................................................................................................... 99 VII.1. VER EL NMERO DE MENSAJES DEL FORO UNIDO A UN ARTCULO............................ 100 VII.2. PRESENTAR LOS RESULTADOS DE UNA BSQUEDA POR SECTORES ........................... 100 VII.3. NO MOSTRAR LOS ARTCULOS PUBLICADOS HACE MS DE UN AO.......................... 101 VII.4. MOSTRAR LOS LTIMOS ARTCULOS DE LOS REDACTORES DE CADA SECCIN.......... 101 VII.5. VARIOS LOGOS PARA EL MISMO ARTCULO............................................................... 102 VII.6. MOSTRAR LOS ELEMENTOS COMO LNEAS DE UNA TABLA ......................................... 107 VII.7. RELLENAR LOS META-TAGS HTML DE LAS PGINAS DE ARTCULO............................. 108 VII.8. UN MEN DESPLEGABLE PARA PRESENTAR UNA LISTA DE ARTCULOS ..................... 108 VII.9. PUBLICAR AUTOMTICAMENTE SEGN LA FECHA O SEGN EL ORDEN IMPUESTO..... 108 VII.10. SELECCIONAR ARTCULOS POR ORDEN ALFABTICO, SALVO UNO QUE HAY QUE PUBLICAR EN PRIMER LUGAR .............................................................................................. 109 VII.11. REALIZAR UNA AGENDA CON SPIP........................................................................... 110
- Pgina 4 de 114 -
I. Primeros pasos Informacin previa al uso de SPIP
- Pgina 5 de 114 - I.1. Contribuir al desarrollo de SPIP Si deseas ayudar en la programacin de SPIP, la idea ms importante a recordar es la siguiente: lle- gas a un proyecto que ya est en funcionamiento. Este proyecto tiene un conjunto de reglas que, por arbitrarias que puedan parecer, aseguran su coherencia. Estas reglas no es necesario que estn enun- ciadas explcitamente para existir: algunas son claramente visibles tras un examen ms o menos deta- llado del cdigo, y las reglas tcitas deben respetarse de misma forma que las dems. Se aconseja formalmente atenerse a estas reglas. Esta cuestin no est sujeta o no a tus gustos per- sonales: permite al proyecto conservar su coherencia y su unidad, y mantenerlo tan legible como estaba antes. No olvides que otras personas distintas a ti estn obligadas a leer, entender, y tal vez modificar tu cdigo. Por ejemplo, es evidente que las funciones de SPIP estn escritas de forma mi_funcion(). En el marco de este proyecto, estara por lo tanto completamente fuera de lugar aadir funciones escritas co- mo MiFuncion() - aunque esta forma no es, en absoluto, ms criticable que la otra. Evidentemente, todo esto no impide criticar una regla y proponer otra mejor, llegado el caso. No du- des en hacerlo; pero tiene que haber buenas razones para ello. En fin, toda regla tiene excepciones. Pero estas deben tener una verdadera justificacin, no slo la pereza del programador; deben ser lo ms escasas posible. En especial, hay que tener presente que lo provisional tiene bastante tendencia a convertirse en definitivo cuando nadie se preocupa de corregir- lo; claramente es lgico y justo que todo programador sea responsable del acabado de su propio cdigo, pero no del de los dems. I.1.1. Reglas de presentacin y de escritura Las reglas siguientes son comunes para un nmero ms o menos grande de lenguajes de programa- cin: al menos todos los lenguajes que tienen una sintaxis similar a PHP (es decir, adems del propio PHP, C, C++, Java....). Estas son reglas aceptadas comnmente, de forma tan natural como las reglas de presentacin y de tipografa de un texto en lenguaje natural; de hecho es frecuente que sean similares. Presentacin El cdigo debe estar espaciado e indentado de manera que resalte su estructura y la separacin en- tre los diferentes bloques lgicos (en especial las funciones). El espaciado y la indentacin deben ser suficientes para hacer comprensible la estructura desde el primer vistazo; tampoco deben ser exce- sivos. Se le debe prestar la misma atencin que a la divisin en prrafos de un texto en lenguaje natural. La indentacin se har preferentemente con el carcter de tabulacin. Eso permite elegir libremente la profundidad de indentacin en las opciones de tu editor de texto, sin imponer esa eleccin al re- sto de desarrolladores. Todo bloque contenido en el interior de un par de llaves se indentar con una sola tabulacin. Lo mismo, de forma recursiva, para los sub-bloques: aadir una nica tabulacin suplementaria por cada salto a un nivel suplementario de profundidad. Esta regla tambin sirve para la declaracin de funciones. El cdigo que no forma parte de una funcin no debe estar indentado. El uso de las transiciones PHP-HTML (<?php y ?>) debe ser minimizado. Evitarlo cuando haya que mostrar nicamente pequeas partes de HTML. No olvidar que un trocito de cdigo PHP insertado en medio de un ocano de HTML es invisible sin un examen muy atento. Tipografa Cuando se usen parntesis o corchetes, no hace falta dejar espacio despus del parntesis de aper- tura ni antes del parntesis de cierre. Cuando se usen operadores binarios (+, =, *, AND, ...), hay que dejar un espacio a ambos lados del operador. La excepcin manifiesta a esta regla, es cuando los operadores se mencionan y no son usados como tales. Los operadores unarios (!, ...) deben estar pegados al parmetro al cual se aplican. Por convencin, despus de la llamada a una funcin, no hay espacio antes del parntesis de aper- tura: f($x) y no f ($x). Al contrario, y para distinguirlo bien, se deja un espacio antes del parntesis cuando se trata de una estructura de control integrada en el lenguaje: if (!$x) y no if(!$x). La coma y el punto y coma van seguidos por un espacio; pero no precedidos por l. I.1.2. Reglas de programacin Reflexionar Antes de programar una nueva caracterstica, reflexionar sobre...
- Pgina 6 de 114 - mtodos y algoritmos usados para la implementacin: ligereza, prestaciones, robustez (no dudes en hacer algn clculo aproximado para validar tu eleccin); adecuacin al proyecto: portabilidad, seguridad, flexibilidad; implicaciones para el resto de caractersticas: modificaciones y aadidos que hay que hacer en las caractersticas existentes; lugar natural para esta caracterstica dentro del proyecto: en cuanto a la interfaz, a los ficheros... No olvidar la factorizacin o puesta en comn del cdigo (para las funciones, y especialmente para los ficheros a incluir). Evitar en cambio mientras sea posible los ficheros incluidos que contengan cdigo fuera de funciones (salvo cuando esto es natural y es lo que se desea). Dar nombre Variables y funciones: Sea cual sea el proyecto, el modo de dar nombres debe ser homogneo para que el cdigo sea fcil de leer. As, bajo SPIP, los nombres de las variables y los de las funciones estarn en minsculas; con los nombres compuestos, de la forma variable_compuesta. De manera general, los nombres no sern ni muy breves, ni demasiado largos; y sern suficiente- mente explcitos. Esta regla es particularmente importante para las variables globales, que pueden estar compartidas por varios ficheros y numerosas funciones. Para las variables locales (i.e. en una funcin), la regla es ms flexible. Notablemente, se pueden emplear variables de una letra, por ejemplo para ob- tener expresiones ms compactas. Recordamos que en todos los lenguajes de programacin, un cierto nmero de letras se asocian, por tradicin, con determinados usos (ejemplos: $i, $j para los contadores de bucles, $n para una denominacin, $t para un instante o una duracin en segundos...). No cambiar esas convenciones permite que los lectores vayan al grano ms rpidamente. Ficheros: Por razones histricas, los ficheros a incluir en el espacio pblico se llamarn inc-fichero.php3. En el espacio privado, esto ser ecrire/inc_fichero.php3 (ntese el guin bajo en lugar del guin nor- mal). Los ficheros del espacio pblico llamados mediante redireccin HTTP desde el espacio privado se llaman spip_fichero.php3. Todos los dems ficheros tienen un nombre que no comienza ni por "inc", ni por "spip". Probar Una vez aportada una modificacin importante, es bueno comprobarla por si mismo, sin esperar a que alguien lo haga en nuestro lugar. En el marco de SPIP, esto quiere decir verificar que el programa funcione correctamente en un cierto nmero de alojamientos Web (por ejemplo: Altern, Free...) y de configuraciones (por ejemplo: diferentes versiones de PHP, de MySQL, restriccin mayor o menor de los derechos de acceso a los directorios...); y tambin que un determinado nmero de las situaciones ms habituales (sobre todo en el caso de una interfaz grfica) se efecten correctamente. I.1.3. Compartir tus modificaciones Una vez que ests satisfecho con la modificacin del cdigo, es el momento para hablar con los de- ms desarrolladores de SPIP, y para ver si merece ser integrado en la distribucin oficial de SPIP... Une- te a la lista de correo spip-dev. Hasta pronto!
I.2. Seguridad: SPIP e IIS Impedir el acceso a los datos confidenciales de SPIP bajo Microsoft IIS Este artculo afecta a quienes tengan su sitio web alojado en una mquina que no utilice Apache, el servidor Web ms extendido, sino el software IIS de Microsoft. I.2.1. Seguridad por omisin de SPIP En SPIP existen dos carpetas sensibles, que son CACHE y ecrire/data. La primera contiene todos los ficheros que utiliza la cache para acelerar la visualizacin de las pginas, luego es de mediana sensi- bilidad; pero la segunda almacena los registros de actividad de SPIP (los spip.log) y sobre todo permite crear dump.xml, el fichero de respaldo de la base de datos. El valioso fichero dump.xml contiene datos muy sensibles: en particular se pueden ver todos los ar- tculos, incluso los que no se han publicado en el sitio web, sin contar que igualmente lista los identifica- dores y contraseas 1 de los redactores y administradores del sitio. La seguridad de todos estos ficheros tradicionalmente se asegura mediante unos ficheros de configu- racin de acceso llamados .htaccess. SPIP genera estos ficheros automticamente para impedir el acce- so a los datos sensibles almacenados en el servidor: se puede comprobar que las carpetas CACHE y
1 Las contraseas son cifradas por SPIP; pero hay que tener muy presente que ninguna proteccin es i nviolable.
- Pgina 7 de 114 - ecrire/data contienen cada una un fichero .htaccess. Por desgracia, estos ficheros funcionan bajo Apache (el servidor Web libre que mueve la mayora de los sitios Web de Internet) pero no bajo IIS (In- ternet Information Services, el servidor Web de Microsoft). I.2.2. Proteger sus datos bajo IIS: un paso ms Si el sitio SPIP est instalado en un IIS, cualquiera podr ver las carpetas que se hayan asegurado por medio de ficheros .htaccess: por lo tanto, es necesario protegerlas. Para proteger una carpeta del sitio web : ir al panel de administracin del servidor Web, hacer clic con el botn derecho sobre la carpeta deseada, pulsar en propiedades, y en la pestaa Directorio desmarcar la casilla Leer.
Panel de propiedades de la carpeta /ecrire/data/ Basta con desmarcar la casilla "Leer" para proteger la carpeta exactamente igual que hace Apache con los ficheros .htaccess Hace falta realizar esta operacin en cada una de las dos carpetas CACHE y ecrire/data. Si se ha hecho bien, no debera ser posible el acceso a los ficheros de estas carpetas a travs del servidor web. Se puede comprobar la configuracin intentando abrir http://www.tu-sitio.com/ecrire/data/spip.log con el navegador. Se debera obtener un mensaje de tipo Acceso denegado.
I.3. Rapidez del sitio pblico Contrariamente a la mayora de sistemas de publicacin gratuitos, SPIP integra un sistema de cach que permite acelerar la publiacin del sitio pblico. Algunas pistas para entender lo que influye en la ra- pidez de tu sitio... I.3.1. Optimizar un sitio Si te preocupa la rapidez de publicacin de tu sitio es bueno interesarse por las siguientes pistas: El servidor que alberga tu web ofrece servicios de buena calidad? Evidentamente es subjetivo. La expresin mala calidad podra seguramente aplicarse a la mayora de albergadores gratuitos (so- bre todo Free). Buena calidad incluye forzosamente una mquina dedicada (i.e. que slo es utili- zada por tu sitio) de fabricacin reciente, pero tambin a los albergadores comerciales con precios
- Pgina 8 de 114 - no muy rebajados. Entre los dos, esto se convierte en algo muy subjetivo en funcin de tus exigen- cias, del tamao del sitio... Si la calidad del servidor en el que albergas tu sitio web deja que desear, tienes inters en no crear esqueletos muy complejos, i.e. que piden a SPIP publicar muchas informaciones diferentes. Esto sir- ve para todo tipo de informaciones: todo lo que, en los esqueletos, es susceptible de ser transfor- mado por SPIP en informaciones publicables. Ten en cuenta en particular que los esqueletos ofreci- dos por defecto ofrecen el mximo de posibilidades de SPIP y por tanto generan pginas bastante pesadas. No olvides adems modificar el plazo de expiracin de los diferentes tipos de pginas. As, si tu sitio contiene un gran nmero de artculos en archivos te interesar aumentar el plazo de expiracin de los artculos, sino los artculos consultados de manera poco frecuente no se beneficiaran del sistema de cach. I.3.2. La influencia de la cach La presencia de la cach cambia un poco las condiciones de rapidez. El punto crtico no ser tanto el nmero de visitas de tu sitio sino la capacidad de tu servidor para actualizar las pginas en el tiempo de- terminado en el script PHP (en efecto, en la mayora de servidores se ha fijado un lmite de duracin de ejecucin por llamada para evitar el abuso y los errores de prgramacin). Por contra, si la pgina solici- tada est en la cach y no ha expirado, la respuesta del servidor deber ser cuasi instantnea (en caso contrario, tu servidor est realmente muy cargado). La calidad de las acciones se convierte as en objetivamente mesurable si, tras la actualizacin de una pgina del sitio, se obtiene un timeout, es decir, que el servidor ha sobrepasado el tiempo mxi- mo de ejecucin de un script PHP. Entonces hay que cambiar el albergue del sitio o bien decidirse a pu- blicar pginas ms sencillas: para ello modificar los esqueletos para publicar menos informacin en una misma pgina. I.3.3. En una mquina dedicada Si utilizas una mquina propia es necesario que te asegures que podr asumir la carga. Cualquier mquina no muy vieja (menos de tres aos) debera ser capaz. Por contra, la utilizacin de SPIP en relacin a otros sistemas de publicacin permite compartir los rescursos tcnicos entre varios sitios. En efecto, en tanto que se utiliza la cach, la mquina est poco solicitada y por tanto pueden cohabitar varios sitios sin problema (salvo si se recibe realmente un nme- ro muy grande de visitas). El problema es pues sobretodo prevenir que exista muchos pasajeros a bor- do, es decir, que un nmero demasiado de servicios albergados (sitios web, correos electrnicos...) pone en peligro la calidad del servicio.
I.4. Qu son los ficheros -dist.html? Como ya sabrs (sino lee el tutorial y luego el manual de referencia) el sistema de esqueletos est basado en ficheros .html que contienen la presentacin grfica del sitio. Por ejemplo article.html presenta los artculos, rubrique.html presenta las secciones... Ahora bien, nos dimos cuenta que frecuentemente quienes manipulaban su sitio pblico modificando estos archivos .html distribuidos con SPIP, encontraban problemas al alctualizarlo, si previamente no haban tomado sus precauciones haciendo un respaldo de los archivos modificados. En efecto, al reinsta- lar todos los nuevos archivos entregados con SPIP estos se graban pura y simplemente sobre los archi- vos modificados (olvidando hacer una copia de seguridad de sus modificaciones). A partir de la versin 1.3 puedes constatar que los archivos de esqueletos ofrecidos en la distribucin de SPIP se denominan article-dist.html, rubrique-dist.html, y as sucesivamente. Si se quiere personalizar estos archivos bastar con primero renombrarlos article.html, rubrique.html, etc. (sin el -dist). De tal manera que en la siguiente actualizacin reinstalars los ficheros -dist.html pero tus archivos propios .html no seran sustituidos. Una pequea mejora que evitar mucho trabajo su- plementario. I.4.1. Para ir ms lejos Este es el orden (por prioridad decreciente) en el que son utilizados los archivos de esqueletos segn su nombre: rubrique=10.html: si este archivo existe slo se aplica a la seccin (rubrique) nmero 10; si este archivo no existe SPIP busca si existe entonces un archivo denominado rubrique-10.html, si ste existe, la seccin (rubrique) 10 y las sub-secciones lo utilizan, es pues recursivo; si este archivo no existe, SPIP busca si existe uno denominado rubrique.html que se aplica a todas las secciones del sitio que no estan relacionados con los archivos indicados anteriormente; si este archivo no existe, SPIP utiliza entonces el archivo rubrique-dist.html que es el que se dis- tribuye por omisin. Si quieres modificarlo renmbralo rubrique.html, de tal manera que no se bo- rren tus modificaciones en la prxima actualizacin de SPIP.
- Pgina 9 de 114 - Nota: En el artculo sobre las variables de personalizacin (vase cap. IV.9 Las variables de personalizacin) se explica como proceder para guardar todos los esqueletos del sitio en una sub-carpeta.
I.5. FAQ para webmasters y webmisstres I.5.1. Las bases 1. Como puedo modificar el aspecto del sitio pblico? La gestin de la publicacin se apoya en ficheros que llevan la extensin .html llamados esqueletos de publicacin de pginas. Grosso modo, su papel es similar a lo que otros programas llaman mode- los, plantillas o, en ingls, templates. Cada fichero est asociado a un tipo de pgina diferente: as podemos encontrar un esqueleto para el sumario, uno para visualizar artculos, otro para las secciones, etc. Un esqueleto contiene HTML estndar que define la presentacin de la pgina, en el cual se insertan cdigos especficos de SPIP para definir qu informacin vendr a habitar en esta paginacin. El lenguaje de los esqueletos de SPIP es muy flexible y permite realizar paginaciones muy variadas. Una simple mirada a uZine [http://www.uzine.net/], Vacarme [http://vacarme.eu.org/], Hacktivist News Service [http://hns.samizdat.net/] o a otros sitios registrados aqu [http://www.spip.net/es_article81.html] por sus creadores y creadoras, alcanzarn para convencerte. Por ende, si bien el formato de pginas por omisin puede ser muy til para entrar en materia, es una pena limitarse a ste. 2. Es posible escribir uno mismo dichos esqueletos? S. Y es uno de los principales intereses de SPIP. Para eso se sugiere consultar: primero el tutorial SPIP paso a paso (vase seccin III. SPIP paso a paso) para comprender las bases de programacin de los esqueletos, partiendo de ejemplos elementales, luego recorrer el manual de referencia (vase seccin II. Formateo. Manual de referencia) que detalla todas las posibilidades para la construccin del contenido de los esqueletos, y la gua de funciones avanzadas que documenta diferentes mecanismos para estructurar el sitio, y en particular las posibilidades de internacionalizacin. 3. No se/no quiero aprender a programar. Se pueden utilizar paginaciones ya existentes? S. Adems de la paginacin por omisin, hay otros juegos de esqueletos disponibles en el sitio de contribuciones SPIP [http://www.spip-contrib.net/], en la seccin Squelettes [http://www.spip- contrib.net/rubrique.php3?id_rubrique=5] (nicamente en francs por el momento). En general slo es necesario recuperar el archivo deseado (fichero en formato .zip o .tar.gz, a elec- cin), descomprimirlo en tu ordenador y transferir su contenido va FTP a la raz de tu sitio SPIP. Mejor hacer una copia de seguridad de tus esqueletos .html previos, por si no te convence el resultado y pre- fieres desandar el camino. 4. No hay muchos juegos de esqueletos disponibles. Por qu? Estos juegos de esqueletos disponibles se alimentan por los/las webmasters/webmistress SPIP que ofrecen sus creaciones. Contamos pues con los webmasters para completar esta base de esqueletos con el fin de animar a la ayuda mutua y la mejora de los sitios con SPIP. (cf. la seccin Compartir ms abajo en esta FAQ) I.5.2. Crear sus propios esqueletos 1. Se puede utilizar un editor de textos para crear y modificar los esqueletos? S, al igual que lo haramos para un documento HTML clsico.. 2. Se puede utilizar un editor grfico (WYSIWYG) para crear y modificar los esqueletos ? S, tal como lo haramos para el HTML clsico. Ver sin embargo la siguiente pregunta. 3. Intento utilizar un editor grfico para crear mis pginas pero este editor me modifica los cdigos SPIP. Como puedo resolver el problema? Algunos editores grficos corrigen automticamente las marcas que no comprenden. La mayora de ellos tienen una opcin que permite desactivar esta funcin. Hemos dedicado un artculo especfico para DreamWeaver, pero la dinmica es equivalente para otros editores (HomeSite, GoLive...). I.5.3. Compartir tus creaciones 1. Constru esqueletos para mi sitio. Como puedo hacer para compartirlos?
- Pgina 10 de 114 - No dudes en inscribirte en el sitio SPIP-contrib [http://www.spip-contrib.net/] anteriormente men- cionado, para ofrecer tus esqueletos y que otras y otros puedan a su vez bajarlos e inspirarse de stos para su propio trabajo. El sitio SPIP-contrib an slo est en francs, pero te espera para iniciar una versin multilinge. No dudes en venir a charlar de sto en la lista spip-es@rezo.net.
- Pgina 11 de 114 -
II. Formateo: manual de refe- rencia Cmo hago para crear mis propios formatos de pgina en un sitio manejado con SPIP.
- Pgina 12 de 114 - II.1. Principio general Todo el contenido de un sitio gestionado por SPIP se instala en una base de datos MySQL (en la parte protegida por la contrasea /ecrire). Para mostrar sus informaciones a quien visita el sitio es necesario realizar la operacin que consiste en recuperar las informaciones, organizarlas y colocarlas en la pgina para ofrecer una pgina HTML. Esta operacin es habitualmente bastante dificultosa: es necesario conocer PHP y MySQL, y efectuar rutinas relativamente complejas; la integracin de tales rutinas en una pgina HTML elaborada es bastante dificultosa; el recurso sistemtico a las peticiones MySQL cada vez que se muestra una pgina consume impor- tantes recursos, ralentiza la visita y en casos extremos provoca que el servidor se cuelgue. SPIP propone una solucin completa para resolver estas dificultades: la paginacin del sitio se efecta a travs de pginas HTML denominadas esqueletos, que contienen las instrucciones simplificadas que permitirn indicar dnde y cmo se colocan las informaciones en la pgina; un sistema de cach permite almacenar cada pgina y as evitar provocar llamadas a la base de da- tos en cada visita. No slo la carga del servidor sino que la velocidad se acelera considerablemente, y adems un sitio SPIP contina pudindose consultar incluso si la base MySQL est colgada. II.1.1. Para cada tipo de documento, un par de ficheros El inters (y el lmite) de un sistema de publicacin automatizado es que no se redefinir una interfaz diferente en HTML para cada pgina aislada. Por ejemplo todos los artculos tendrn la misma interfaz, simplemente el sistema colocar informaciones diferentes en este grafismo (veremos ms 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 artculos y el sistema fabricar cada pgina individual colocando automticamente el ttulo, el texto, los enlaces de navegacin... de cada artculo. Para cada tipo de documento, SPIP solicita dos ficheros: un fichero .php3 y un fichero .html. Tras la instalacin de SPIP encontrareis as las parejas: article.php3 / article.html, rubrique.php3 / rubrique.html, etc. Se puede, naturalmente, modificar estas parejas y crear otras. II.1.2. El principio de funcionamiento de la cach La llamada de una pgina especfica se realiza a travs del fichero .php3. Por ejemplo para llamar al artculo 5 la URL correspondiente es: article.php3?id_article=5
1. El fichero solicitado es por tanto article.php3, con la variable id_article=5.
- Pgina 13 de 114 - 2. El fichero article.php3 es un fichero PHP; su primera tarea consiste en verificar en el dossier /CACHE en vuestro servidor si existe ya un fichero correspondiente a este artculo. Si el fichero existe en /CACHE, article.php3 verifica su fecha de creacin. Si el fichero es suficientemente reciente lo devuelve directamente a quien lo ha solicitado. El procedimiento de consulta ha finalizado. 3. Si no existe el fichero en /CACHE (en el caso, por ejemplo, de la primera visita al artculo) o bien si su fecha de creacin es muy antigua, SPIP pone en marcha el clculo de esta pgina. 4. Es en este momento cuando la pgina article.html se carga y se analiza. Esta pgina contiene la paginacin correspondiente a este tipo de documento. Se trata de HTML completado con indi- caciones que permiten colocar los elementos extrados de la base de datos. En funcin de los elementos solicitados por article.html, SPIP buscar las informaciones necesarias extradas de la base de datos MySQL y las insertar en las zonas previstas. 5. Tambin se fabrica un fichero a partir de la descripcin contenida en article.html, con los ele- mentos extrados de la base de datos. Este fichero se guarda en el dossier /CACHE y se reenva a la persona visitante de la pgina. En una visita siguiente, si el tiempo que transcurre entre una visita y otra es suficientemente corto, ser el nuevo fichero almacenado en /CACHE el que se entregue sin necesidad de realizar un nuevo cl- culo a partir de la base de datos. En caso de que se cuelgue la base de datos ser este fichero, incluso si es demasiado antiguo el que se muestre al/a la solicitante. Nota. Se observa aqu que cada pgina del sitio se introduce en la cach individualmente y que cada actualizacin est provocada por las visitas del sitio. No existe la opcin de actualizar todas las pginas del sitio a la vez de manera regular (este tipo de gran maniobra acaba provocando la sobrecarga del servidor y el que a veces se cuelgue). II.1.3. El fichero .php3 El fichero .php3 es muy simple. Por ejemplo, article.php3 contiene nicamente: <? $fond = "article"; $delais = 24 * 3600; include ("inc-public.php3"); ?> Su nico objetivo es establecer dos variables ($fond y $delais) y llamar al fichero que inicia el fun- cionamiento de SPIP (inc-public.php3). La variable $fond es el nombre del fichero que contiene la descripcin de la puesta en pgina (el es- queleto). All, dado que $fond="article", el fichero de descripcin se incluir en article.html. (Ntese que en la variable $fond, no se indica la terminacin .html.) Nota: El inters de elegir por si mismo el nombre del fichero de esqueleto (que se hubiera po- dido deducir automticamente del nombre del fichero .php3 es para cuando sea necesario utilizar otro nombre. Se produce para no remplazar, eventualmente, ficheros HTML que po- dran subsistir de una antigua versin del sitio que no se desea suprimir. Si existe, de una versin anterior del sitio, un fichero article.html que no se desea borrar se utilizar, por ejemplo, un fichero esqueleto para SPIP titulado spip-article.html, y se colocar en arti- cle.php3: "$fond="spip-article". La variable $delais es el tiempo mximo para la utilizacin del fichero almacenado en /CACHE. Este tiempo se fija en segundos. Un plazo de 3600 corresponde a una hora; el plazo de 24*3600 sera de 24 horas. Se escoger este valor en funcin de la frecuencia de actualizacin de contenidos en el sitio (nuevos artculos, nuevas notas breves...). Un sitio actualizado varias veces al da podra adoptar un plazo de una hora; un sitio en el que se publican varios artculos por semana podra adoptar un plazo mucho ms lar- go. Por otro lado tambin es importante el contenido de las pginas: si utilizas la sindicacin del conte- nido de sitios frecuentemente actualizados, sin duda querrs adaptar tu propio plazo al de los sitios refe- renciados. Nota. Algun@s webmaster/webmisstres sucumben a la tentacin de fijar plazos irrisorios (algu- nos 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 lmite; en sitios muy visitados, puedes provocar que la base de datos se cuelgue (o ser expulsado por quien alberga tu sitio, porque ests monopolizando la potencia de su servidor...). Nota. Otra razn 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 envan creen que es necesario reducir el plazo de actualizacin. Es intil. SPIP maneja automtica- mente este aspecto; cuando se enva una contribucin al foro la pgina correspondiente se borra de la cach y se actualiza inmediatamente sea cual sea el plazo establecido para esta pgina.
- Pgina 14 de 114 - II.1.4. El fichero .html En SPIP, los ficheros .html se llaman esqueletos. Son ellos los que describen la interfaz grfica de las pginas. Estos ficheros se crean directamente en HTML a lo que se suman instrucciones que permiten indicar a SPIP donde deber colocar los elementos extrados de la base de datos (del tipo: colocar el ttulo aqu, indicar en este lugar la lista de artculos que se refieren al mismo tema...). Las instrucciones de colocacin de los elementos se realizan en un lenguaje especfico explicado en este manual de utilizacin. 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 rpidamente. En relacin a PHP/MySQL, vers que te permite ganar mucho tiempo (sobre todo: es mucho ms simple). Se trata de un lenguaje de marcas (markup language), es decir, un lenguaje utilizando cdigos similares al HTML. Nota. De la misma manera que se aprende HTML inspirndose en el cdigo fuente de los sitios que se visitan, puedes inspirarte en los esqueletos utilizados por otros sitios que funcionan con SPIP. Basta con buscar el fichero .html correspondiente. Por ejemplo, puedes ver el esqueleto de los artculos de uZine (visualizar el cdigo fuente para obtener el texto del es- queleto). II.1.5. Una interfaz diferente en el mismo sitio Ante todo cabe mencionar que es posible crear varias parejas de ficheros para el mismo elemento l- gico (artculos, secciones, ...). Por ejemplo puedes crear ficheros para visitar un mismo artculo con dife- rentes interfaces article.php3/html para el formato normal, imprimir.php3/html para el mismo art- culo en un formato adaptado a la impresin, articulo-texto.php3/html para el artculo en un formato texto (adaptado a quienes tienen problemas de visin, por ejemplo), article-heavy.php/html con una interfaz pesada adaptada a una conexin de alta velocidad, etc. Una interfaz diferente segn las secciones (rubriques). Se puede, para un mismo tipo de do- cumento, crear esqueletos diferentes segn las secciones del sitio. Se trata de crear simplemente nue- vos ficheros .html en funcin de las secciones (intil aqu modificar el fichero .php3, nos contentaremos con jugar con los nombres de los ficheros esqueletos). Alcanza con completar el nombre del fichero esqueleto con -numero (guin seguido de un nmero de seccin). Por ejemplo si creas un fichero: article-60.html, todos los artculos contenidos en la sec- cin 60 utilizarn este esqueleto (y no el esqueleto por defecto article.html). Atencin: el nmero indi- cado es el de una seccin (una rubrique). Si esta seccin 60 contiene sub-secciones, los artculos con- tenidos en estas sub-secciones utilizarn igualmente este nuevo esqueleto. Nota: En nuestro ejemplo, tambin nos interesar sin duda crear un rubrique-60.html, un breve-60.html, etc. para acompaar el cambio de formato de esta seccin. Una interfaz para un sola seccin. (SPIP 1.3) Se puede crear una interfaz que se aplique slo a una seccin, pero no a sus sub-secciones. Para eso hay que crear un fichero: article=60.html, que se aplicar nicamente a los artculos de la seccin 60, pero no a sus sub-secciones. II.1.6. Qu puede incluirse en un fichero .html Los ficheros .html son esencialmente ficheros texto completados con instrucciones de colocacin de elementos de la base de datos. SPIP analiza nicamente las instrucciones de colocacin de los elementos de la base de datos (codifi- cados segn el lenguaje especfico de SPIP); no le importa lo que est colocado en este fichero y que no corresponda a estas instrucciones. Su contenido esencial es pues HTML. T mism@ determinas el aspecto de la pgina, la versin del HTML deseado, etc. Puedes incluir no slo hojas de estilo (CSS) sino tambin JavaScript, Flash... es de- cir, todo lo que se coloca habitualmente en una pgina Web. Pero tambin puedes (sigue siendo texto) crear XML (por ejemplo, backend.php3/html genera XML). Ms original: todas las pginas devueltas a quien visita el sitio son extradas del /CACHE por una pgina escrita en PHP. Por lo tanto en tus esqueletos puedes incluir instrucciones en PHP, que sern eje- cutadas durante la visita. Utilizada con precisin, esta posibilidad permite una gran agilidad a SPIP, al que as puedes completar (por ejemplo aadir un contador) o hacer evolucionar algunos elementos de paginacin en funcin de las informaciones extradas de la base de datos.
II.2. Bucles y balizas Todo lo que sigue concierne al lenguaje de descripcin de la paginacin de esqueletos con SPIP. Si entendiste la explicacin precedente, ya sabes que trabajamos con los ficheros .html.
- Pgina 15 de 114 - Esta documentacin es voluntariamente tcnica (se trata de un manual de referencia tcnica); quizs prefieras empezar por la gua SPIP paso a paso que es ms didctica y luego volver aqu para una do- cumentacin ms detallada. II.2.1. Los bucles La nocin de base del lenguaje de SPIP es el bucle (boucle, en francs). La lgica del bucle Clsicamente, una base de datos est compuesta por tablas que son listas de elementos: aqu, una lista de artculos, una lista de secciones, una lista de autores, etc. Para construir el sitio, extraeremos ciertos elementos de estas listas: puede ser un solo elemento: por ejemplo colgar el contenido del artculo deseado; pero tambin es frecuente extraer varios elementos de una lista: por ejemplo, en la pgina de una seccin, queremos mostrar todos los artculos pertenecientes a esta seccin y todas las sub- secciones; y an ms sutil: es frecuente que no haya elementos satisfactorios en tal o tal lugar; SPIP debe po- der manejar la ausencia de stos. Por ejemplo, en el caso precedente qu hacer si no hay sub- secciones en una seccin dada? Estas tres situaciones se tratan por la nocin comn de bucle, que permite a la vez tratar la aparicin de un solo elemento, de varios elementos sucesivos, o la ausencia de elementos. El sistema de bucles permite, en un cdigo nico: indicar en que lugar del cdigo HTML se necesita un tipo de elemento (en que lugar se quiere mos- trar la lista de artculos, en qu lugar se quiere incluir la lista de sub-secciones...); prever la presentacin un elemento nico; indicar cmo se muestra una lista de varios elementos; determinar lo que se muestra cuando no hay ningn elemento correspondiente. Analoga con la programacin en PHP/MySQL Quienes ya han programado peticiones MySQL en PHP saben que el tratamiento se desarrolla en dos tiempos: la construccin de la sintaxis de la peticin (que consiste en decir quiero recuperar la lista de los artculos contenidos en tal seccin...); el anlisis y presentacin de los resultados a travs de un bucle. Estos son los dos sucesos que, en SPIP, se gestionan mediante los bucles. II.2.2. Las balizas SPIP Gracias a los bucles, hemos recuperado elementos nicos o listas de elementos: por ejemplo una lis- ta de artculos o una lista de secciones... Sin embargo, cada elemento de esas listas est compuesto por varios elementos precisos: por ejem- plo un artculo se compone de un ttulo, un antettulo, un subttulo, un texto de introduccin (chapeau), un texto principal, un post-scriptum, etc. En SPIP tambin existen balizas especficas que permiten indi- car con precisin en qu lugar se muestran los elementos: situar el ttulo aqu, situar el texto aqu... II.2.3. Las balizas dentro de los bucles Veamos, a travs de un caso clsico, el principio de funcionamiento general de un bucle acompaado por sus balizas (atencin, esto no es lenguaje SPIP, sino una descripcin lgica): BUCLE: mostrar la lista de los artculos de esta seccin mostrar aqu el ttulo del artculo mostrar el subttulo mostrar el texto Fin del BUCLE Este bucle, analizado por SPIP, puede dar tres resultados diferentes. No hay ningn artculo en esta seccin. En este caso, evidentemente, no se usa ninguno de los elementos mostrar aqu... (ttulo, subttu- lo...). En cambio, si se ha previsto, se puede mostrar un mensaje de tipo No hay artculos. Slo hay un artculo en esta seccin. En este caso, simplemente, la pgina HTML se construye segn el modelo del bucle: Ttulo del artculo Subttulo Texto del artculo
- Pgina 16 de 114 - Hay varios artculos en esta seccin. La descripcin de compaginacin (mostrar aqu...) ahora se va a calcular sucesivamente para cada uno de los artculos. Sencillamente esto nos da: Ttulo del artculo 1 Subttulo del artculo 1 Texto del artculo 1 Ttulo del artculo 2 Subttulo del artculo 2 Texto del artculo 2 ... Ttulo del ltimo artculo Subttulo del ltimo artculo Texto del ltimo artculo La continuacin de esta gua de referencia se realizar de la siguiente manera: sintaxis general de los bucles; sintaxis general de las balizas de SPIP; y, a continuacin, una pgina especfica para cada tipo de bucle, indicando qu balizas se pueden usar.
II.3. La sintaxis de los bucles II.3.1. Advertencia: Arqueologa del lenguaje natural Los trminos que utilizan los lenguajes de programacin generalmente derivan del ingls ( FOR I==0 TO N DO ... ). Tal no es el caso de SPIP que fue creado inicialmente en francs. Por eso vers que los trminos uti- lizados derivan del francs: BOUCLE, ARTICLE, RUBRIQUE, MOT, ... 2
Se ha discutido la posibilidad de traducir este lenguaje pero claramente las complicaciones que impli- cara no valen la pena. Por lo tanto si quieres aprender a hacer un esqueleto SPIP debers aprender algo ms de una decena de palabras de francs. No es la mayor complicacin... II.3.2. La sintaxis bsica La sintaxis simplificada de un bucle es el siguiente: < BOUCLEn(TYPE){criterio1}{criterio2 }... { criteriox } > el cdigo SPIP + HTML </BOUCLEn > Vimos en la explicacin de los bucles y las balizas, que el cdigo HTML ms las balizas SPIP se repi- ten tantas veces como elementos extrados de la base de datos al ejecutar el bucle (es decir una vez, varias veces, o ninguna). La lnea significativa, aqu, es: < BOUCLEn(TYPE){criterio1}{criterio2 }... { criteriox } > el elemento BOUCLE es la orden que indica que se trata de un bucle SPIP; es decir que no se puede modificar; o, dicho de otra manera, que todos los bucles de SPIP comienzan con la instruccin BOU- CLE. el elemento N es, a eleccin, el nombre o el nmero del bucle. Este elemento lo elige el/la webmas- ter/webmisstres, para cada bucle que utilice. Veremos ms adelante que es posible (es incluso todo el inters de la operacin) utilizar varios bucles en el mismo esqueleto: por ende darles un nombre es esencial para identificarlos. Si decides numerar los bucles, por ejemplo, la sintaxis se convierte (para el bucle 5): < BOUCLE5... > ... </BOUCLE5 > Si decides darle un nombre a tus bucles (es generalmente ms prctico, el cdigo es ms legible), es imprescindible hacer preceder este nombre por el smbolo "_" (que generalmente se llama underscore). Por ejemplo: < BOUCLE_subsecciones... >
2 bucle - loop, artculo, seccin, palabra (clave),... Para mayores explicaciones de la terminologa, vase el lxico co m- pleto francs/espaol de SPIP.
- Pgina 17 de 114 - ... </BOUCLE_subsecciones > El Elemento (TYPE). Este elemento es de primera importancia: indica qu tipo de elementos se de- sea recuperar. La sintaxis es significativa: el TIPO (TYPE) se indica entre parntesis (sin espacios), en maysculas, y este TIPO debe corresponder obligatoriamente a uno que exista entre los tipos considera- dos por SPIP (que encontrars en la actual documentacin): ARTICLES, RUBRIQUES, AUTEURS, BREVES, etc. (ARTCULOS, TTULOS, AUTORES, BREVES, etc.) Para el ejemplo precedente, obtenemos: < BOUCLE_subsecciones(RUBRIQUES)... > ... </BOUCLE_subsecciones > Los Criterios {criterio1}{criterio2}... indican simultneamente: segn qu criterios se desea seleccionar los elementos de la base de datos (extraer las subsecciones incluidas en tal seccin, extraer las otras secciones existentes al mismo nivel jerrquico que la pre- sente seccin...), la manera de la cual se clasificarn o se limitarn los elementos (clasificar los artculos segn su fe- cha, segn su ttulo... para extraer solamente los tres primeros artculos, para extraer la mitad de los artculos...). Como se pueden combinar criterios, se puede fabricar muy fcilmente extracciones muy potentes de la base de datos, como "extraer la lista de los 5 artculos ms recientes escritos por tal autor": <BOUCLE_mismo_autor(ARTICLES){id_auteur}{par date}{inverse}{0,5}> ... </BOUCLE_mismo_autor> Los diferentes criterios y su sintaxis sern clarificados a continuacin, para cada tipo de bucle (cier- tos criterios funcionan para todos los tipos de bucles, algunos son especficos a ciertos tipos). II.3.3. Sintaxis completa La sintaxis indicada previamente puede ser completada por elementos condicionales. De hecho, el bucle precedente fija sucesivamente los elementos contenidos dentro del bucle. SPIP permite adems especificar qu se incluye antes y despus del bucle si hay varios resultados y qu se inserta si no hay ningn resultado. Eso da: <bn> cdigo HTML opcional antes <BOUCLEn(TYPE){criterio1}{criterio2 }... { criteriox } > cdigo HTML + seudo-balizas SPIP </BOUCLEn> cdigo HTML opcional antes </bn> cdigo HTML alternativo <//bn> El cdigo opcional antes (precedido por < bn >) solo se muestra si el bucle extrae por lo menos una respuesta. Se incluye antes de los resultados del bucle. El cdigo opcional despus (que acaba por </bn>) se muestra solamente si el bucle contiene por lo menos una respuesta. Se incluye despus de los resultados del bucle. El cdigo alternativo (que acaba por <//bn>) se muestra en el lugar del bucle (y remplazando tambin los cdigos opcionales antes y despus) si el bucle no encontr ninguna respuesta. Por ejemplo, el cdigo: <B1> Esta seccin contiene los elementos siguientes: <UL> <BOUCLE1(ARTICLES){id_rubrique}> <LI>#TITRE </BOUCLE1> </UL> </B1> Esta seccin no contiene un artculo. <//B1> da los resultados siguientes: Hay solamente un artculo: Esta seccin contiene los elementos siguientes: <UL>
- Pgina 18 de 114 - <LI> titulo del artculo </UL> <code> - {{hay varios artculos: }} <code> Esta seccin contiene los elementos siguientes: <UL> <LI> Ttulo del artculo 1 <LI> Ttulo del artculo 1 ... <LI> Ttulo del ltimo artculo </UL> No hay ningn artculo: Esta seccin no contiene ningn artculo. Nota: La manera de la cual SPIP interpreta los bucles prohbe poner un bucle entre <B1> y <BOUCLE1>. Sin embargo, es posible poner bucles adicionales en las piezas opcionales si- tuadas despus de la definicin <BOUCLE1...>. Si debes realmente instalar un bucle en la parte opcional antes, es necesario pasar por un comando <INCLURE()> (ver ms adelan- te). II.3.4. Criterios de entorno en cascada Cada bucle realiza la seleccin de los elementos extrados de la base de datos en funcin de los crite- rios. Estos criterios corresponden al entorno en el cual se encuentra el bucle. Por ejemplo: si se considera un bucle del estilo "extraer los artculos incluidos en esta seccin", es necesario saber de qu seccin se trata. Es lo que se llama el entorno. El entorno proporcionado por el URL Cuando se visita una pgina de un sitio SPIP, su direccin contiene generalmente una variable. Por ejemplo: rubrique.php3?id_rubrique=15 Esta variable define as un primer entorno: el bucle "extraer los artculos incluidos en esta sec- cin" debe entonces entenderse como la "extraccin de los artculos de la seccin 15". Claramente, con el mismo cdigo del esqueleto, si se llama la direccin: rubri- que.php3?id_rubrique=7 La interpretacin de este bucle se convertir en "extraer los artculos de la seccin 7". El entorno proporcionado por los otros bucles dentro de un bucle, el entorno se modifica pa- ra cada elemento de respuesta del bucle. Al colocar bucles al interior unos de otros se hereda as entornos imbricados unos en otros. As, en la estructura siguiente: <BOUCLE_articulos: extraer los artculos de esta seccin> <LI>Imprimir el ttulo del articulo <BOUCLE_autores: extraer los autores de este artculo> Nombre del autor </BOUCLE_autores> </BOUCLE_articulos> Debe entenderse que: el primer bucle (BOUCLE_articulos) extrae los artculos en funcin de la seccin, en funcin del entorno que proporciona el URL (id_rubrique=15 por ejemplo); en este bucle, uno obtiene uno o ms artculos; "al interior" de cada uno de estos artculos, hay un entorno diferente (el del artculo, es decir, por ejemplo, id_article=199); el segundo bucle (BOUCLE_autores), que se encuentra al interior del primer bucle, depende para cada de sus ejecuciones sucesivas (se ejecuta para cada uno de los artculo del primer bucle): "ex- traer los autores de este artculo" sucesivamente se convierte en "extraer los autores del primer ar- tculo", "del segundo artculo" etctera. Los resultados de los bucles dependen de aquellos de los bucles en los que estn incluidos, y el bucle inicial depende de un parmetro fijado en la direccin de la pgina. II.3.5. Bucles incluidos y bucles sucesivos Si, como acabamos de ver, se pueden incluir bucles unos en otros, tambin se pueden instalar bucles sucesivos. En ese caso, estos no influyen unos sobre otros. Solo dependen del entorno de URL. Por ejemplo, la pgina de una seccin se compone tpicamente de los elementos siguientes: <BOUCLE_seccion(RUBRIQUES){id_rubrique}> Ttulo de la seccin <BOUCLE_articulos(ARTICLES){id_rubrique}>
- Pgina 19 de 114 - <LI> Ttulo del articulo </BOUCLE_articulo> <BOUCLE_sub_seccion(RUBRIQUES){id_rubrique}> <LI> Ttulo de la sub-seccin </BOUCLE_sub_seccion> </BOUCLE_seccion> No hay contenido de seccin en esta direccin <//B_seccion> El primer bucle (BOUCLE_seccion) depende de la variable pasada en el URL de la pgina (id_rubrique=15 por ejemplo). Los bucles siguientes (BOUCLE_articulos y BOUCLE_sub_seccion) estn al interior del primer bucle. Si no existe una seccin 15, el primer bucle no da ningn resultado (se imprime el cdigo alternativo "No hay contenido de seccin..."), y se ignoran totalmente los dos bucles incluidos. Pero si existe una seccin 15, entonces se analizan los dos sub-bucles. En cuanto a stos, se presentan sucesivamente, uno despus del otro. Dependen de los resultados del bucle en el que se encuentran, pero son independientes uno de otro. Si no hay artculos en la seccin 15 (BOUCLE_articulos), igual se imprimirn los ttulos de las sub-secciones (BOUCLE_sub_seccion), y recprocamente.
II.4. La sintaxis de las balizas SPIP Cada tipo de bucle permite seleccionar los elementos de la base de datos de SPIP: artculos, seccio- nes, breves, etc. Cada uno de estos elementos est a su vez compuesto por elementos precisos: un ttu- lo, una fecha, un texto, etc. En el interior de un bucle, es necesario poder indicar en qu lugar del cdigo HTML se ponen tal o tal de dichos elementos. Para esto vamos a utilizar las balizas SPIP. II.4.1. Funcionamiento simplificado Una baliza SPIP se coloca en el interior de un bucle (pues hay que saber si se quiere recuperar un elemento de un articulo, una seccin. El nombre de estas balizas es generalmente simple, y se propor- cionar, para cada tipo de bucle, la lista completa de balizas que se pueden utilizar. A una baliza siempre la precede el signo diesis (#). Por ejemplo, imprimamos una lista de artculos: <BOUCLE_articulos(ARTICLES){id_rubrique}> <LI> #TITRE </BOUCLE_articulos> Cuando el bucle ser ejecutado, la baliza SPIP #TITRE ser cada vez remplazada por el ttulo del ar- tculo en cuestin: <LI> Ttulo del artculo 1 <LI> Ttulo del artculo 2 ... <LI> Ttulo del ltimo artculo Nada muy complicado: nos contentamos de indicar en el interior del cdigo HTML el nombre del ele- mento deseado, y ste es remplazado por el contenido extrado de la base de datos. II.4.2. Cdigos opcionales En la prctica, un elemento de contenido se acompaa a menudo con cdigo HTML (que slo debe incluirse si este elemento existe), sin lo cual el formateo y la paginacin se vuelven imprecisas. Por ejemplo, existe una baliza SPIP para indicar el ante-ttulo de un artculo. Sin embargo, numero- sos artculos no tienen ante-ttulo. Completemos el ejemplo precedente: <BOUCLE_articulos(ARTICLES){id_rubrique}> <LI> #SURTITRE<BR> #TITRE </BOUCLE_articulos> que, clsicamente, nos da una lista de artculos, ahora con la indicacin del ttulo y del ante-ttulo de cada artculo. Pero que pasa si el artculo no tiene ante-ttulo? Obtenemos el cdigo: <LI> <BR> , es decir una cua 3 seguida de una lnea en blanco. Lo que debemos hacer: imprimir el cdigo <BR> slo cuando el artculo tiene un ante-ttulo.
3 Alguien tiene una idea mejor para la traduccin de "puce"?
- Pgina 20 de 114 - La sintaxis de la baliza SPIP es entonces: [ texto opcional antes (#BALISE) texto opcional despues ] La baliza que determina el campo SPIP se pone entre parntesis, y el conjunto de texto condicional entre corchetes. El texto opcional antes y el texto opcional despus slo se imprimen si existe, en la ba- se de datos, un campo no vaco que corresponde a dicha baliza. Nuestro ejemplo da as: <BOUCLE_articulos(ARTICLES){id_rubrique}> <LI> [(#SURTITRE)<BR>] #TITRE </BOUCLE_articulos> Y as se obtiene lo que se buscaba: si existe un ante-ttulo se imprime seguido del <BR>; y si no existe, tambin el <BR> desaparece. II.4.3. Filtrar los resultados Es frecuente querer modificar un elemento de la base de datos, ya sea para obtener una visualiza- cin diferente (por ejemplo imprimir el ttulo todo en mayscula), o para recuperar un valor que se de- duce a partir de ese elemento. (por ejemplo, imprimir el da de la semana correspondiente a una fecha). En SPIP se pueden directamente aplicar filtros a los elementos recuperados de la base de datos, indi- cndolo en la sintaxis de las balizas SPIP, lo que nos da: [ opcin antes (#BALIZA|filtro1|filtro2|...|filtron) opcin despus ] Entre parntesis, hay que poner la baliza seguida por el o los filtros sucesivos, separados por una ba- rra vertical (carcter |, conocido con el nombre pipe en el mundo UNIX) Nota: En realidad los filtros son funciones PHP. SPIP viene con una serie de filtros ya definidos, pero uno puede agregar sus propios filtros usando las funciones PHP adecuadas (con la con- dicin de que estas funciones slo utilicen una variable), como veremos ms adelante. He aqu algunos filtros definidos por SPIP 4 : majuscules (maysculas), pasa el texto a maysculas (este filtro es ms potente que la funcin PHP correspondiente, que no funciona con los caracteres acentuados); por ejemplo: [(#TITRE|majuscules)] justifier (justificar), imprime el texto justificado a la izquierda y a la derecha (es decir, en HTML:); por ejemplo: [(#TEXTE|justifier)] La presente documentacin consagra un artculo detallado (vase cap. II.20. Los filtros de SPIP) a los diferentes filtros que vienen con SPIP. II.4.4. Evitar las transformaciones por SPIP SPIP aplica transformaciones tipogrficas a todos los textos extrados de la base de datos. En particular, pone espacios insecables antes de ciertos smbolos (puntos y coma, etc.), y analiza los atajos de formateo. En ciertos casos, puede ser necesario evitar estas transformaciones para recuperar directamente en texto en bruto, tal cual se encuentra en la base de datos. Para eso, es suficiente agregar un asterisco (*) luego de la baliza SPIP. Lo que nos da: [ opcin antes (#BALIZA*|filtre1|filtre2|...|filtren) opcin despus ] II.4.5. Filtros de varias variables Cuidado: este prrafo est dirigido a usuari@s SPIP algo experimentad@s. [SPIP 1.5] autori- za a pasar parmetros en los filtros. La sintaxis es: [(#BALIZA|filtro{arg1, arg2}|...)] La funcin filtro debe ser definido de la manera siguiente en el fichero mes_fonctions.php3: <?php function filtro($texte, $arg1='valor por omisin 1', $arg2='valor por omisin 2') { ....clculos.... return (una cadena de caracteres); }
4 Los nombres de estos filtros estn an en francs. Es muy posible que en el futuro se traduzcan: debera ser suficie n- te declarar un sinnimo de la funcin PHP.
- Pgina 21 de 114 - ?> Tal funcin debe tener forzosamente como primera variable el texto a tratar (en este caso, el texto de #BALIZA).
II.5. El bucle ARTICLES (artculos) Un bucle de artculos se codifica poniendo ARTICLES (con una s) entre parntesis: <BOUCLEn(ARTICLES){criterios...}> Los elementos contenidos en tal bucle son artculos. Nota. Un bucle ARTICLES slo devuelve artculos publicados. (No hay ninguna manera de mos- trar artculos en curso de redaccin, propuestos a la publicacin o rechazados.) II.5.1. Los criterios de seleccin Se utilizar uno u otro de los criterios siguientes para indicar como seleccionar los elementos. {tout} (todo) se selecciona la totalidad de los artculos del sitio (en todas las secciones). til en particular para mostrar los artculos ms recientes (en la integralidad del sitio) en la portada 5 . {id_article} devuelve el artculo cuyo identificador es id_article. Como el identificador de cada artculo es nico, este criterio devuelve una respuesta o ninguna. {id_rubrique} devuelve la lista de artculos contenidos en la seccin id_rubrique. {id_secteur} devuelve los artculos en este sector (un sector es una seccin que no depende de ninguna otra seccin, es decir situada en la raz del sitio). [SPIP 1.4] {branche}: el criterio {branche} (rama) devuelve el conjunto de artculos de la sec- cin y de sus sub-secciones. (Es una especie de extensin del criterio {id_secteur}. Sin embargo, al contrario de {id_secteur=2}, no es posible llamar directamente una branche, por ejemplo con {branche=2}: primero se debe crear un bucle que determine la seccin y dentro de ste se pone un bucle que lleve el criterio branche. Hablando tcnicamente, el contexto corriente debe dar la sec- cin en cuestin. Este criterio se debe usar con parsimonia: si tu sitio est bien estructurado, no de- beras necesitarlo, salvo en casos muy particulares.) {id_auteur} devuelve los artculos correspondientes a este identificador de autor (til para indicar la lista de artculos escritos por un autor). {id_mot} devuelve los artculos correspondientes a este identificador de palabra clave (til para indicar la lista de los artculos que tratan de cierto tema). [SPIP 1.3] {titre_mot=xxxx}, o {type_mot=yyyy} devuelve los artculos ligados a la palabra clave cuyo nombre es xxxx, o ligados a las palabras claves cuyo grupo de palabras claves es yyyy. Cuidado, no se pueden utilizar varios criterios {titre_mot=xxxx} o {type_mot=yyyy} en un mismo bucle. [SPIP 1.4] {id_groupe=zzzz} permite seleccionar los artculos ligados a un grupo de palabras claves; principio idntico al criterio {type_mot} precedente, pero, como trabajamos con un identi- ficador (numero del grupo), la sntaxis ser ms limpia. [Nota: Este criterio no es (en el estado actual del desarrollo de SPIP) acumulable con el precedente {type_mot=yyyy}] [SPIP 1.7.1] {lang} selecciona los artculos del idioma indicado en la direccin de llamada a la pgina. [SPIP 1.7.2] Los criterios {date} (o {date=...} o {date==...}) permiten seleccionar un artculo en funcin de la fecha pasada en la URL. {recherche} devuelve los artculos correspondientes a las palabras indicadas en la interfaz de bs- queda (motor de bsqueda incorporado a SPIP). Ver la pgina consagrada al motor de bsqueda (vase cap. II.19. Los bucles de bsqueda). II.5.2. Los criterios de presentacin Una vez fijado uno de estos criterios, se podrn agregar los criterios siguientes para restringir el nu- mero de elementos seleccionados. Por supuesto, se aplican los criterios comunes a todos los bucles, establecidos en el captulo 16. {exclus} (excluido) permite excluir del resultado el artculo en el cual ya nos encontramos (por ejemplo, cuando se seleccionan los artculos contenidos en la misma seccin, no se quiere mostrar un enlace hacia el artculo que se est visualizando). {doublons} o {unique} (duplicados o nico, estos dos criterios son rigurosamente idnticos) permiten prohibir la seleccin de artculos ya seleccionados en otros bucles a su vez marcados {doublons}. [SPIP 1.7] {traduction} (traduccin) permite extraer todos los artculos que son una traduccin del artculo en curso.
5 En realidad, el criterio tout no se trata de manera informtica: es un ayuda memoria para el/la webma s- ter/webmistress; se obtiene el mismo resultado si no se indica ninguno de los criterios siguientes.
- Pgina 22 de 114 - [SPIP 1.7] {origine_traduction} (origen_traduccin) permite extraer, entre las traducciones del artculo en curso, el artculo que constituye la versin original. II.5.3. Las balizas de este bucle Las balizas extradas de la base de datos: Las balizas siguientes corresponden a los elementos directamente extrados de la base de datos. Puedes utilizarlos igualmente como criterio de clasificacin (por ejemplo: {par date} o {par titre}). #ID_ARTICLE muestra el identificador nico del artculo. til para fabricar enlaces de hipertexto no previstos (por ejemplo hacia una pgina Imprimir el artculo). #SURTITRE devuelve el antettulo. #TITRE devuelve el ttulo del artculo. #SOUSTITRE devuelve el subttulo. #DESCRIPTIF devuelve el descriptivo. #CHAPO devuelve el texto de introduccin (epgrafe, entradilla, copete, como sea que se lo llame). #TEXTE devuelve el texto principal del artculo. #PS devuelve la posdata del artculo (post-scriptum). Las fechas: #DATE, #DATE_REDAC, #DATE_MODIF estn explicadas en el cap. II.23. La ges- tin de las fechas. [SPIP 1.7] #LANG devuelve el cdigo del idioma del artculo, en dos letras 6 . Con el filtro tradui- re_nom_langue se obtiene el nombre completo del idioma, en ese mismo idioma. Por ejemplo, dentro de un artculo que est en francs #LANG devolver fr y (#LANG|traduire_nom_langue) franais. Existe una documentacin especfica acerca del mul- tilingismo de SPIP. [SPIP 1.7] #LANG_DIR devuelve el sentido de escritura del idioma del artculo corriente. Puede tomar dos valores: LTR, de izquierda a derecha (left to right) o RTL de derecha a izquierda (right to left). #ID_RUBRIQUE es el identificador de la seccin de la cual depende el artculo. #ID_SECTEUR es el identificador del sector del cual depende el artculo (siendo el sector la seccin situada en la raz del sitio). #NOM_SITE y #URL_SITE corresponden a los campos del enlace de hipertexto del artculo (si es que has activado esta opcin). #VISITES es el nmero de visitas de este artculo. #POPULARITE da el porcentaje de popularidad de este artculo, ver el cap. II.22. La popularidad de los artculos. Las balizas calculadas por SPIP: Los elementos siguientes son calculados por SPIP. (No pueden ser utilizados como criterio de clasifi- cacin.) #NOTES las notas de fin de pgina (calculadas a partir del anlisis del texto). #INTRODUCTION: [SPIP 1.4] si el artculo contiene un descriptivo, es ste que se utiliza aqu; si no, SPIP extrae los 600 primeros caracteres del inicio del artculo (epgrafe, y luego el texto). [SPIP 1.3] En las versiones precedentes de SPIP, son sistemticamente los primeros caracteres del artcu- lo (epgrafe, y luego el texto) que se tienen en cuenta (el descriptivo no se utiliza). #LESAUTEURS los autores de este artculo. Evita tener que crear un bucle AUTEURS para obtener el mismo resultado. #URL_ARTICLE es la URL de la pgina del artculo. #FORMULAIRE_FORUM fabrica la interfaz que permite colgar un mensaje de respuesta a este artculo. #FORMULAIRE_SIGNATURE fabrica la interfaz que permite firmar la peticin asociada a este artculo. #PARAMETRES_FORUM fabrica la lista de variables necesarias a la interfaz del formulario que permite responder a este artculo. Por ejemplo: [<A HREF="forum.php3?(#PARAMETRES_FORUM)">Responder a este artculo</A>] Los logos: #LOGO_ARTICLE el logo del artculo, eventualmente con la gestin del sobrevuelo por el ratn. #LOGO_ARTICLE_RUBRIQUE el logo del artculo, eventualmente reemplazado por el logo de la seccin si no existe logo especfico del artculo. #LOGO_RUBRIQUE el logo de la seccin del artculo. Los logos se incorporan en un esqueleto SPIP de la manera siguiente: [(#LOGO_ARTICLE|alineacin|direccin)] La alineacin puede ser left (izquierda) o right (derecha). La direccin es la URL de destino del enlace de este logo (por ejemplo #URL_ARTICLE). Si no se indica una direccin, el botn no es un enlace.
6 La referencia de los cdigos de lengua es, en principio, la norma ISO 639-2 (disculparn que la referencia est en i n- gls y en Estados Unidos, pero la ISO ya no pone sus normas accesibles en lnea).
- Pgina 23 de 114 - Si se quiere recuperar directamente el nombre del fichero del logo (mientras que las balizas prece- dentes fabrican el cdigo HTML completo para insertar la imagen en la pgina), por ejemplo para mos- trar una imagen en el fondo de un cuadro, se utilizar el filtro |fichier como sigue: [(#LO- GO_ARTICLE|fichier)] Por otra parten dos balizas permiten recuperar uno solo de los dos logos: #LOGO_ARTICLE_NORMAL es el logo principal; #LOGO_ARTICLE_SURVOL es el segundo logo, que normalmente aparece cuando se lo sobre- vuela con el ratn.
II.6. El bucle RUBRIQUES (secciones) El bucle RUBRIQUES (secciones o rbricas, en francs) devuelve una lista de... secciones (extrao, no?) <BOUCLEn(RUBRIQUES){criterios...}> Nota. Un bucle RUBRIQUES slo cuelga secciones activas, es decir que contengan artculos publicados, documentos adjuntos (a partir de [SPIP 1.4]), sitios publicados, o sub- secciones a su vez activas. De esta manera, se evita caer en secciones callejn sin salida, que no presenten ningn elemento de navegacin de inters. A partir de la versin SPIP 1.7.1, es posible forzar a que aparezcan las secciones vacas (ver ms abajo). II.6.1. Los criterios de seleccin Se pueden utilizar uno u otro de los siguientes criterios para indicar como se seleccionan los elemen- tos. {tout}: todo, selecciona la totalidad de las secciones del sitio. {id_rubrique} devuelve la seccin cuyo identificador es id_rubrique. Como el identificador de ca- da seccin es nico, este criterio devuelve una o ninguna respuesta. {id_secteur} devuelve las secciones del sector de la seccin actual 7 . (Tambin se puede, por ex- tensin, utilizar el criterio {branche} (rama), descrito en El bucle ARTICLES (artculos)). {id_parent} madre, devuelve la lista de secciones (sub-secciones) que contiene la seccin corrien- te. {racine} raz, devuelve la lista de sectores (rigurosamente idntico a {id_parent=0}). {id_enfant} hija, devuelve la seccin que contiene la seccin corriente (une sola respuesta; o cero respuesta si la seccin corriente est situada en la raz del sitio). {meme_parent}: mismo_padre, devuelve la lista de secciones que dependen de la misma seccin que la seccin corriente. Permite mostrar las secciones hermanas que se encuentran al mismo ni- vel de jerarqua. {recherche} bsqueda devuelve las secciones que corresponden a las palabras indicadas en la in- terfaz de bsqueda (Se trata del motor de bsqueda incorporado a SPIP. Vase cap. II.19. Los bu- cles de bsqueda). A partir de la versin SPIP 1.4, se pueden ligar las secciones a palabras claves. Por ende, se pue- den utilizar los criterios de de palabras claves en los bucles (RUBRIQUES): o {id_mot}, {titre_mot=xxx} recuperan las secciones ligadas a la palabra clave cuyo nmero (identificador) es id_mot o cuyo ttulo es titre_mot; o {id_groupe}, {type_mot=yyyy} recuperan las secciones ligadas a las palabras clave del grupo cuyo nmero (identificador) es id_groupe o cuyo ttulo es type_mot. [SPIP 1.7.1] {tout} muestra las secciones vacas adems de aquellas que contienen elementos publicados. Se reservar este criterio a casos muy especficos; en efecto, por omisin, SPIP no muestra en el sitio pblico las secciones que no contienen ningn elemento activo, de manera a asegurarse que el sitio no tenga callejones sin salida (navegacin que d acceso a pginas que no proponen ningn contenido). II.6.2. Los criterios de presentacin Una vez fijado uno de los criterios precedentes, se pueden agregar los criterios siguientes para res- tringir el nmero de elementos presentados. Evidentemente, los criterios comunes a todos bucles se aplican. {exclus} permite excluir del resultado la seccin en la cual ya nos encontramos (til en conjuncin con meme_parent). {doublons} o {unique} (estos dos criterios son rigurosamente idnticos) permite no mostrar las secciones que ya aparecieron en otros bucles de la misma pgina.
7 El sector es la seccin situada en la raz del sitio de la cual depende jerrquicamente la seccin corriente.
- Pgina 24 de 114 - II.6.3. Las balizas de este bucle Las balizas extradas de la base de datos: Las balizas siguientes corresponden a los elementos directamente extrados de la base de datos. Tambin puedes utilizarlos como criterios de clasificacin (generalmente por ttulo: {par titre}). #ID_RUBRIQUE muestra el identificador nico de la seccin. #TITRE devuelve el ttulo de la seccin. #DESCRIPTIF devuelve el descriptivo (descripcin rpida) de la seccin. #TEXTE devuelve el texto principal de la seccin. #ID_SECTEUR es el identificador del sector de la seccin 8 . Las balizas calculadas por SPIP: Los elementos siguientes son calculados por SPIP. (No pueden ser utilizados como criterio de clasifi- cacin.) #NOTES las notas de fin de pgina (calculadas a partir del anlisis del texto). #INTRODUCTION los 600 primeros caracteres del texto; se suprimen las particularidades tipogr- ficas (negrita, cursiva,...). #URL_RUBRIQUE es la direccin URL de la pgina de la seccin. [SPIP 1.4] #DATE muestra la fecha de la ltima publicacin efectuada en la seccin y sus sub- secciones (artculos, breves...). #FORMULAIRE_FORUM fabrica la interfaz que permite colgar un mensaje en el foro de esta sec- cin. #PARAMETRES_FORUM fabrica la lista de variables necesarias a la interfaz del formulario del foro de la seccin. Por ejemplo: [<A HREF="forum.php3?(#PARAMETRES_FORUM)">Responder a esta seccin</A>] #FORMULAIRE_SITE [SPIP 1.4] El formulario de sitio #FORMULAIRE_SITE muestra una inter- faz que permite a los visitantes del sitio proponer sitios para ser referenciados. Estos sitios aparece- rn como propuestos en el espacio privado, a la espera de una validacin por los administradores. Tales formularios slo aparecen si activas la opcin Gestionar un directorio de sitios en la Con- figuracin del sitio en el espacio privado y si indicas que los/as visitantes del sitio pblico son quin puede proponer los sitios referenciados. El logo: #LOGO_RUBRIQUE el logo de la seccin, eventualmente con la gestin del sobrevuelo por el ra- tn. Si no hay logo para esta seccin, SPIP busca automticamente si existe un logo en la seccin de la cual depende (la seccin "madre"), y as sucesivamente de manera recursiva, hasta el logo del sitio. El logo se incorpora en un esqueleto SPIP de la manera siguiente: [(#LOGO_RUBRIQUE|alineamiento|direccin)] [SPIP 1.4] #LOGO_RUBRIQUE_NORMAL muestra el logo sin sobrevuelo; #LO- GO_RUBRIQUE_SURVOL muestra el logo de sobrevuelo: estas dos balizas permiten, por ejemplo, en una seccin dada, de colgar, en una lista de todas las secciones "hermanas", un logo con so- brevuelo para los enlaces hacia las otras secciones, y de dejar siempre visible el logo de sobrevue- lo en la seccin activa.
II.7. El bucle BREVES El bucle BREVES, como su nombre indica, devuelve una lista de breves. <BOUCLEn(BREVES){criterios...}> II.7.1. Los criterios de seleccin Se pueden utilizar uno u otro de los siguientes criterios para indicar como se seleccionan los elemen- tos. {tout}: todo, selecciona todas las breves del sitio. {id_breve} devuelve la breve cuyo identificador es id_breve. Como el identificador de cada breve es nico, este criterio devuelve una o ninguna respuesta. {id_rubrique} devuelve las breves de la seccin actual. [SPIP 1.2] {id_mot} devuelve todas las breves ligadas a la palabra clave actual (dentro de un bucle de tipo (MOTS)). [SPIP 1.3] {titre_mot=xxxx}, o {type_mot=yyyy} devuelve las breves ligadas a la palabra clave cuyo nombre es xxxx, o ligadas a palabras clave del grupo de palabras clave yyyy. Cui- dado, no se pueden usar varios criterios {titre_mot=xxxx} o {type_mot=yyyy} en un mismo bucle.
8 Vase nota anterior.
- Pgina 25 de 114 - [SPIP 1.4] {id_groupe=zzzz} permite seleccionar breves ligadas a un grupo de palabras clave utilizando el identificador (nmero de grupo). Es similar al {type_mot} precedente, pero la sintaxis ser ms rigurosa; al utilizar el identificador nico. {recherche} bsqueda, devuelve las breves que corresponden a las palabras indicadas en la inter- faz de bsqueda (se trata del motor de bsqueda incorporado a SPIP: ver la documentacin consa- grada al motor de bsqueda (vase cap. II.19. Los bucles de bsqueda). II.7.2. Los criterios de presentacin Se aplican los criterios comunes a todos bucles. II.7.3. Las balizas de este bucle Las balizas extradas de la base de datos: Las balizas siguientes corresponden a los elementos directamente extrados de la base de datos. Tambin puedes utilizarlos como criterios de clasificacin (generalmente por ttulo: {par titre}). #ID_BREVE devuelve el identificador nico de la breve. #TITRE devuelve el ttulo de la breve. #DATE devuelve la fecha de publicacin de la breve. #TEXTE devuelve el texto de la breve. #NOM_SITE devuelve el nombre del sitio indicado como referencia. #URL_SITE la direccin (URL) del sitio indicado como referencia. #ID_RUBRIQUE el identificador de la seccin de la cual depende la breve actual. Las balizas calculadas por SPIP: Los elementos siguientes son calculados por SPIP. (No pueden ser utilizados como criterio de clasifi- cacin.) #NOTES las notas de fin de pgina (calculadas a partir del anlisis del texto). #INTRODUCTION los 600 primeros caracteres del texto; se suprimen las particularidades tipogr- ficas (negrita, cursiva,...). #URL_RUBRIQUE es la direccin URL de la pgina de la breve. #FORMULAIRE_FORUM fabrica la interfaz de formulario que permite colgar un mensaje en el foro de esta breve. #PARAMETRES_FORUM fabrica la lista de variables utilizadas por la interfaz del formulario del fo- ro de la breve. Por ejemplo: [<A HREF="forum.php3?(#PARAMETRES_FORUM)">Responder a esta breve</A>] El logo: #LOGO_RUBRIQUE el logo de la seccin, eventualmente con la gestin del sobrevuelo por el ra- tn. El logo se incorpora en un esqueleto SPIP de la manera siguiente: LOGO_BREVE|alineamiento|direccin)] #LOGO_BREVE_RUBRIQUE muestra, si existe, el logo de la breve; y si ste no ha sido atribuido, SPIP muestra el logo de la seccin [SPIP 1.4].
II.8. El bucle AUTEURS (autores) El bucle AUTEURS, como indica su nombre, devuelve una lista de autores. Si no se explicita ningn criterio de seleccin, el bucle devolver todos los autores que tienen al menos un artculo publicado. <BOUCLEn(AUTEURS){criterios...}> II.8.1. Los criterios de seleccin Se utilizar uno u otro de los criterios siguientes para indicar cmo seleccionar los autores y sus da- tos. {tout} se seleccionan todos los autores, que hayan escrito algn artculo o no. {id_auteur} devuelve el autor cuyo identificador es id_auteur. Como el identificador de cada au- tor es nico, este criterio devuelve una respuesta o cero. {id_article} devuelve todos los autores de este artculo. II.8.2. Los criterios de presentacin Se aplican los criterios comunes a todos los bucles, establecidos en el captulo 16. II.8.3. Las balizas de este bucle Las balizas extradas de la base de datos:
- Pgina 26 de 114 - Las balizas siguientes corresponden a los elementos directamente extrados de la base de datos. Tambin puedes utilizarlos como criterios de clasificacin (generalmente por nombre: {par nom}). #ID_AUTEUR devuelve el identificador nico del autor. #NOM devuelve el nombre del autor. #BIO devuelve su biografa. #EMAIL devuelve su direccin de correo electrnico. #NOM_SITE devuelve el nombre de su sitio web. #URL_SITE la direccin (URL) de su sitio. #PGP su clave pblica para PGP. #FORMULAIRE_ECRIRE_AUTEUR [SPIP 1.4] construye y cuelga un formulario que permite es- cribir al autor. La configuracin PHP del servidor de hospedaje debe permitir mandar emilios. Este sistema permite no divulgar la direccin de correo electrnico del autor. Las balizas calculadas por SPIP: #NOTES las notas de pie de pgina (calculadas a partir del anlisis del texto). #URL_AUTEUR la direccin de la pgina auteur.php3?id_auteur=.... El logo: #LOGO_AUTEUR el logo del autor, eventualmente con gestin del paso del ratn. El logo se instala de la manera siguiente: [(#LOGO_AUTEUR|alineamiento|direccin)] [SPIP 1.6]: las variantes #LOGO_AUTEUR_NORMAL y #LOGO_AUTEUR_SURVOL permiten un manejo ms detallado de las dos versiones del logo (la normal y la de paso del ratn).
II.9. El bucle FORUMS (foros) El bucle FORUMS devuelve una lista de mensajes de foros. <BOUCLEn(FORUMS){criterios...}> II.9.1. Los criterios de seleccin Se utilizar uno u otro de los criterios siguientes para indicar cmo seleccionar los elementos. {id_forum} devuelve el mensaje cuyo identificador es id_forum. Como el identificador de cada mensaje es nico, este criterio devuelve una respuesta o ninguna. {id_article} devuelve los mensajes del foro del artculo cuyo identificador es el id_article del con- texto. {id_rubrique} devuelve los mensajes que se encuentran en la seccin cuyo identificador es el id_rubrique del contexto. {id_breve} devuelve los mensajes del foro de la breve cuyo identificador es el id_breve del contexto. {id_parent} devuelve los mensajes que dependen de otro mensaje, es decir que fueron publicados en respuesta a dicho mensaje. Indispensable para manejar los "hilos de discusin" (threads) en los foros. {id_enfant} devuelve el mensaje del cual depende el mensaje del contexto (permite subir en la jerarqua del hilo de discusin o threads). (SPIP 1.3) {meme_parent} devuelve los otros mensajes que responden a un mismo mensaje de foro. (SPIP 1.3) {plat}: muestra todos los mensajes del foro sin tener en cuenta su jerarqua. Al agregar este crite- rio, se pueden seleccionar todos los mensajes sea cual sea su posicin en un thread (dentro de los lmites de los otros criterios, por supuesto). Permite, por ejemplo, presentar los mensajes en orden estrictamente cronolgico, o contar el nmero total de contribuciones a un foro. N.B. En ausencia de un criterio {id_forum} o {id_parent}, cuando no se use {plat}, slo se mostrarn los mensajes que no tengan padre (es decir, en la raz de un hilo o thread). {id_secteur} devuelve los mensajes de foro que corresponden al sector. A priori, poco til; pero permite, por ejemplo, hacer un gran foro temtico que agrupa todos los mensajes de un sector, donde quiera que se encuentren. A partir de la versin SPIP 1.4, los mensajes de los foros se pueden vincular con palabras claves (vase cap. II.10. El bucle MOTS (palabras)). Por ende, los criterios de palabras claves ahora se pueden utilizar en los bucles (FORUMS): o {id_mot}, {titre_mot=xxx} recuperan los mensajes cuya palabra clave tiene el nmero id_mot o cuyo ttulo es titre_mot; o {id_groupe}, {type_mot=yyyy} recuperan los mensajes vinculados con palabras claves del grupo cuyo identificador es id_groupe, o cuyo ttulo es type_mot. II.9.2. Los criterios de presentacin Se aplican los criterios comunes a todos los bucles, establecidos en el captulo 16.
- Pgina 27 de 114 - II.9.3. Las balizas de este bucle Las balizas extradas de la base de datos: Las balizas siguientes corresponden a los elementos extrados directamente de la base de datos. Tambin puedes utilizarlos como criterios de clasificacin (generalmente por ttulo: {par titre}). #ID_FORUM devuelve el identificador nico del mensaje. #ID_BREVE devuelve el identificador de la breve a la cual este mensaje est ligado. Cuidado, no es transitivo: un mensaje que responde a un mensaje vinculado a una breve no contiene a su vez el identificador de la breve. #ID_ARTICLE es el identificador del artculo al cual responde el mensaje. #ID_RUBRIQUE es el identificador de la seccin a la cual responde el mensaje. #DATE esa fecha de publicacin del mensaje de foro. #TITRE es el ttulo del mensaje de foro. #TEXTE es el texto del mensaje. #NOM_SITE es el nombre del sitio web indicado por el autor del mensaje. #URL_SITE es la direccin (URL) de este sitio web. #NOM es el nombre del autor del mensaje. #EMAIL es la direccin de correo electrnico del autor del mensaje de foro. #IP es la direccin IP del autor del mensaje durante la sesin de envo de su contribucin al foro. Las balizas calculadas por SPIP: #FORMULAIRE_FORUM construye la interfaz que permite publicar una contribucin en un foro. #PARAMETRES_FORUM construye la lista de variables usadas por la interfaz del formulario que permite responder al mensaje. Por ejemplo: [<a href="forum.php3?(#PARAMETRES_FORUM)">Responder a este mensaje</a>]
II.10. El bucle MOTS (palabras) El bucle MOTS devuelve una lista de palabras clave. <BOUCLEn(MOTS){criterios...}> II.10.1. Los criterios de seleccin Se utilizar uno u otro de los criterios siguientes para indicar cmo seleccionar los elementos. {tout} selecciona las palabras en la totalidad del sitio. {id_mot} devuelve la palabra clave cuyo identificador es id_mot. {id_groupe} devuelve las palabras clave asociadas al grupo de palabras cuyo identificador es id_groupe [SPIP 1.4]. {id_article} devuelve las palabras clave asociadas al artculo cuyo identificador es id_article (es, sin duda, la utilizacin ms corriente de este bucle). {id_rubrique} devuelve las palabras clave asociadas a una seccin [SPIP 1.4]. {id_breve} devuelve las palabras clave asociadas a una breve [SPIP 1.4]. {id_syndic} devuelve las palabras clave asociadas a un sitio referenciado [SPIP 1.4]. {id_forum} devuelve las palabras clave asociadas a un mensaje de foro [SPIP 1.4] (cuidado: utilizacin muy especfica). {titre=Macondo} devuelve la palabra clave denominada -cuyo ttulo es- Macondo (por ejemplo). {type=aldeas} devuelve las palabras clave del grupo cuyo ttulo es aldeas (por ejemplo). II.10.2. Los criterios de presentacin Se aplican los criterios comunes a todos los bucles, establecidos en el captulo 16. II.10.3. Las balizas de este bucle Las balizas extradas de la base de datos: Las balizas siguientes corresponden a los elementos directamente extrados de la base de datos. Tambin puedes utilizarlos como criterios de clasificacin (generalmente por ttulo: {par titre}). #ID_MOT devuelve el identificador nico de la palabra clave. #TITRE es el ttulo (la palabra clave en s). #DESCRIPTIF es la descripcin de la palabra clave. #TEXTE es el texto asociado a la palabra. #TYPE es el grupo (o la categora) en la cual se encuentra clasificada esta palabra (por ejemplo la palabra Rocinante podra ser asociada al grupo Caballos). #LOGO_MOT [SPIP 1.4] devuelve el logo asociado a una palabra clave. #URL_MOT da la direccin (URL) de esta palabra.
- Pgina 28 de 114 - II.10.4. El bucle (GROUPES_MOTS) De utilizacin marginal, el bucle GROUPES_MOTS [SPIP 1.5] merece que se lo cite aqu: si tienes varios grupos de palabras claves, permite, por ejemplo, seleccionarlos y organizar una pgina ndice de todas las palabras clave clasificadas por grupos; y, dentro de esos grupos, digamos, por orden alfabti- co. Esto es lo que hace el siguiente cdigo fuente: <BOUCLE_grupos(GROUPES_MOTS){par titre}> <h1>#TITRE</H1> <BOUCLE_palabras(MOTS){id_groupe}{par titre}{" - "}> #TITRE </BOUCLE_palabras> </BOUCLE_grupos> Les balizas y criterios asociados a este bucle son: #ID_GROUPE, es el identificador del grupo de palabras [disponible tambin en el bucle (MOTS)]; #TITRE, el ttulo del grupo [dentro del bucle (MOTS), puedes utilizar #TYPE para obtener este da- to].
II.11. El bucle SITES (o SYNDICATION) (sitios o sin- dicacin) El bucle SITES (SPIP 1.3) devuelve una lista de sitios referenciados. (Si se han sindicado sitios referenciados, este bucle se utiliza, habitualmente, asociado a un bucle SYNDIC_ARTICLES (vase cap. II.13. El bucle SYNDIC_ARTICLES) que permite recuperar la lista de los artculos de estos sitios). <BOUCLEn(SITES){criterios...}> Antes de la versin 1.3 de SPIP, este bucle se llamaba SYNDICATION, puesto que slo los sitios sin- dicados podan ser referenciados. Las dos denominaciones son rigurosamente equivalentes (pero SI- TES corresponde mejor al hecho de que, desde la versin 1.3, se trata de un sistema de referenciacin de sitios, que tiene la sindicacin como una opcin). <BOUCLEn(SYNDICATION){criterios...}> II.11.1. Los criterios de seleccin Se utilizar uno u otro de los siguientes criterios para indicar cmo se seleccionan los elementos. {tout}, todos los sitios referenciados. {id_syndic} devuelve el sitio referenciado cuyo identificador es id_syndic. {id_rubrique} devuelve los sitios referenciados en esta seccin. {id_secteur} devuelve los sitios referenciados en este sector. [SPIP 1.3] {id_mot} devuelve todos los sitios relacionados con la palabra clave actual (dentro de un bucle tipo (MOTS)). [SPIP 1.3] {titre_mot=xxxx}, o {type_mot=yyyy} devuelve los sitios relacionados con la pa- labra clave cuyo nombre es xxxx , o relacionados con palabras clave del grupo de palabras clave yyyy . Atencin, no se pueden utilizar varios criterios {titre_mot=xxxx} o {type_mot=yyyy} en un mismo bucle. [SPIP 1.4] {id_groupe=zzzz} permite seleccionar los sitios relacionados con un grupo de pala- bras clave; principio idntico al {type_mot} precedente, pero dado que se trabaja con un identifi- cador (nmero de grupo), la sintaxis ser ms limpia. II.11.2. Los criterios de publicacin Se aplican los criterios comunes a todos los bucles, establecidos en el captulo 16. {moderation=oui} [SPIP 1.4] devuelve los sitios sindicados cuyos enlaces son bloqueados a priori (moderados); el criterio inverso a este es {moderation!=oui}. (SPIP 1.3) {syndication=oui}, {syndication=non} permite devolver slo los sitios referencia- dos que son objeto de una sindicacin o los sitios no sindicados. (SPIP 1.2) {doublons} o {unique} (estos dos criterios son rigurosamente idnticos) evita que el bucle muestre los sitios referenciados que ya han publicado otros bucles del mismo esqueleto. II.11.3. Las balizas de este bucle Las balizas extradas de la base de datos: Las balizas siguientes corresponden a los elementos extrados directamente de la base de datos. Puedes utilizarlos igualmente como criterios de clasificacin (generalmente: {par titre}). #ID_SYNDIC devuelve el identificador nico del sitio sindicado. #NOM_SITE es el nombre del sitio sindicado.
- Pgina 29 de 114 - #URL_SITE es la direccin (URL) del sitio sindicado. #DESCRIPTIF es el texto descriptivo del sitio sindicado. #ID_RUBRIQUE es el nmero de la seccin que contiene esta sindicacin. #ID_SECTEUR es el nmero de la seccin-sector (en la raz del sitio) que contiene esta sindica- cin. Otras balizas: #LOGO_SITE muestra el logo atribuido a este sitio. #URL_SYNDIC muestra la direccin (URL) del fichero de sindicacin de este sitio.
II.12. El bucle DOCUMENTS (documentos) [SPIP 1.4] El bucle DOCUMENTS (documentos) devuelve una lista de documentos multimedia aso- ciados (a un artculo, a una seccin, o eventualmente las imgenes asociadas a una breve). <BOUCLEn(DOCUMENTS){criterios...}> Este bucle maneja, no slo los documentos asociados que no se muestren en el texto de un artculo, sino que tambin permite acceder a las imgenes 9 , a las miniaturas de previsualizacin y a los documen- tos ya insertados en el cuerpo del artculo. Recordemos entonces que la utilizacin ms frecuente del bucle DOCUMENTS llevar (por lo menos) los criterios siguientes (ver a continuacin las explicaciones): <BOUCLEn(DOCUMENTS){mode=document}{doublons}> II.12.1. Los criterios de seleccin Un bucle DOCUMENTS se utiliza en general dentro de un artculo o una seccin 10 . {id_article} devuelve los documentos del artculo cuyo identificador es id_article. {id_rubrique} devuelve los documentos de la seccin cuyo identificador es id_rubrique. {id_breve} devuelve los documentos de la breve cuyo identificador es id_breve. Cuidado: aqu no es posible utilizar el criterio {id_secteur}; la concepcin de los documentos hace que estn ntimamente ligados a los artculos y a las secciones, y no permite llamarlos solos sin dichos elementos (en SPIP se habla de documentos adjuntos). II.12.2. Los criterios de presentacin {mode=document} o {mode=image} permite indicar si se desea llamar los documentos multi- media, o las imgenes (en efecto, las imgenes asociadas a un artculos son ahora tratadas como documentos en modo mode=image) 11
{doublons} toma aqu una importancia particular: permite no slo no mostrar documentos ya col- gados en otros bucles, sino tambin no volver a mostrar documentos que ya estn integrados de- ntro de un artculo. Su se olvida este criterio, el bucle devolver todos los documentos asociados a un artculo, incluidos los que ya estn colgados dentro del texto. {extension=...} permite seleccionar los documentos por su extensin (extensin de fichero multi- media, por ejemplo mov, ra, avi, ...). Esto puede ser utilizado, por ejemplo, para realizar un portafolio de imgenes, es decir un bucle que slo devolvera los documentos de tipo imagen, y lue- go un segundo bucle con una presentacin grfica diferente, los otros tipos de documentos: <BOUCLE_portfolio(DOCUMENTS){id_article} Este BOUCLE_portfolio recupera los documentos adjuntos a un artculo, que no estn ya colgados en el texto del artculo, y cuya extensin puede ser jpg, png o gif. II.12.3. Las balizas #LOGO_DOCUMENT devuelve el logo de un documento, es decir su miniatura de previsualizacin, a no ser que el autor del artculo haya subido manualmente su propio logo de documento. Para una imagen, la miniatura de previsualizacin es una versin reducida de sta, cuando el servidor que hospedaje puede construirla 12 ; si no, utiliza un icono estndar en funcin del tipo de fichero.
9 Desde la versin 1.4 de SPIP, las imgenes se manejan, a nivel del programa, como un tipo e specfico de documen- tos. 10 Se la puede utilizar en una breve, pero dicho uso est reservado a recuperar imgenes (las breves no tienen doc u- mentos multimedia asociados, slo imgenes), lo que ser muy especfico. 11 Nota: En sitios SPIP existentes antes de la versin 1.4, se tena la costumbre de no poder colgar las imgenes que no se insertaban dentro del texto del artculo. De hecho, si uno agrega un bucle DOCUMENTS en mode=image en un sitio existente, se arriesga a ver reaparecer en este bucle imgenes que no estaban destinadas a ser publicadas en el sitio pblico. Por lo tanto, en tal caso proceda con precaucin, verificando uno por uno los antiguos artculos para ev itar la publicacin de imgenes parsito. 12 Es decir cuando la configuracin de PHP tiene i nstaladas las libreras de procesamiento de imgenes adecuadas.
- Pgina 30 de 114 - #URL_DOCUMENT es la direccin URL del fichero multimedia. Para mostrar una miniatura clicable, se utilizar, pues, el cdigo siguiente: [(#LOGO_DOCUMENT|#URL_DOCUMENT)] #TITRE devuelve el ttulo del documento. #DESCRIPTIF devuelve el descriptivo del documento. #TYPE_DOCUMENT devuelve el tipo (fichero Quicktime, fichero Real...) del documento multime- dia. #TAILLE devuelve el tamao del fichero multimedia. Se proporciona este valor en octetos. Para ar- chivos voluminosos, se podr aplicar el filtro (vase cap. II.20. Los filtros de SPIP) tai- lle_en_octets, que lo convertir sucesivamente, para simplificarlo, en bytes (octetos), en kiloby- tes, o incluso en megabytes: [(#TAILLE|taille_en_octets)] #LARGEUR (anchura) y #HAUTEUR (altura) devuelven las dimensiones en pixels. #ID_DOCUMENT devuelve el nmero de documento. #EMBED_DOCUMENT es una baliza de utilizacin muy especfica: permite incluir directamente los ficheros de formatos que lo permiten imgenes, video, sonido) directamente en la pgina web. Sin embargo, se debe evitar utilizar sistemticamente esta baliza para insertar directamente los docu- mentos en la pgina sin un control estricto: de lo contrario, corres el riesgo de aumentar enorme- mente el tiempo de acceso a tus pginas. Esta baliza puede ser completada por parmetros propios de los formatos utilizados (una vez ms: de uso sumamente especfico). Por ejemplo, para que un vdeo o un sonido se inicie sin accin previa de la persona visitante: [(#EMBED_DOCUMENT|autostart=true)]
II.13. El bucle SYNDIC_ARTICLES El bucle SYNDIC_ARTICLES devuelve una lista de artculos de los sitios sindicados 13 . Se puede utilizar este bucle: ya sea dentro de un bucle SITES (vase cap. II.11. El bucle SITES (o SYNDICATION) sitios (o sindicacin)): este ltimo recupera una lista de sitios referenciados y a continuacin se recuperan los artculos de cada uno de estos sitios, ya sea directamente dentro de una seccin (vase cap. II.6. El bucle RUBRIQUES (secciones)): se recuperan directamente todos los artculos sindicados en una seccin, saltando el paso por la lista de los sitios. <BOUCLEn(SYNDIC_ARTICLES){criterios...}> (SPIP 1.3) A partir de la versin 1.3 de SPIP, el bucle SITES (o SYNDICATION) (vase cap. II.11) ya no slo muestra los sitios sindicados sino, en general, los sitios referenciados (la sindicacin de cier- tos sitios referenciados es una opcin). Se podr pues, para obtener una presentacin grfica ms preci- sa, utilizar un bucle SYNDIC_ARTICLES nicamente dentro de un bucle SITES utilizando el criterio {syndication=oui}. II.13.1. Los criterios de seleccin Se utilizar uno u otro de los criterios siguientes para indicar como se seleccionan los elementos. {tout}, todos los sitios sindicados. {id_syndic_article} devuelve el artculo sindicado cuyo identificador es id_syndic_article. (En la prctica existe poco inters en fabricar una pgina para un artculo sindicado ya que se preferir re- enviar directamente hacia el artculo en cuestin.) {id_syndic} devuelve la lista de artculos del sitio sindicado cuyo identificador es id_syndic. {id_rubrique} devuelve la lista de artculos sindicados en esta seccin. {id_secteur} devuelve la lista de artculos sindicados en este sector. II.13.2. Los criterios de publicacin Se aplican los criterios comunes a todos los bucles, establecidos en el captulo 16. II.13.3. Las balizas de este bucle Las balizas extradas de la base de datos: Las balizas siguientes corresponden a los elementos extrados directamente de la base de datos. Puedes utilizarlos igualmente como criterio de clasificacin (generalmente: {par titre}). #ID_SYNDIC_ARTICLE devuelve el identificador nico del artculo sindicado.
13 Un sitio sindicado es un sitio que pone a disposicin y del cual se recuperan los ltimos artculos. Vase SPIP - Carac- tersticas completas.
- Pgina 31 de 114 - #ID_SYNDIC devuelve el identificador nico del sitio sindicado que contiene este artculo sindica- do. #TITRE devuelve el ttulo del artculo. Observacin: es preferible utilizar aqu el ttulo en bruto del artculo sindicado - a travs del cdigo [(#TITRE*)] -, para evitar el motor tipogrfico. Efecti- vamente se supone que los ttulos son ya tipogrficamente correctos en los backends, y no se desea pasar la correccin tipogrfica en ttulos en ingls o en ttulos que incluyen expresiones del ti- po Los ficheros /.tcshrc. #URL_ARTICLE es la direccin (URL) del sitio sindicado (en su sitio original). #DATE devuelve la fecha de publicacin de este artculo. #LESAUTEURS, devuelve los autores del artculo sindicado. #DESCRIPTIF devuelve la descripcin del artculo sindicado. #NOM_SITE devuelve el nombre del sitio sindicado que contiene este artculo. #URL_SITE devuelve la direccin (URL) del sitio.
II.14. El bucle SIGNATURES (firmas) El bucle SIGNATURES devuelve una lista de firmantes de una peticin asociada a un artculo. <BOUCLEn(SIGNATURES){criterios...}> II.14.1. Los criterios de seleccin Se utilizar uno u otro de los criterios siguientes para indicar cmo se seleccionan los elementos. {tout} todas las firmas son seleccionadas en el sitio de manera integral. {id_signature}, la firma correspondiente al identificador actual. {id_article} devuelve las firmas de la peticin de este artculo. II.14.2. Los criterios de publicacin Se aplican los criterios comunes a todos los bucles, establecidos en el captulo 16. Atencin. En este tipo de bucles, algunos criterios de clasificacin del bucle no son idnticos a las eti- quetas SPIP indicadas a continuacin: {par nom_email} clasifica los resultados segn el #NOM (nombre) de la persona firmante; {par ad_email} clasifica segn el #EMAIL de la persona firmante. II.14.3. Las etiquetas de este bucle Las etiquetas extradas de la base de datos: Las etiquetas siguientes corresponden a los elementos directamente extrados de la base de datos. Puedes utilizarlos igualmente en tanto que criterio de clasificacin (generalmente: {par titre}). #ID_SIGNATURE publica el identificador nico del mensaje. #ID_ARTICLE es el identificador del artculo para esta peticin. #DATE es la fecha de publicacin. #MESSAGE es el texto del mensaje. #NOM es el nombre de la persona autora del mensaje. #EMAIL es la direccin de correo electrnico de la persona autora. #NOM_SITE el nombre del sitio Web indicado por la persona autora. #URL_SITE la direccin (URL) de este sitio Web.
II.15. El bucle HIERARCHIE (jerarqua) El bucle HIERARCHIE (jerarqua) est basado en un principio diferente al resto de bucles ya que efec- ta una recursividad (en lugar de simplemente extraer una lista de la base de datos). Este bucle devuelve la lista de las secciones (RUBRIQUES) que conducen de la raz del sitio a la seccin o al artculo en curso. <BOUCLEn(HIERARCHIE){criterios...}> II.15.1. Los criterios de seleccin Se utilizar uno u otro de los criterios siguientes para indicar como se seleccionan los elementos. {id_rubrique} devuelve la lista de las secciones desde la raz hasta la seccin correspondiente a este identificador. {id_article} devuelve la lista de las secciones desde la raz hasta el artculo correspondiente a este identificador.
- Pgina 32 de 114 - II.15.2. Los criterios de publicacin Atencin: no todos los criterios comunes a todos los bucles se aplican a este tipo de bucle. Los criterios de presentacin utilizables son: {"inter"} y {a,b}. II.15.3. Las balizas de este bucle Los elementos obtenidos con un bucle HIERARCHIE son secciones. Se puede pues utilizar todas las balizas propuestas para los bucles RUBRIQUES (vase cap. II.6. El bucle RUBRIQUES (secciones)).
II.16. Criterios comunes a todos los bucles Ciertos criterios se aplican a (casi) todos los tipos de bucles. Son criterios destinados a limitar el n- mero de resultados extrados o a indicar el orden de presentacin. Se puede, sin dificultad alguna, com- binar varios de estos criterios de seleccin. II.16.1. Clasificar los resultados {par criterio_de_clasificacin} indica el orden de presentacin de los resultados 14 . Por ejemplo, se pueden clasificar los artculos por fecha ({par date}), por fecha de redaccin ({par date_redac}) o por ttulo ({par titre}). Este criterio corresponde a una de las balizas extradas de la base de datos para cada tipo de bucle. OJO: si bien las balizas se presentan en maysculas, los criterios de clasificacin se presentan en minsculas. Caso particular: {par hasard} ("al azar") permite obtener una lista presentada en orden aleatorio. Invertir la clasificacin. Adicionalmente, {inverse} provoca la presentacin de una clasificacin en orden invertido. Por ejemplo, con el criterio {par date} se empieza por los artculos ms antiguos, mientras que con {par date}{inverse} se empieza por los ms recientes. Clasificar por numero. (SPIP 1.3) Cuando el criterio de clasificacin es un elemento de texto (por ejemplo el ttulo - titre), la clasificacin se hace por orden alfabtico. Sin embargo, para imponer cierto orden de presentacin, se puede indicar un nmero delante del ttulo, por ejemplo: 1. Mi primer artcu- lo, 2. El segundo artculo, 3. Tercer ..., etc. Si utilizramos un criterio habitual par titre, la clasificacin alfabtica de estos elementos sera la se- rie: 1, 10, 11,..., 2, 3.... Para restablecer la clasificacin numrica se puede utilizar el criterio: {par num criterio} OJO: la opcin {par num titre} no funciona con viejas versiones de MySQL, anteriores a la 3.23. Ejemplos: <BOUCLE_articles(ARTICLES){id_rubrique}{par date}{inverse}> cuelga los artculos de una seccin clasificados por orden cronolgico invertido (los ms recientes al principio, los ms antiguos al final); <BOUCLE_articles(ARTICLES){id_rubrique}{par titre}> los cuelga por orden alfabtico de su ttulo; <BOUCLE_articles(ARTICLES){id_rubrique}{par num titre}> los cuelga ordenados por el nmero de su ttulo. II.16.2. Seleccin por comparacin { criterio smbolo valor } criterio corresponde a una baliza de la base de datos, valor es un valor fijado que puede tomar la baliza, y smbolo es un operador de comparacin, como ser 15 : >, <, =, >=, <=. Un criterio de seleccin por comparacin permite extraer slo una parte de los resultados de un bu- cle: los que verifican el criterio. Por ejemplo: <BOUCLE_art(ARTICLES){id_article=5}>
14 "par", en francs, significa "por". Recuerda que el lenguaje de bucles utiliza un vocabulario francs. Al respecto pue- des consultar el Lxico SPIP francs - espaol. 15 En realidad, se puede utilizar cualquier operador vlido para la base de datos.
- Pgina 33 de 114 - cuelga nicamente el artculo cuyo nmero es 5. Es til, por ejemplo, para resaltar en la portada un artculo dado. <BOUCLE_art(ARTICLES){id_secteur=2}> cuelga los artculos del sector nmero 2. Expresiones regulares. Son sumamente potentes... pero bastante ms complejas de manipular. La comparacin de un criterio con una expresin regular como valor de comparacin, se introduce con el smbolo ==. Empecemos por dar algunos ejemplos tiles: <BOUCLE_art(ARTICLES){titre==^[aA]}> selecciona los artculos cuyo ttulo empieza por a o por A. <BOUCLE_art(ARTICLES){id_rubrique==(4|9|20)}> selecciona los artculos que se encuentran, ya sea en la seccin nmero 4, ya sea en la nmero 9, o en la nmero 20. Ms all de estos ejemplos, las "expresiones regulares" ("regex", para los ntimos, pronunciar: re- guex) son una tcnica comn a varios sistemas y lenguajes informticos (shell unix, perl, C, php, ...) que permite analizar y hacer operaciones complejas sobre textos. Una documentacin completa sobre las regex estara fuera del objetivo de la presente documenta- cin de SPIP. Si necesitas, hay extensa documentacin al respecto en la web, y no dudes en poner un emilio en las listas SPIP para ayudarte a construir un criterio de seleccin. Negacin. (SPIP 1.2) Se puede utilizar la notacin {xxx != yyy}, el smbolo ! corresponde a la negacin (operador lgico NOT). <BOUCLE_art(ARTICLES){titre!==^[aA]}> selecciona los artculos cuyo ttulo no comienza por a o por A. <BOUCLE_art(ARTICLES){id_secteur != 2}> selecciona los artculos que no pertenecen al sector nmero 2. Para facilitar la utilizacin de comparaciones de fechas, se agregaron los siguientes criterios de "edad" de un artculo: age y age_redac corresponden respectivamente la antigedad de la publicacin y de la primera publicacin de un artculo, expresada en das: {age<30} selecciona los elementos publicados des- de hace menos de un mes; los criterios mois, mois_redac, annee, annee_redac permiten, comparar con valores fijos res- pectivamente del mes y del ao. (por ejemplo, {annee<=2000} para les elementos publicados antes de fin del ao 2000). Se pueden combinar varios criterios para efectuar selecciones sumamente detalladas. Por ejemplo: <BOUCLE_art(ARTICLES){id_secteur=2}{id_rubrique!=3}{age<30}> cuelga los artculos del sector 2, excepto los que estn en la seccin 3, y publicados desde hace me- nos de 30 das. Un truco astuto. El criterio age es muy prctico para seleccionar los artculos o breves que se sit- an en el futuro, con valores negativos (a condicin de haber seleccionado, en la Configuracin precisa del sitio, la opcin Publicar los artculos con fecha posterior). Por ejemplo, este criterio permite resal- tar eventos futuros: {age<0} selecciona los artculos o las breves cuya fecha est situada en el futuro (despus de hoy). (SPIP 1.3) Edad respecto a una fecha dada. El criterio edad (age) se calcula en relacin a la fe- cha del da (es decir que {age<30} corresponde a los artculos publicados desde hace un mes respecto a la fecha de hoy). El criterio de edad relativa, age_relatif, compara la fecha de un artculo o de una breve a una fecha corriente; por ejemplo, dentro de un bucle ARTICLES, ya se conoce una fecha pa- ra cada resultado del bucle, respecto a la cual se hace la seleccin (y ya no respecto a la fecha de hoy). Por ejemplo: <BOUCLE_articulo_principal(ARTICLES){id_article}>
- Pgina 34 de 114 - El BOUCLE_siguiente extrae los artculos de la misma seccin que el articulo_principal, cuya fe- cha de publicacin es anterior a la de ste, los ordena por fecha, y cuelga un solo artculo (ver ms ade- lante la explicacin del criterio {0,1}): es decir que se obtiene el artculo que sigue cronolgicamente al artculo principal. II.16.3. Mostrar una parte de los resultados {a,b} donde a y b son dos nmeros. Este criterio permite limitar el nmero de resultados. a indica el resultado a partir del cual se empieza la seleccin (OJO: el primer resultado est numerado 0 - cero); b indica el nmero de resultados que comprende la seleccin. Por ejemplo {0,10} cuelga los diez primeros resultados; {4,2} cuelga dos resultados a partir del quinto (incluido: es decir el quinto y el sexto). {debut_xxx,b} es una variante ms elaborada del criterio precedente. Permite hacer empezar la limitacin de los resultados utilizando una variable pasada en la direccin URL (esta variable reem- plaza el nmero a que se indicaba inicialmente). Su funcionamiento es algo complejo, pero afortu- nadamente no es necesario utilizarlo muy a menudo. La variable que se pasa en el URL debe empezar por debut_. En su nombre completo de- but_xxx, el/la webmaster/webmistress escoge la segunda parte xxx. De esta manera, para una pgina cuyo URL es: peticion.php3?id_article=13&debut_firmas=200 con un esqueleto (peticion.html) que contenga, por ejemplo: <BOUCLE_firmas(SIGNATURES){id_article}{debut_firmas,100}> obtendremos la lista de las firmas a partir de la 200-esima. Y, sin cambiar de esqueleto, con el URL: peticion.php3?id_article=13&debut_firmas=300 obtendremos la lista de las firmas a partir de la 300-esima. {a/b} donde a y b son dos nmeros. Este criterio permite dividir la totalidad de los resultados en b grupos de una misma cantidad (excepto eventualmente el ltimo) y mostrar el a-esimo grupo. Por ejemplo: {1/3} muestra el primer tercio de los resultados. Este criterio es til principalmente para presentar listas en varias columnas. Para obtener una presentacin en dos columnas, alcanza con crear un primer bucle, dentro de una celda de tabla, con el criterio {1/2} (primera mitad de los resultados), y luego un segundo bucle en la celda siguiente, con el criterio {2/2} (segunda mitad de los resultados). OJO. La utilizacin del criterio {doublons} con este criterio es peligrosa 16 . Por ejemplo: <BOUCLE_primera(ARTICLES){id_rubrique}{1/2}{doublons}> <li> #TITRE </BOUCLE_primera> <BOUCLE_segunda(ARTICLES){id_rubrique}{2/2}{doublons}> <li> #TITRE </BOUCLE_segunda> no mostrar todos los artculos de la seccin! Imaginemos por ejemplo que haya un total de 20 artculos en nuestra seccin. El BOUCLE_primera va a colgar la primer mitad de los artculos, es decir los 10 primeros, y prohibir (a causa de {doublons}) volver a utilizarlos. El BOUCLE_segunda, por su parte, va a recuperar la segunda mitad de los artculos de esta seccin que an no fueron mostrados por el BOUCLE_primera; en consecuencia, la mitad de los 10 artculos siguientes, es decir los 5 ltimos artculos de la seccin. Y de paso se te perdieron 5 artculos por el camino... II.16.4. Separador de resultados {"inter"} permite indicar un cdigo HTML (aqu, inter) que ser insertado entre los resultados del bucle. Por ejemplo, para separar una lista de autores por una coma, se indicar el criterio {", "}: <BOUCLE_auteurs(AUTEURS){id_article}{", "}>
II.17. Las balizas propias del sitio Ciertas balizas estn disponibles fuera de los bucles; su contenido se define al configurar el sitio SPIP. #URL_SITE_SPIP es la direccin del sitio. Por convencin, no incluye el / final, as puedes crear enlaces del estilo de: #URL_SITE_SPIP/sommaire.php3 #NOM_SITE_SPIP es el nombre del sitio. #EMAIL_WEBMASTER [SPIP 1.5] es la direccin de correo del/de la webmaster/webmistress. Por omisin, SPIP toma la direccin de quien instal el sitio (el/la primer administrador/a). (Si, en vez de proporcionar pblicamente la direccin de correo, prefieres un formulario escribir al/a la webmaster/webmistress, consulta cap. II.18. Los formularios).
16 Acerca del criterio {doublons}, vase los cap. 5. El bucle ARTICLES (artculos) o 6. El bucle RUBRIQUES (secciones).
- Pgina 35 de 114 - #CHARSET [SPIP 1.5] es el juego de caracteres que utiliza el sitio. Su valor por omisin es iso- 8859-1, juego de caracteres llamado iso-latn. Ver www.uzine.net/article1785.html (en francs) para una introduccin a los charsets, mientras no haya una documentacin mas completa en SPIP al respecto. Adems; para escribir ms rpido esqueletos, se puede utilizar la baliza: #PUCE [SPIP 1.5], que presenta la imagen del icono de listas 17
y, para mejorar la localizacin en la pgina de los botones reservados a los/las administradores (Ac- tualizar esta pgina, Modificar este artculo, ...), existe una baliza #FORMULAIRE_ADMIN [SPIP 1.5]. Esta baliza es opcional: si est presente, los botones de administracin aparecen en su lugar; si no, vienen al final de la pgina 18 .
II.18. Los formularios SPIP permite una gran interaccin del sitio con las personas que lo visitan; para lo cual ofrece nume- rosos formularios en el sitio pblico, que permiten tanto manejar los accesos al espacio privado como autorizar el aadido de mensajes y firmas. Los formularios se insertan en los esqueletos con una simple baliza; SPIP se encarga a continuacin de generar el comportamiento (a menudo complejo) de estos formularios en funcin del entorno y de las configuraciones efectuadas en el espacio privado. II.18.1. Funciones interactivas #FORMULAIRE_RECHERCHE Se trata del formulario del motor de bsqueda integrado en SPIP. Se presenta en el artculo acerca de los bucles de bsqueda. #FORMULAIRE_FORUM El #FORMULAIRE_FORUM gestiona la interfaz que permite enviar mensajes en los foros pblicos. Concierne pues en primer lugar al bucle FORUMS. El formulario depende evidentemente de la eleccin de la moderacin a posteriori, a priori o bajo suscripcin para los foros. En el caso (muy especfico) en que se autoriza la presencia de palabras clave en los foros pblicos, se puede ajustar el comportamiento de este formulario con variables de personalizacin. #FORMULAIRE_SIGNATURE El #FORMULAIRE_SIGNATURE autoriza la firma de las peticiones asociadas a los artculos (este formulario se coloca pues en un bucle ARTICLES). N.B. La firma de las peticiones reclama obligatoriamente una validacin de las personas signa- tarias por correo electrnico. Este formulario slo tiene inters si la configuracin PHP de tu hospedaje autoriza el envo de e-milios. #FORMULAIRE_SITE [SPIP 1.4] El #FORMULAIRE_SITE publica una interfaz que permite a las personas que visitan el sitio proponer la referenciacin de sitios. Estos sitios aparecern como propuestos en el espacio priva- do, a la espera de la validacin del equipo de administracin. Este formulario slo se publica si activaste la opcin "Gestionar un anuario de sitios" en la Configura- cin del sitio en el espacio privado, y si seleccionaste "las personas visitantes del sitio pblico" como "Quien puede proponer sitios referenciados". Como en SPIP los sitios referenciados se colocan en las secciones, la baliza #FORMULAIRE_SITE de este formulario slo se puede colocar dentro de un bucle RUBRIQUES #FORMULAIRE_ECRIRE_AUTEUR [SPIP 1.4] Colocado en el interior de un bucle AUTEURS, este formulario permite enviar un correo electrnico al autor (de un artculo). As, modificando los esqueletos (que, por omisin, publican enlaces que contienen las direcciones de correo electrnico de las personas autoras de los artculos), permite es- cribir a las autoras sin colgar su direccin de correo electrnico en el sitio pblico.
17 Sea dicho de paso, se puede personalizar este icono. Ver cap. IV.9. Las variables de personalizacin. 18 Cabe agregar que tambin se puede manejar la presentacin de estos botones con el esti lo spip_bouton. Ver tam- bin cap. IV.3. Spip y las hojas de estilo.
- Pgina 36 de 114 - II.18.2. Inscripcin, autentificacin... #FORMULAIRE_INSCRIPTION Sin duda el ms importante, el #FORMULAIRE_INSCRIPTION (FORMULARIO DE INSCRIPCIN) gestiona la inscripcin de nuevos redactores. Slo se publica una interfaz de inscripcin si autorizaste la inscripcin automtica desde el sitio pblico (de lo contrario, esta baliza no muestra absolutamente na- da). La inscripcin necesita el envo de las informaciones de conexin (login y contrasea) por correo electrnico; as que este formulario tan slo funciona si la configuracin PHP de tu servidor autoriza el envo de mensajes de correo electrnico. #LOGIN_PRIVE [SPIP 1.4] Tambin igual de importante (si no ms) el #LOGIN_PRIVE muestra el formulario de acceso al espacio privado (la parte "/ecrire" del sitio). Importante: esta etiqueta debe imperativamente estar presente en el esqueleto llamado por la pgi- na spip_login.php3, es decir en estndar por el esqueleto denominado login-dist.html. En efecto, du- rante los accesos directos a la direccin "/ecrire" de tu sitio, SPIP te dirigir hacia `shim_spipnet`.spip_login.php3. #LOGIN_PUBLIC [SPIP 1.4] De utilizacin mucho ms especfica #LOGIN_PUBLIC muestra un formulario que per- mite a tus usuarias y usuarios identificarse mantenindose en el sitio pblico (sin entrar en el espacio privado). Esta baliza sirve especialmente para autentificar las personas visitantes en los sitios que ofre- cen foros moderados con suscripcin. Tambin puede servir de punto de partida para restringir el acceso a ciertos contenidos en el sitio pblico: esto implica un manejo complicado y necesitar todava desarro- llo y redaccin de tutoriales completos antes de que sea fcilmente utilizable por todas y todos. Sin em- bargo ms adelante se ofrece un ejemplo avanzado de utilizacin. Por omisin, el #LOGIN_PUBLIC se enlaza sobre si mismo, es decir que, cuando la visitante ingresa su identificador y contrasea en el formulario, SPIP vuelve a la pgina en la que se encuentra. Se puede indicar una pgina hacia la cual el formulario remitir de la siguiente manera: [(#LOGIN_PUBLIC|mipagina.php3)] Si tu sitio ofrece una inscripcin automtica al espacio privado, los datos de conexin al espacio p- blico son idnticos a los del espacio privado; es decir que los datos enviados a la persona usuaria para identificarse en el espacio pblico tambin le permiten acceder al espacio privado. Si, por el contrario, has prohibido la inscripcin automtica al espacio privado, te ser imperativo tener al menos un artculo cuyos foros estn configurados en el modo "por suscripcin" para activar esta baliza; desde entonces SPIP podr ofrecer al visitante la informacin de conexin para el sitio pblico sin acceder al espacio pri- vado. #URL_LOGOUT [SPIP 1.5] est relacionado con #LOGIN_PUBLIC; ofrece una URL que permite a una persona visitante autentificada desconectarse. He aqu un ejemplo sencillo pero completo de utilizacin de estas dos balizas. Hay que usar un poco de php para comprobar la variable {{$auteur_session}}, que indica que una persona autora est identificada o no. En ese caso, se puede recuperar (o sea, comprobar) su estado, su login, etc. a travs de $auteur_session['statut']... Hay que tener en cuenta que el contenido no est "seguro" ms que en este esqueleto. Si tu esque- leto "imprimir este artculo", por ejemplo, no verifica por $auteur_session todo el mundo (incluidos los motores de bsqueda!) podr tener acceso a este famoso contenido que deseas proteger. <?php if ($auteur_session) { ?>
Ests autentificado, <a href='#URL_LOGOUT'>pincha aqui para desconectarte</a>
... aqui se pone el contenido de acceso restringido....
<?php } else { ?>
<h2>Acceso restringido</h2> <p>Hay que identificarse para ver esta parte</p> #LOGIN_PUBLIC
<?php } ?> II.18.3. Hojas de estilo Se puede modificar la interfaz grfica de los formularios a travs de las hojas de estilo (vase cap. IV.3. SPIP y las hojas de estilo) especialmente forml, `shim_spipnet`.spip_encadrer y `shim_spipnet`.spip_bouton.
- Pgina 37 de 114 -
II.19. Los bucles de bsqueda SPIP dispone de un motor de bsqueda integrado. Por lo tanto, si se utiliza, hay que prever una p- gina que permita mostrar los resultados de las bsquedas. II.19.1. La interfaz de bsqueda Para colgar el formulario de la interfaz de bsqueda, alcanza con insertar la baliza: #FORMULAIRE_RECHERCHE Por omisin, el formulario enviar las solicitudes hacia la pgina cuyo nombre es recherche.php3 19 ; por lo tanto, debes realizar un esqueleto recherche.html que permita colgar los resultados. Tambin puedes decidir que utilizars otra pgina para mostrar los resultados. Para eso, hay que agregarle un pseudo-filtro a la baliza, de la manera siguiente: [(#FORMULAIRE_RECHERCHE|busqueda.php3)] donde busqueda.php3 es la pgina hacia la cual deseas enviar al visitante que hace una bsqueda. II.19.2. El esqueleto de resultados Los bucles que permiten mostrar los resultados de la bsqueda son, en realidad, bucles considerados anteriormente en este manual 20 : ARTICLES (vase cap. II.5. El bucle ARTICLES (artculos)), RUBRI- QUES (vase cap. II.6. El bucle RUBRIQUES (secciones)), BREVES (vase cap. II.7. El bucle BRE- VES). La nica diferencia, respecto a lo que est documentado para estos bucles, es la eleccin del criterio de seleccin que debe ser {recherche}. Los criterios de presentacin y las balizas de estos bucles no cambian. Adicionalmente, para clasificar los resultados por pertinencia, utilizaremos preferentemente el nuevo criterio de presentacin: {par points} (por puntos). Tambin se puede utilizar la baliza #POINTS (puntos), que indica la pertinencia de los resultados (OJO: en absoluto este valor no es muy explicito en s, su inters es relativo de un resultado a otro y es til sobre todo para clasificar los resultados). Para mostrar la solicitud formulada por el visitante del sitio, se puede utilizar la baliza #RECHERCHE ([SPIP 1.5.1]) 21 .
II.20. Los filtros de SPIP En La sintaxis de las balizas SPIP vimos que es posible modificar el comportamiento y el resultado de las balizas SPIP aplicndoles filtros. Aqui se presentan los principales filtros que vienen con SPIP, y ade- ms se aprende como crear uno sus propios filtros. El sintaxis general de los filtros que no llevan otros parmetros que la baliza (la gran mayora) es el siguiente: [ opcin anterior (#BALISE|filtro1|filtro2|...|filtron) opcin posterior ] Los filtros 1, 2, ..., n se aplican sucesivamente a la baliza #BALISE. Adems, desde [SPIP 1.5], es posible pasar parmetros a los filtros. En este caso la sintaxis es: [(#BALISE|filtre{arg1, arg2}|...)] II.20.1. Los filtros de paginacin y formato Ya no se aconseja utilizas los filtros de paginacin siguientes (majuscules, justifier...). Se re- comienda, en adelante, la utilizacin preferente de los estilos CSS correspondientes. majuscules pasa el texto a maysculas. Comparado con la funcin equivalente en PHP, el filtro SPIP majuscules tambin se aplica a las letras acentuadas. justifier pasa el texto a justificacin total. Es decir que aplica a todos los prrafos el atributo justi- fy: (<P align=justify>). aligner_droite pasa el texto a justificacin alineada a la derecha (atributo <P align=right>). aligner_gauche pasa el texto a justificacin alineada a la izquierda (atributo <P align=left>).
19 Habrs entendido que recherche significa bsqueda en francs 20 Por cierto, se pueden efectuar bsquedas no slo en los artculos, sino tambin en las secciones y las breves. 21 Que en versiones anteriores de SPIP se puede obtener con el cdigo PHP <?php echo $recherche; ?>).
- Pgina 38 de 114 - centrer centrar el texto en la pgina. (atributo <P align=center>). II.20.2. Los filtros de fechas Los filtros siguientes se aplican a las fechas ([(#DATE|affdate)] por ejemplo). Los filtros de fecha utilizan el idioma del contexto. affdate devuelve la fecha, por ejemplo, 13 de enero de 2001 si #DATE es el 13/1/2001. jour devuelve el da (en nmeros, del 1 al 31). mois devuelve el mes (en nmeros). annee devuelve el ao. [SPIP 1.0.2] heures devuelve las horas de una fecha (los campos de fecha registradas autom- ticamente por SPIP en su base comprenden no slo la fecha en s, sino tambin la hora exacta). [SPIP 1.0.2] minutes devuelve los minutos de una fecha. [SPIP 1.0.2] secondes devuelve los segundos. nom_jour devuelve el nombre del da de la semana (lunes, martes,... o lundi, mardi...). nom_mois devuelve el nombre del mes (enero, febrero,... o janvier, fvrier...). saison devuelve la estacin (invierno, verano,... o hiver, t...). II.20.3. Filtros de texto La mayora de los filtros que siguen fueron introducidos en la versin [SPIP 1.4]. liens_ouvrants transforma todos los enlaces SPIP hacia sitios web exteriores en enlaces de tipo popup, que abren una nueva ventana ("enlaces abrientes"). Es el equivalente del atributo tar- get=blank de la etiqueta <a> de HTML. Nota: los autores de SPIP estiman que tal comportamiento en una pgina web es, en general, intrusivo y descorts. El internauta sabe si desea abrir otra ven- tana o no, y lo puede hacer fcilmente sin que el sistema se lo imponga. Pero la insistencia era de- masiado fuerte, as que cedimos...;-) supprimer_numero sirve para suprimir el nmero de un ttulo, cuando, por ejemplo, uno quiere clasificar los artculos por nmero (criterio {par num titre}) pero no mostrar dichos nmeros, los cuales as sirven slo para ordenar. PtoBR transforma los saltos de prrafo en simples retornos de lnea, lo que permite apretar una paginacin, por ejemplo en un sumario. taille_en_octets permite transformar un nmero de bytes (por ejemplo 25678906) en una cadena de caracteres ms explcita (en nuestro ejemplo: 24.4 Mo). supprimer_tags es una supresin bsica y brutal de todos los cdigos entre <...> textebrut se parece al filtro precedente supprimer_tags, pero acta de manera algo ms sutil, transformando en particular los prrafos y los <br> en cambios de lnea y los espacios insecables en espacios simples. Se puede utilizar, para incluir en una pgina un descriptivo de metadatos a partir de la baliza #DESCRIPTIF: [<meta name='description' con- tent='(#DESCRIPTIF|textebrut)'>] II.20.4. Filtros de logos Como vimos al presentar las balizas de logos (por ejemplo en el bucle ARTICLES, existe un manejo especfico para los filtros de logos, que permite fcilmente determinar su posicin y la direccin a la cual enlazan. fichier [SPIP 1.4]. Aplicado a un logo, este filtro permite recuperar directamente el nombre del fi- chero que corresponde al logo (se trata del nombre relativo del fichero, que est situado en la car- peta IMG). Otros filtros. Al contrario de las versiones anteriores, [SPIP 1.4] permite aplicar filtros caseros a los logos: la lgica es un poco rara, porque haba que respetar la compatibilidad con SPIP 1.3. El anlisis de los filtros se desarrolla as: o si el primer filtro no es un alineamiento, SPIP considera que se trata de una URL y enlaza el logo hacia esa direccin; o si el primer filtro es un alineamiento (gauche, droite), SPIP considera que el segundo filtro es una URL; o los filtros siguientes son verdaderos filtros, en el sentido habitual (incluidos los filtros case- ros declarados en mes_fonctions.php3); o para aplicar un filtro cualquiera sin especificar un enlace hacia una URL, hay que poner dos ba- rras. Por ejemplo: <?php $logo = '[(#LOGO_RUBRIQUE||texte_script)]'; ?> permite recuperar el logo en la variable php $logo, para un tratamiento ulterior (ver ms abajo el signi- ficado de |texte_script). SPIP 1.7.1 introduce el filtro reduire_image (reducir_imagen), que permite forzar un tamao mximo de visualizacin de un logo. Este filtro se utiliza por ejemplo sobre un logo de artculo de la manera siguiente: [(#LOGO_ARTICLE|right||reduire_image{130})] En este ejemplo; el logo del artculo aparece alineado a la derecha, con un tamao mximo de 130 pixels.
- Pgina 39 de 114 - Nota. Si la opcin creacin de miniaturas est activada en la configuracin del sitio, estos lo- gos reducidos sern archivos de imgenes especficos calculados automticamente por el servidor. (idealmente, con la extensin GD2 instalada en el servidor), para los formatos aceptados por ste (con GD2, habitualmente, los formatos JPG y PNG). Si no, es una versin completa de la imagen que se visualiza, pero con un tamao especificado directamente en HTML. II.20.5. Filtros tcnicos Estos filtros fueron introducidos por la versin [SPIP 1.4]. entites_html transforma un texto en entidades HTML, que se pueden insertar en un formulario, por ejemplo: [<textarea>(#DESCRIPTIF|entites_html)</textarea>] texte_script transforma cualquier baliza en una cadena de caracteres utilizable en PHP o en Javas- cript con total seguridad 22 , por ejemplo: <?php $x = '[(#TEXTE|texte_script)]'; ?>. OJO: ten cuidado de utilizar el carcter ' y no " pues en el segundo caso, si tu texto contiene smbolos $, el resultado puede ser catastrfico (un resultado parcial, publicar otra cosa, colgar el php, etc.). attribut_html devuelve una cadena utilizable sin peligro como atributo HTML; por ejemplo; si se quiere agregar un texto de sobrevuelo al enlace habitual a un artculo, se puede utilizar: <a href="#URL_ARTICLE" [ title = "(#DESCRIPTIF|supprimer_tags|attribut_html)" ]>#TITRE</a>. sinon [SPIP 1.6] introduce el filtro |sinon (si no), que indica lo que se debe mostrar cuando la ba- liza filtrada est vaca. Por ejemplo [(#TEXTE|sinon{"no hay texto"})] muestra el texto salvo si est vaco, en cuyo caso muestra no hay texto. II.20.6. Agregar sus propias funciones Los filtros de SPIP son en realidad funciones PHP. Cuando no llevan otro parmetro que la baliza, la funcin PHP es de una sola variable. Puedes utilizar directamente las funciones habituales de PHP, pero tambin crear tus propias funciones siguiendo el modelo: <?php funcion mi_filtro($texto){ $texto = (mi receta en PHP) ...; return $texto; } ?> Para no modificar ficheros de SPIP (que podran ser reemplazados en la prxima actualizacin), pue- des instalar tus funciones personales en un fichero mes_fonctions.php3: si SPIP encuentra un fichero con este nombre, lo incluye automticamente. Por ejemplo, ARNO* desarroll el filtro enlettres, que no est incluido en la distribucin estndar de SPIP. Este filtro escribe la denominacin de un nmero en francs (si la fecha #DATE es en el ao 2003, [(#DATE|annee|enlettres)] = deux mille trois ). Puedes bajar este filtro de http://www.uzine.net/spip_contrib/a...; es suficiente agregarlo a tu fichero mes_fonctions.php3 para utilizarlo. Como se ha mencionado al principio, desde [SPIP 1.5], es posible pasar parmetros adicionales a los filtros. La sintaxis es: [(#BALISE|filtro{arg1, arg2}|...)] El filtro debe ser definido en mes_fonctions.php3 de la manera siguiente: function filtro($texto, $arg1='valor por omision1', $arg2='valor por omision2') { ....calculos.... return (una cadena de caracteres); } As, se puede llamar a cualquier funcin php, o apoyarse en funciones definidas en SPIP o en mes_fonctions.php3, con la nica condicin de respetar el orden de los argumentos (el texto que se debe tratar tiene que ser el primer argumento). Por ejemplo, para cortar el texto a una longitud dada, digamos 50 caracteres, se puede utilizar [(#TEXTE|couper{50})].
22 En efecto, una va de ataque contra un sitio web puede consistir en insertar, donde slo est previsto un texto, cd i- go ejecutable adecuadamente presentado. Al construir sitios complejos con SPIP que incluyen PHP es conveniente tener presente esto.
- Pgina 40 de 114 - II.21. Los bucles recursivos Los bucles recursivos son una funcin muy potente para manejar la paginacin de la interfaz. Su programacin es particularmente sencilla; pero su utilizacin requiere un buen dominio lgico del enca- denamiento de los bucles. La llamada a un bucle recursivo es muy simple. Basta con indicar el nombre de otro bucle como TI- PO de bucle: <BOUCLEn(bouclex)></BOUCLEn> No hay ningn criterio: el bucle n corresponde pura y simplemente a una copia del bucle x. La totali- dad del bucle funciona como si se hubiera vuelto a copiar ntegramente el bucle x (todas las balizas y bucles SPIP, el cdigo HTML, al igual que los textos condicionales antes, despus, y el texto alternativo) en el lugar donde se presenta el bucle n. Es necesario, sin embargo, que el bucle x preceda al bucle n. La utilizacin ms simple consiste en duplicar un bucle sin tener que volver a copiarlo. As, tam- bin, cualquier modificacin del bucle original x repercute en la copia n. Pero el inters y la funcionalidad adicional aparecen en realidad cuando se pone el segundo bucle, n, dentro del primero, x. Se obtiene as un comportamiento recursivo: el bucle x contiene un bucle n, que a su vez reproduce el bucle x, que contiene el boucle n, y as sucesivamente, hasta que el bucle x ya no d ningn resultado. Un excelente ejemplo de lo que es la recursividad se encuentra en los foros: uno puede responder a un artculo, pero luego tambin se puede responder a esa respuesta, y nuevamente a la respuesta a la respuesta, y a la respuesta a la respuesta a la respuesta, y as recursivamente. Cmo hacer un esqueleto que muestre y ordene toda la discusin en un foro? Con lo que vimos has- ta aqu, habra que limitarse a cierto nivel de respuestas. Quizs sera sano, pero bien se sabe que es di- fcil decir de antemano cundo va a parar una discusin... La solucin es un bucle recursivo, es decir un bucle que se llama a si mismo. Para el caso de los fo- ros, he aqu un ejemplo que muestra, en listas incluidas, el titulo de todas las respuestas, sea cual sea el nivel de discusin. Es muy sencillo: un primer bucle fabrica la entrada de los hilos (threads, los men- sajes que responden a un artculo directamente), un segundo bucle muestra las respuestas a estos men- sajes, y un bucle recursivo causa la recursividad de este segundo bucle: <BOUCLE_foro(FORUMS){id_article}> <P>#TITRE <B_repuestas> <UL> <BOUCLE_repuestas(FORUMS){id_parent}> <LI>#TITRE <BOUCLE_recursivo(boucle_respuestas)> </BOUCLE_recursivo> </BOUCLE_repuestas> </UL> </B_repuestas> </BOUCLE_foro> El BOUCLE_recursivo es remplazado por el BOUCLE_repuestas que lo contiene, mientras haya resultados en el bucle, es decir mientras haya respuestas. As, en pocas lneas, se puede lograr que se muestre la totalidad de la estructura (secciones, subsec- ciones...) del sitio.
II.22. La popularidad de los artculos El concepto de popularidad expuesto a continuacin aparece en SPIP 1.4. II.22.1. Cmo calcular las visitas Existen cientos de mtodos estadsticos para calcular las visitas de un determinado sitio. La mayora ofrecen curvas horarias por da, que permiten conocer si el sitio "sube" o "baja" y verificar que hay ms gente conectada a la red al final de la tarde o durante la semana laboral que durante el fin de semana o la noche... Nuestro objetivo es un poco diferente: se trata de atribuir a cada artculo un valor de "popularidad" que refleje bastante bien la tendencia y permita comparar la actividad de los diferentes artculos sea de manera global en todo el sito (hit-parade), sea en el interior de una seccin, o sea a travs de los artcu- los de una misma autora o autor, etc. El mtodo aplicado es el siguiente (puedes prescindir de esta explicacin si no te sientes cmodo en matemticas ;-))
- Pgina 41 de 114 - Cada visita de un artculo aade un cierto nmero de puntos a este artculo; 1 punto si es un artcu- lo que se consulta desde el sitio siguiendo un enlace, y 2 puntos si es una "entrada directa" desde un sitio exterior (motor de bsqueda, enlace hipertexto, sindicacin...) Cada 10 minutos el recuento obtenido se multiplica por un pequeo factor de descuento que hace que un punto atribuido por una visita a las 10h12 del mircoles no vale ms que medio punto al da siguiente a la misma hora, y el viernes a las 10h12, un cuarto de punto...; La cifra total se calcula de manera que, en la hiptesis de que el artculo reciba siempre el mismo nmero x de visitas por unidad de tiempo, su puntuacin se establece sobre este valor x. Dicho de otra manera, si la frecuentacin del artculo es estacionaria, su popularidad terminar por reflejar exactamente el nmero de visitas por da (modulado por el marcador 2 dado para las entradas di- rectas); Esta popularidad se expresa de dos manera: una, la "popularit_absolue/popularidad_absoluta", ex- presa el marcador en cuestin (evaluacin de la frecuentacin cotidiana del artculo); la otra, la "po- pularit_relative/popularidad_relativa", un porcentaje relativo al artculo del sitio que tenga la ma- yor popularidad (popularit_max); Finalmente, la suma de todos estos valores (absolutos) del sitio da la populari- t_site/popularidad_sitio, que permite comparar la frecuentacin de dos sitios bajo SPIP... II.22.2. Bucles y etiquetas Determinadas etiquetas permiten recuperar y publicar estos valores en tus esqueletos. El siguiente bucle planteado resume el conjunto de etiquetas: <BOUCLE_pop(ARTICLES){id_article}{popularite>0}> <h5>Popularidad</h5> Este artculo tiene una popularidad absoluta igual a #POPULARITE_ABSOLUE, lo que es un #POPULARITE % de #POPULARITE_MAX. En total, este sitio tiene un promedio de #POPULARITE_SITE visitas al da. </BOUCLE_pop> La etiqueta ms til es la de #POPULARITE dado que ofrece un porcentaje de la popularidad del ar- tculo relativo al artculo ms popular del sitio. Ello permite realizar fcilmente clasificaciones comprensi- bles para todo el mundo (con valores que van del 0 al 100). Las otras etiquetas dan valores absolutos, ms difciles de interpretar para quienes visitan el sitio. Nota: a pesar de que los datos sean representados en la base de SPIP bajo forma de nmeros reales, el resultado de todas estas etiquetas se ofrece bajo forma de un nmero entero, lo que ofrecer, en sitios muy poco frecuentados (sobre todo sitios en pruebas) cosas diverti- das, como puede ser: Este artculo tiene una popularidad absoluta igual a 1, es decir el 17% de 2. En total este sitio recibe aproximadamente 5 visitas al da. Finalmente, puede resultar til un criterio de seleccin: {par popularite} que se utilizar por ejem- plo para publicar la lista de los 10 artculos ms populares de la seccin actual: <BOUCLE_hitparade(ARTICLES){id_rubrique}{par popularite}{inverse}{0,10}> <li>#TITRE (popularidad: #POPULARITE %)</li> </BOUCLE_hitparade> (Se suprimir {id_rubrique} para publicar un hit-parade del sitio completo.)
II.23. La gestin de las fechas [SPIP 1.6] introduce una serie de criterios y de etiquetas para manejar mejor las fechas de los artculos. Esta es la lista. II.23.1. Publicar las fechas #DATE es la fecha de publicacin en la web. (Modificable tras la publicacin del artculo, la breve, etc. La fecha de una seccin es la de la publicacin de su elemento ms reciente.) #DATE_REDAC es la fecha de primera publicacin. (Modificable a voluntad, la opcin slo est disponible para los artculos.) #DATE_MODIF [SPIP 1.5] es la fecha de la ltima edicin del artculo: se trata precisamente del ltimo momento en que el artculo fue abierto para ser editado ,haya sido modificado o no. Prctico en numerosos casos pero sin rigor cientfico... (No es modificable, salvo si se la quiere fijar a la fe- cha actual: basta entonces con abrir el artculo en edicin.) #DATE_NOUVEAUTES [SPIP 1.6] permite publicar la fecha del ltimo envo del correo electrnico presentando las novedades. Los filtros |annee, |mois, |jour, |heure, |minutes, |secondes, (ao, mes, da, hora, minutos, segundos) adems de los que ya hemos visto (vase cap. II.20. Los filtros de SPIP) |affdate, |nom_mois, |nom_jour, |saison, etc. (publicar fecha, nombre del mes, nombre del da de la semana,
- Pgina 42 de 114 - estacin, etc.) se aplican para permitir todas las publicaciones habituales en diversos formatos. Sin estos filtros, las balizas #DATE... devuelven una fecha en formato MySQL: "2001-12-01 03:25:02".) II.23.2. Filtros para presentar fechas Los siguientes filtros se utilizan con las fechas ([(#DATE|affdate)], por ejemplo): journum devuelve el nmero del da del mes: "19". jour devuelve el nmero ordinal del da del mes: "1", "19". nom_jour devuelve el nombre del da de la semana: "martes". mois devuelve el nmero de mes: "10". nom_mois devuelve el nombre del mes: "octubre". annee devuelve el ao: "2004". heures devuelve la hora de una fecha (las fechas de SPIP no slo manejan la fecha, sino tambin la hora) utilizando una numeracin de 24 h.: "00", "13", "22", etc. minutes devuelve los minutos. secondes devuelve los segundos. saison devuelve la estacin (primavera, verano, otoo, invierno). affdate devuelve la fecha completa; "19 de Octubre de 2004", por ejemplo. Algunas variantes del filtro affdate dan mas posibilidades que se ilustran a continuacin, con la manera de la cual devuelven (durante el ao 2004) las dos fechas "19 de octubre de 2004 y "1ro de noviembre de 2003: affdate_jourcourt devuelven el nombre del mes y el nmero del da si es el ao en curso, i.e. "19 de Octubre. Si la fecha es de otro ao se agrega el ao: "1ro de noviembre de 2003". affdate_court devuelve el nombre del mes y el nmero del da, si es del ao en curso, i.e. "19 de Octubre. Si la fecha es de otro ao slo se devuelven el mes y el ao: "noviembre de 2003". affdate_mois_annee devuelve slo el mes y el ao: "octubre 2004", "noviembre 2003". Si no se aade ninguno de los filtros mencionados, las balizas #DATE... aparecen con el formato de fecha nativo MySQL: "2001-12-01 03:25:02". II.23.3. Contexto de fecha [SPIP 1.6] ofrece a todos los bucles un contexto de fecha. Si nos encontramos dentro de un bucle (ARTICLES), (BREVES) o (RUBRIQUES), la fecha en cuestin es la fecha de publicacin del artculo, de la breve o de la ltima modificacin de la seccin. Si nos encontramos en el primer nivel del esqueleto, la fecha presentada en el contexto es la fecha del da, salvo si existe una fecha pasada en la URL de la pgina. En este ltimo caso y para las versiones de php superiores a 3.0.12, la fecha pasada en la URL se analiza con la funcin strtotime (vase http://www.php.net/manual/en/function.strtotime.php): as ?date=2003, ?date=2003/01 funcionarn, pero tambin funcionar date=-1year (hace un ao), ?da- te=1march1970 (artculos publicados el 1 de marzo de 1970), etc. II.23.4. Criterio de date/fecha, ge/antigedad, y ge relatif/antigedad relativa El criterio {age} 23 permite seleccionar los artculos en funcin del tiempo que dista entre su fecha de publicacin en lnea y la fecha corriente. As {age<30} permitir publicar los artculos puestos en lnea hace menos de 30 das. La {age_relatif} permite comparar las fechas de publicacin de dos artculos: si acabamos de se- leccionar un artculo en un bucle, un segundo bucle colocado dentro del primero podr, por ejemplo, so- licitar los artculos publicados en la semana precedente, utilizando simultneamente los criterios {age_relatif<=7}{age_relatif>=0} Los criterios {age} y {age_relatif} permiten distinguir dos artculos publicados el mismo da (no era posible antes de [SPIP 1.6]). Por ende, a partir de entonces se pueden programar bucles para ob- tener el artculo precedente o el siguiente: <BOUCLE_art(ARTICLES){id_article}> <BOUCLE_precedente(ARTICLES){age_relatif>=0}{par date}{inverse}{1,1}> Artculo precedente: <a href='#URL_ARTICLE'>#TITRE</a> #DATE </BOUCLE_precedente> <br /> <b>#TITRE</b> - #DATE <br /> <BOUCLE_siguiente(ARTICLES){age_relatif<0}{par date}{0,1}> Artculo siguiente: <a href='#URL_ARTICLE'>#TITRE</a> #DATE </BOUCLE_suivant> </BOUCLE_art>
23 Nota de traduccin: hemos traducido el concepto por "antigedad" aunque en traduccin literal del francs sera "edad".
- Pgina 43 de 114 - Atencin: A pesar de las apariencias, las comparaciones de fecha son de un manejo delicado: en efecto, a causa de las fechas ambiguas (un artculo publicado en un determinado mes sin que se pre- cise el da), el clculo de age_relatif/antigedad relativa puede dar valor cero en un sentido y no en otro. De ah la asimetra de los bucles presentados a continuacin: en un sentido se busca el "segundo ms reciente" de los artculos {age_relatif>=0} (puesto que el ms reciente en comparacin no estric- ta, solo puede ser el propio artculo); en otro, el ms antiguo de los artculos publicados estrictamente ms tarde. Los criterios {jour_relatif}, {mois_relatif} y {annee_relatif} (da, mes y ao relativo) funcio- nan como age_relatif pero tomando en cuenta las fechas redondeadas del da, el mes y el ao respecti- vamente; por ejemplo, si la URL lleva la variable ?date=2003-01-01, el bucle siguiente dar todos los artculos del mes de marzo de 2003 <h3>Articles de [(#DATE|nom_mois)] [(#DATE|annee)] :</h3> <BOUCLE_blog(ARTICLES){mois_relatif=0}{par date}{"<br />"}> <a href='#URL_ARTICLE'>#TITRE</a> ([(#DATE|jour)]/[(#DATE|nom_mois)] </BOUCLE_blog> II.23.5. La fecha de redaccin anterior Si activaste la utilizacin de fechas de publicacin anterior, la mayora de los criterios planteados a continuacin funcionan: tan slo es necesario aadir _redac al criterio 24 . As {age_redac>365} publi- car los artculos cuya fecha de publicacin anterior remonta a ms de un ao. Si un bucle selecciona un artculo cuya date_redac est definida, un bucle interno que contenga el criterio {annee_relatif_redac=0} buscar los artculos cuya fecha de publicacin pertenezca al mismo ao. 23.6. Un ejemplo de sumario de sitio clasificado por fecha A ttulo de ejemplo, he aqu como se puede publicar todos los artculos de un sitio, ordenados por mes de publicacin: <BOUCLE_articulom(ARTICLES){par date}{inverse}> <BOUCLE_primero_del_mes(ARTICLES){id_article}{doublons}> <BR><UL><b> [(#DATE|nom_mois|majuscules)] [(#DATE|annee)] </b> <li><a href="#URL_ARTICLE">[(#TITRE|couper{50})]</a> - [(#DATE|jour)]/[(#DATE|mois)]</li> </BOUCLE_primero_del_mes> <BOUCLE_MES(ARTICLES) {mois_relatif=0}{doublons}{par date}{inverse} > <li><a href="#URL_ARTICLE">[(#TITRE|couper{50})]</a> - [(#DATE|jour)]/[(#DATE|mois)]</li> </BOUCLE_MES> </ul> </BOUCLE_articulom>
II.24. Resaltar un artculo de una lista Introducida en SPIP 1.7.1, la baliza #EXPOSER permite destacar, en un men o una lista, el objeto principal de la pgina en la cual se encuentra. Su uso ms sencillo permite cambiar la manera de presentar el ttulo del artculo principal; por ejem- plo, en el esqueleto article.html, se puede modificar el estilo del enlace de la siguiente manera: <BOUCLE_principal(ARTICLES){id_article}> <BOUCLE_menu(ARTICLES){id_rubrique}> <li class='enlace#EXPOSER'><a href="#URL_ARTICLE">#TITRE<a></li> </BOUCLE_menu>
... #TEXTE ...
</BOUCLE_principal> con los siguientes estilos: a.enlace { color: red; } a.enlaceon { color: blue; font-weight: bold;
24 redac, de redaction, redaccin.
- Pgina 44 de 114 - } El objeto que resulta resaltado por una presentacin diferente es el artculo, la noticia breve, la seccin, la palabra clave o el autor que pertenecen al contexto actual. En el caso de las secciones, gestiona la jerarqua completa, lo que permite resaltar el rbol de secciones que contiene el artculo publicado. Por omisin, SPIP reemplaza la baliza #EXPOSER por on si el objeto pertenece al contexto actual; de lo contrario la baliza simplemente se ignora. Sin embargo, la baliza #EXPOSER acepta uno o dos ar- gumentos, que permiten de precisar cmo se presenta el artculo resaltado, y cmo se presenta el resto de artculos. As mediante [(#EXPOSER|s,no)] se ver s en el artculo resaltado, y no en el re- sto. Nota: los dos argumentos estn separados mediante una coma, lo que impide utilizar la coma en el primero de ellos; se permiten las siguientes construcciones: [(#EXPOSER|plus)] para mostrar plus en lugar de on; [(#EXPOSER|,off)] para no mostrar nada en el objeto resaltado, y mostrar off en el resto de objetos. Con un pequeo truco se puede desactivar el enlace al artculo resaltado y, al mismo tiempo, elegir la hoja de estilo: <BOUCLE_menu(ARTICLES){id_rubrique}{"<br>"}> <a [(#EXPOSER|id,href)]="#URL_ARTICLE" class="enlace[(#EXPOSER|- desactivado)]">#TITRE</a> </BOUCLE_menu> crear el siguiente HTML: <a href="article1.html" class="enlace">Todo sobre mi hermana</a><br> <a id="article2.html" class="enlace-desactivado">Todo sobre m</a><br> <a href="article3.html" class="enlace">Todo sobre mi hermano</a> que aparece as: Todo sobre mi hermana Todo sobre m Todo sobre mi hermano
- Pgina 45 de 114 -
III. SPIP paso a paso. Paso a paso, como crear un SPIP que desafa los lmi- tes.
- Pgina 46 de 114 - III.1. Mi primer esqueleto (lo saco del armario) Si el sistema de esqueletos puede parecer en un principio intimidador es porque lo que se le pide es suficientemente rico para obligarlo a ser complejo. Pero complejo no quiere decir complicado. Expone- mos a continuacin un ejemplo mnimo de esqueleto. Supondremos para empezar que tu base SPIP contiene al menos una seccin y dos artculos publi- cados. Antes de utilizar un esqueleto es necesario poder llamarlo: crea en la raz de tu sitio web un fichero tutorial.php3 que contenga las siguientes lneas: <? $fond = "tutorial"; $delais = 0; include "inc-public.php3"; ?> Despus, comprueba en tu navegador: http://tusitio.net/tutorial.php3. no funciona, verdad? El mensaje de error est informando que falta un fichero. Es el famoso esqueleto que ahora vamos a crear. En la raz del sitio coloca un fichero tutorial.html, que contenga lo siguiente: <BOUCLE_articulo(ARTICLES){id_article=1}> #TITRE </BOUCLE_articulo> Despus recarga la pgina http://tusitio.net/tutorial.php3. Va mejor, no? SPIP fue a buscar el ttulo del artculo n 1 de tu base y la muestra en el lugar de #TITRE. Si esto no funciona... tienes que verificar que tu artculo n1 est correctamente publicado (y no propuesto a la evaluacin o en curso de redaccin). Despus aade el HTML, otras llamadas de campos SPIP, y obtendrs rapidamente tu artculo n1 completo: <BOUCLE_articulo(ARTICLES){id_article=1}> <H1>#TITRE</H1> <B>#CHAPO</B> <P align=justify>#TEXTE </BOUCLE_articulo> Aade a continuacin los campos que faltan: #SURTITRE, #LESAUTEURS, #SOUSTITRE, #NO- TES, etc. Bien!
III.2. Un esqueleto, varios artculos... es para eso que sirve La leccin precedente nos permiti extraer los datos del artculo n 1 de la base de datos y hacer una pgina Web. Generalicemos... Nuestro esqueleto es intil si slo sirve para colgar el artculo n 1. Aprendamos a colgar cualquier artculo: Para ello vamos a llamar a nuestra pgina Web con una variable id_article=2: solicita al navegador la direccin URL http://tusitio.net/tutorial.php3?id_article=2. Y ah aparece... el artculo 1 (y no el 2). Modifiquemos en el esqueleto tutorial.html la lnea que de- fine el bucle artculo : <BOUCLE_articulo(ARTICLES){id_article}> (Como vers, se reemplaza {id_article=1} por {id_article}). Veamos: http://tusitio.net/tutorial.php3?id_article=2 te devuelve el artculo 2 25 . El BOUCLE_articulo se ejecuta en un contexto donde id_article es igual a 2 (el valor que se pasa en la URL). Si se le indica de manera precisa {id_article=1} buscar el artculo n 1 pero si se le pide {id_article}, buscar el artculo cuyo nmero est indicado en el contexto (aqu, la URL). Pincha ahora en :
25 No? al menos debera...
- Pgina 47 de 114 - http://tusitio.net/tutoriel.php3?id_article=1, http://tusitio.net/tutoriel.php3?id_article=2 y http://tusitio.net/tutoriel.php3. Ves la diferencia? Las dos primera pginas te permiten visualizar los artculos n 1 y 2, la tercera no tiene id_article en su contexto y produce un error. Bravo! Tu esqueleto es ahora "contextual.
III.3. Una seccin (rbrica) o cmo hacer listas del contenido de la base La leccin precedente nos ensea a colgar elementos en funcin del contexto. Ahora vamos a ver como este contexto vara a medida de los BOUCLES que vaya encontrando. Modifiquemos nuestro esqueleto tutorial.html de la siguiente manera : <BOUCLE_articulos(ARTICLES)> #TITRE<BR> </BOUCLE_articulos> En este caso se suprime directamente la condicin {id_article=1}. Atencin: este BOUCLE va a generar una pgina enorme si tu base contiene ya un nmero considerable de artculos: es mejor tomar precauciones y aadir de {0,10} para limitar a los 10 primeros artculos... <BOUCLE_articulos(ARTICLES){0,10}> Resultado: los ttulos de los 10 primeros artculos de tu base de datos quedan visualizados en la p- gina, separados por un salto de lnea. A partir de ah se puede ver como producir el sumario de una sec- cin (rubrique): colguemos los 10 artculos ms recientes que pertenecen a esta seccin. <BOUCLE_articulos(ARTICLES){id_rubrique}{par date}{inverse}{0,10}> <a href=#URL_ARTICLE>#TITRE</A><BR> </BOUCLE_articulos> Tommoslo por orden : {id_rubrique}: solo toma los artculos que pertenecen a la seccin id_rubrique (cf. a continuacin para que esta variable sea definida en el contexto de nuestro BOUCLE_articulos). {par date}{inverse}: selecciona por fecha en orden decreciente (antecronolgico)... {0,10}: ... et toma los 10 primeros resultados. Finalmente, <a href=#URL_ARTICLE>#TITRE</A> escribir no slo el ttulo del artculo sino que adems crear un enlace hacia este artculo. Queda por invocar el esqueleto transmitindole el contexto {id_rubrique=1}: http://tusitio.net/tutorial.php3?id_rubrique=1 La magia de SPIP est en la combinacin de este tipo de funcionalidades. Si has llegado hasta aqu, ya est logrado!
III.4. Bucles en bucles Ya sabemos generar la lista de ttulos de una seccin. Ahora vamos a colgar en la misma pgina los propios elementos de la seccin: su ttulo, su texto de presentacin, etc. Intentalo! Y esta es una solucin: <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> [(#TEXTE|justifier)] </BOUCLE_seccion> Desde el navegador llamamos a la pgina con http://tusitio.net/tutorial.php3?id_rubrique=1. Qu es lo que ocurre? Nuestro bucle ARTICULOS est integrado en un bucle SECCION. El contexto del bucle ARTICULOS es la id_rubrique dada por el bucle SECCION, que a su vez va a buscar el contexto dado por el URL, es
- Pgina 48 de 114 - decir ?id_rubrique=1). Por lo tanto, estamos en el nivel de los ARTICULOS, con la id_rubrique solici- tada. Desde este punto de vista no cambia nada. Por otro lado sin embargo, el bucle SECCION ha permitido a SPIP seleccionar los valores de los campos de la seccin en cuestin: podemos por tanto colgar el #TITRE y el #TEXTE de esta seccin. Fjate bien en que el #TEXTE sera el de la seccin incluso si llamramos #TEXTE en el bucle ARTICU- LOS. El funcionamiento ramificado de SPIP garantiza que el #TEXTE de un artculo no desborde el bucle ARTICULOS... Una ltima cuestin: se ha introducido un filtro |justifier en el campo #TEXTE. Este filtro modifica el contenido del texto antes de instalarlo en la pgina final. Empiezas a tomarle gusto?
III.5. Gestionar la cach... y evitar hacer trabajar al servidor que tiene otras cosas que hacer En las lecciones precedente hemos comenzado a elaborar los esqueletos. El xito de nuestro sitio web corre el riesgo de ser fulgurante. Pensemos enseguida en las pobres neuronas de nuestro ordena- dor. En esta leccin, nada de divertido, tampoco nada de esencial. Los y las perezosos/as aprovecharn para acurrucarse en el fondo, cerca del radiador. ;-) Resumen para ellos y para la gente que tiene prisa: en los ficheros de llamada de tipo tutorial.php3, cambiar por $delais = 3600; la cifra de 0. En el momento en el que una pgina es solicitada a SPIP este comprueba si, por azar, esta pgina ya ha sido vista anteriormente. Si la URL solicitada es http://tusitio.net/tutorial.php3?id_article=12, SPIP mira en su sub-repertorio CACHE/ si este fichero existe y, en caso de que as sea, compara la fecha del fichero cach a el $delais (plazo) fijado en le fichero de llamada tutorial.php3. En nuestro ejemplo habamos fijado un plazo de $delais=0; es decir que se produce un clculo sis- temtico de las pginas en cada consulta del sitio. Pasemos a $delais=3600; (se expresa en segun- dos). Nuestra pgina web slo es renovada si, cuando un o una visitante la solicita, su versin en cach data de ms de una hora (es decir 3600 s.) De lo contrario SPIP lee simplemente el contenido del fichero cach 26 y reenva el resultado sin conectarse a la base de datos (salvo para insertar un "hit en las esta- dsticas). Como fijar estos $delais para optimizar la relacin reactividad/carga del servidor? No hay soluciones milagrosas pero no dudes en fijar un plazo de un da (i.e. $delais=24*3600) o ms, para los artculos y las secciones (rbricas). Las pginas de navegacin ms importantes pueden tener $de- lais ms cortos (veinte minutos o una hora, por ejemplo) si se supone que tu sitio debe a reaccionar con frecuencia a la validacin de noticias breves y de sitios sindicados... Si ests albergado en un servidor compartido con otros sitios, debes ser respetuoso/a con los dems y no tomar todo el tiempo de clculo para pginas que raramente cambian: sera especialmente tonto por lo que respecta a los artculos grandes o en los sumarios, ya que el clculo de pginas puede tomar algunos segundos, lo que ralentiza la consulta de tus pginas... Como provocar una puesta al da fuera de plazo? Acabamos de decidir $delais extremada- mente largos y nos damos cuenta de una falta de ortografa en una pgina. Correccin en el back- office... Como borrar de inmediato tal villana cicatriz del sitio? Desde una pgina de modificacin de artculo o seccin el back-office (la interfaz privada de SPIP), al pinchar en Ver en lnea (abajo del n de artculo o seccin) se inicia la actualizacin de la pgi- na correspondiente a #URL_ARTICLE o #URL_RUBRIQUE del artculo o de la rbrica que acabas de corregir. Este es el caso ms frecuente. Pero sin, cmo actualizar un esqueleto personalizado? La solucin ms sencilla consiste en pinchar en el botn "Actualizar esta pgina que le aparece al administrador en la zona inferior izquierda de cada pgina del sitio pblico. Cabe recalcar que ste botn te aparece nicamente si eres administrador, y slo una vez que te hayas conectado a la in- terfacz privada (back-office) desde el navegador que utilizas. Para sto, SPIP coloca un cookie en tu navegador que le permite reconocerte. Si deseas suprimir ese cookie, lo puedes hacer desde la por- tada de la interfaz privada, pinchando en el tringulo al lado de tu nombre, que muestra tus infor- maciones personales. Finalmente, en el back-office del sitio, en la sub-seccin Mantenimiento del sitio de la Adminis- tracin del sitio, encontrars los comandos para vaciar la cach que borra todos los ficheros de la cachs (til si haces muchas modificaciones y con un sitio muy complejo, evitar si no es as). Volviendo al contexto: Volvemos aqu sobre la nocin de contexto. Si se llama un esqueleto con un contexto de id_article, de id_rubrique o incluso id_breve, se propone otro botn cuando SPIP detecta
26 Para los/las especialistas, se trata de hecho de un include PHP del fichero correspondiente, permitiendo ejecutar el cdigo desde la cach.
- Pgina 49 de 114 - el cookie: Modificar este artculo (ou seccin, o breve), que conduce directamente a la pgina corres- pondiente en el back-office. Y se le dice gracias a quin? ltimos detalles: por razones evidentes el motor de bsqueda no dispara la cache y se reactualizan las pginas con forum son en cuanto se enva una nueva contribucin. la carpeta CACHE/ en la ramificacin del sitio se divide en 16 sub-carpeta numeradas 0, 1, 2... 9, A, B... F, en las cuales los ficheros cachs se distribuyen casi-aleatoriamente; esto se llama hacer un hash de la cach y slo por ello ya merece que se le mencione. los ficheros cachs quedan accesibles incluso si la base de datos "se cae, lo que proteje al sitio en caso de averas transitorias del servidor MySQL.
III.6. Los filtros. Sutilezas esquelticas Si los BOUCLES permiten estructurar la pgina de manera lgica, falta por presentar los datos de manera esttica. En cuestiones de diseo SPIP no puede hacer nada por t, pero es bueno saber utilizar sus filtros... Un dato almacenado en la base MySQL se presenta como un bloque de texto, cuyo valor puede que queramos manipular antes de presentarlo en pantalla. Los filtros estn hechos para eso: los filtros ms utilizados (son llamados sistemticamente) son |typo y |propre; el primero es un corrector tipogrfico que tiene por misin principal aadir espacios "insecables donde sea necesario (cf. Ayuda en linea de SPIP); el segundo se encarga de los prrafos, los atajos SPIP (itlicas, negri- tas, interttulos, notas de pi de pgina, etc.) - tan solo se aplica por defecto en los campos largos (#TEXTE, #CHAPO, etc.) Otros filtros son muy utilizados: citemos |majuscules (con funcionalidad evidente: maysculas), |justifier o |aligner_droite (que definen la alineacin del texto respecto a los bordes verticales), o in- cluso la esotrica |saison (que indica verano si la variable es una fecha comprendida entre el 21 de junio y el 20 de septiembre)... Para utilizar un filtro es necesario incluir la variable entre parntesis o corchetes (ms tarde se vern las implicaciones): [blah blah (#VARIABLE|filtro) bloh bloh] Los filtros pueden encadenarse uno tras otro 27 : as [(#DATE|saison|majuscules)] mostrar la palabra INVIERNO 28 . Ejercicio referido al conjunto de las lecciones precedentes: Mostrar, en maysculas, los ttulos de los 10 artculos ms recientes de la seccin pasada en el contexto, y colocar al comienzo de la pgina la es- tacin actual (es decir la estacin en la cual se ha publicado el artculo ms reciente de toda la base de datos). *** Para que los corchetes? Supongamos que vuestra base de datos contiene unos artculos con fe- cha y otros sin ella. La variable {#DATE} vale 2001-07-01 10-53-01 (fecha en formato MySQL) en el primer caso y 0000-00-00 00-00-00 en el segundo. Para mostrar la fecha en un bonito(?) cuadro, se van a utilizar en el esqueleto las lneas siguientes: [<table border=1><tr><td> (#DATE|affdate) </td></tr></table>] Aqu el filtro |affdate muestra la fecha en letra (con el formato 1ro de Julio de 2001 29 ); pero de- vuelve una cadena vaca si la fecha es desconocida (igual a 0000...). Los corchetes delimitan lo que hay que mostrar junto a la fecha si el resultado entre parntesis no es una cadena vaca. Resultado: slo los artculos datados provocan que se muestre un cuadro conteniendo la fecha. Un esqueleto bien construido definir precisamente lo que es necesario colgar o no en funcin del conteni- do... Los filtros sirven tambin para esto.
27 Lo que podemos llamar un pipeline. 28 Si es que estamos en invierno, claro. 29 La lengua en que aparece la fecha es la lengua principal del sitio.
- Pgina 50 de 114 -
IV. Gua de las funciones avanzadas Ms all del manual de referencia, aqu encontrars una descripcin de las funciones ms avanzadas para la configuracin de un sitio con SPIP.
- Pgina 51 de 114 - IV.1. Estructura de la base de datos La estructura de la base de datos es bastante sencilla. Las convenciones utilizadas aparecen implici- tamente en este documento. Por ejemplo, la mayora de los objetos se indexan con un entero autoin- crementado cuyo nombre es algo como id_objet, y que se declara como clave primaria en su tabla. NB: este artculo necesita ser actualizado y nadie lo est haciendo todava. Hay que leerlo como un elemento que ayuda a comprender el funcionamiento de SPIP, pero ya no como una refe- rencia. Si quieres contribuir a la documentacin rehaciendo este artculo, no lo dudes! IV.1.1. Contenido referido a la redaccin 30
Las secciones: spip_rubriques Cada seccin se identifica por su id_rubrique. id_parent es la id_rubrique de la seccin que contiene esta seccin (cero si la seccin se encuentra en la raz del sitio). titre, descriptif, texte se explican ellos mismos 31 . id_secteur es la id_rubrique de la seccin inicial de la jerarqua que la contiene. Una seccin depende de una seccin que depende de una seccin. hasta una seccin colocada en la raz del sitio; es esta ltima seccin la que determina el id_secteur. Este valor calculado previamente permite acelerar ciertos clculos del espacio pblico (de hecho las breves son clasificadas nicamente por sector y no segn toda la jerarqua). maj es un campo tcnico 32 calculado automticamente por MySQL. Contiene la fecha de la ltima modificacin introducida en la tabla. export, id_import son dos campos reservados para funcionalidades futuras. Los artculos: spip_articles Cada artculo est identificado por su id_article. id_rubrique indica en que seccin est incluido el artculo. id_secteur indica el sector correspondiente a la seccin antes mencionada (ver el prrafo precedente para advertir la diferencia entre los dos). titre, surtitre, soustitre, descriptif, chapo, texte, ps se explican ellos mismos. date es la fecha de publicacin del artculo (si todava no est publicado, es la fecha de creacin). date_redac es la fecha de publicacin anterior si introduces un valor, sino es 0000-00-00. statut es la situacin actual del artculo: prepa (en curso de redaccin), prop (propuesto a su publicacin), publie (publicado), refuse (rechazado), poubelle (en la papelera). accepter_forum: permite seleccionar manualmente si el artculo acepta foros o no (por defecto, s). maj: el mismo significado que en la tabla de las secciones. export es un campo reservado para funcionalidades futuras. images es un campo que contiene la lista de las imgenes utilizadas por el artculo, en un formato propio. Este campo se genera por spip_image.php3.. visites y referers son usados para las estadsticas sobre los artculos. El primero es el nmero de visitas del artculo en el espacio pblico; el segundo contiene un extracto de hash de las visitas externas para recordar esos diferentes enlaces externos. Ver inc-stats.php3.
30 ... de artculos, breves,... 31 Se explican ellos mismos... en francs ;-) Puede ser til consultar el Lxico SPIP francs - espaol [http://www.spip.net/es_article104.html]. 32 "maj son las iniciales de "mise jour: puesta al da, actualizacin.
- Pgina 52 de 114 - Los autores/as: spip_auteurs Cada autora o autor es identificado por su id_auteur. nom, bio, nom_site, url_site, pgp son, respectivamente, el nombre de la autora o autor, una corta biografa, su direccin de email, el nombre de la URL de su sitio Web, y su clave PGP. Son informaciones que l o ella puede modificar libremente. email, login son su email de inscripcin y su login. Slo puede modi- ficarlos un administrador. pass es el hash MD5 de la contrasea. htpass es el valor encriptado (i.e. generado por encriptacin) de la contrasea para el .htpasswd. statut es el estado del autor/a: 0minirezo (administrador/a), 1comite (redactor/a), 5poubelle (en la papelera), 6forum (registrado en los foros, cuando estn definidos en el modo por registro). maj tiene el mismo significado que en las otras tablas.
Las breves: spip_breves Cada breve est identificada por su id_breve. id_rubrique es la seccin (de hecho el sector) en la cual est clasificada la breve. titre, texte, lien_titre, lien_url son el ttulo, el texto, y el nombre y la direccin de referencia asociados a la breve. date_heure es la fecha de la breve. statut es el estado de la breve: prop (propuesta a su publicacin), publie (publicada) o refuse (rechazada). maj: igual que en las otras tablas. Las palabras clave: spip_mots Cada palabra clave es identificada por su id_mot. El type de la palabra clave es el tipo, o grupo, elegido para esa palabra clave. Definiendo varios tipos se obtienen diversas clasificaciones independientes (por ejemplo tema, poca, pas...). titre, descriptif, texte se explican ellos mismos. maj: igual que en las otras tablas.
Los sitios sindicados: spip_syndic Cada sitio sindicado es identificado por su id_syndic. id_rubrique e id_secteur contienen la posicin en la jerarqua del sitio donde se encuentran los contenidos sindicados. nom_site, url_site, descriptif son el nombre, la direccion y la descripcion del sitio sindicado. url_syndic es la direccin del archivo dinmico utilizado para recoger los contenidos sindicados (normalmente se trata de la url_site seguida de backend.php3). Los artculos sindicados: spip_syndic_articles Cada artculo sindicado es identificado por su id_syndic_article. id_syndic se refiere al sitio sindicado de donde es extrado el artculo. titre, url, date, lesauteurs se explican ellos mismos.
IV.1.2. Elementos interactivos Los mensajes de los foros: spip_forum Cada mensaje de un foro es identificado por su id_forum.
- Pgina 53 de 114 - El objeto al cual est vinculado el foro es identificado por su id_rubrique, id_article o id_breve. Por defecto estos valores estn a cero. El mensaje padre (es decir, el mensaje al que se responde con el mensaje actual) es identificado por id_parent. Si el mensaje no es una respuesta a ningn otro mensaje este valor es cero. titre, texte, nom_site, url_site son el ttulo y el nombre del mensaje, y el nombre y la direccin del objeto relacionado. auteur y email_auteur son el nombre y el email declarados por la autora o autor. En el caso de los foros con registro, no tienen porque ser los mismos que los datos guardados del autor (por ej. en la tabla spip_auteurs). id_auteur identifica al autor o autora del mensaje en el caso de los foros con inscripcin. statut es el estado del mensaje: publie (visible en el espacio pblico), prive (escrito en relacin a un artculo del espacio privado), privrac (escrito en el foro interno en el espacio privado), off (suprimido o a validar, segn la moderacin de los foros -a priori o a posteriori-). ip es la direccin IP del ordenador de conexin al redactar una contribucin en los foros pblicos. maj: igual que en las otras tablas.
Las peticiones: spip_petitions id_article identifica el artculo al cual est asociada la peticin (una sola peticin por artculo). email_unique, site_obli, site_unique, message definen la configuracin de la peticin: la direccin email de los firmantes debe ser nica en las firmas; la direccin Web es obligatoria y debe ser nica; un mensaje relacionado con las firmas es autorizado (oui o non). texte es el texto de la peticin. maj igual que en las otras tablas. Las firmas de las peticiones: spip_signatures Cada firma es identificada por su id_signature. id_article identifica el artculo en el que est incluida la peticin que tiene la firma. nom_email, ad_email, nom_site, url_site son el nombre, la direccin email, as como el sitio Web escritos por la persona firmante. message es el mensaje eventualmente introducido por la persona firmante. statut es el estado de la firma: publie (aceptada), poubelle (suprimida); cualquier otro valor da el valor de la clave de validacin utilizada para la confirmacin por email. maj: igual que en las otras tablas.
IV.1.3. Las relaciones entre los objetos Estas tablas no generan ningn contenido, simplemente una relacin entre los objetos presentes en otras tablas. As: spip_auteurs_articles especifica la relacin entre autores/as y sus artculos. Si un id_auteur est asociado a un id_article, eso quiere decir que el autor/a en cuestin ha escrito o coescrito el artcu- lo (puede haber varios artculos por autor/a y viceversa). spip_mots_articles la define la relacin para relacionar los artculos por palabras clave. IV.1.4. Gestin del sitio La tabla spip_meta es fundamental. Contiene parejas (nom, valeur) indexadas por el nombre (cla- ve primaria); estas parejas permiten almacenar diferentes informaciones como la configuracin del sitio o la versin instalada de SPIP. La tabla spip_forum_cache es utilizada para adaptar el sistema de cach a la inmediatez de los fo- ros. Para cada fichero de la cach que haya dado lugar a una bsqueda en la tabla spip_forum, la tabla
- Pgina 54 de 114 - spip_forum_cache almacena los parmetros de la bsqueda (artculo, seccin, breve y eventual men- saje padre del foro). Cuando un mensaje es enviado, sus parmetros son comparados con los guardados en spip_forum_cache, y para cada correspondencia encontrada el fichero cach hallado en la tabla es borrado. As los mensajes no tienen que esperar a que la pgina en la que se encuentran vuelva a ser calculada para aparecer en el espacio pblico. IV.1.5. Indexacin (motor de bsqueda) Seis tablas son utilizadas por el motor de bsqueda. Se dividen en dos categoras. El diccionario de indexacin: spip_index_dico Cada palabra encontrada durante la indexacin es almacenada en esta tabla, as como los 64 prime- ros bits de su hash MD5. Es la palabra que sirve de clave primaria, permitiendo as efectuar muy rpidas bsquedas sobre el comienzo de una palabra; se recuperan entonces los hash que satisfacen la bsque- da, con el fin de efectuar la bsqueda propiamente dicha en las tablas de indexacin. Las tablas de indexacin: spip_index_* Estas tablas, son cinco, generan cada una la indexacin de un tipo de objeto: artculos, seccines, breves, autores/as, palabras clave. Una entrada por palabra y por objeto es almacenada. Cada entrada contiene el hash de la palabra (de hecho, los 64 bits ms importantes del hash MD5, cf. debajo), el iden- tificador del objeto indexado (por ejemplo el id_article para un artculo), y el nmero de puntos asocia- do a la indexacin de la palabra dentro del objeto. Este nmero de puntos es calculado en funcin del nmero de ocurrencias de la palabra, ponderado por el campo donde se producen esas incidencias: una ocurrencia en le ttulo de un artculo genera ms puntos que una ocurrencia en el cuerpo del artculo. El funcionamiento de la indexacin es explicado ms detalladamente aqu.
IV.2. El soporte LDAP Atencin este artculo est realamente desintado a las personas que son usuarias avanzadas, que controlan la utilizacin de LDAP y desean apoyr SPIP en un anuario LDAP existente. LDAP (Lightweight Directory Access Protocol) es un protocolo que permite interrogar un anuario que contiene informaciones de usuarios (nombre, login, autentificacin...). Desde la versin [SPIP 1.5] es posible virificar si una redactora se encuentra en la base LDAP antes de darle acceso al espacio privado. En la instalacin, SPIP detecta si PHP ha sido compilado con el soporte LDAP. Si es as, en la quinta etapa ("crear un acceso) un botn permite aadir un anuario LDAP a la configuracin SPIP. La configu- racin que sigue es relativamente simple e intenta adivinar al mximo los parmetros. Especialmente, permite elegir por defecto el estatuto de las autoras que se encuentran en el anuario: ellas pueden ser redactores (aconsejado), administradoras, o simples personas visitantes. Nota: por defecto, la extensin LDAP de PHP no est habitualmente activada por tanto SPIP no publicar el formulario correspondiente durante la instalacin. Acordaros de activar la exten- sin LDAP en vuestra instalacin PHP si vais a utilizar LDAP con SPIP. Si SPIP se encuentra ya instalado y quieres configurar el anuario LDAP bastar con retomar la insta- lacin borrando el fichero ecrire/inc_connect.php3. Una vez que la configuracin se ha realizado co- rrectamente, los usuarios del anuario LDAP sern identificados escribiendo el login (el nombre) en el anuario LDAPT y despus la contrasea. Ten en cuenta que ello no impide crear directamente autoras en SPIP; estos nombres de autores no se recopiarn en el anuario sino que sern gestionados directamente por SPIP. Por otro lado las informaciones personales (biografa, clave PGP...) de los autores autentifica- dos en LDAP tampoco se volvern a copiar en el anuario. As SPIP solo tiene necesidad de un acceso solo lectura en el anaurio LDAP. Importante. crea siempre una primera adminsitradora normal (no LDAP) tras la instalacin de SPIP. Es preferible para evitar quedarse bloqueado en caso de avera del servidor LDAP. IV.2.1. Para saber ms Las informaciones de conexin al servidor LDAP estn escritas en inc_connect.php3. Corolario: es necesario suprimir este fichero y volver a lanzar la instalacin para activar LDAP en el sitio SPIP existen- te. En la tabla spip_auteures se aade un campo fuente que indica de donde vienen las informa- ciones sobre la autora. Por defecto, es spip pero puede tomarse tambin el valor ldap. Ello permite saber concretamente cuales son los campos que no deben cambiarse: en particular no se debe autorizar la modificacin del login, puesto que de lo contrario se produce una prdida de sincronizacin entre SPIP y LDAP. Durante la autentificacin se prueban los dos mtodos: primero SPIP y posteriormente LDAP. De hecho un autor LDAP no podr ser identificado por el mtodo SPIP (mtodo standard con challenge md5) ya que el paso se deja vaco en la tabla spip autoras. Con respecto al autor SPIP la contrasea se trans- mite en claro. Cuando un autor LDAP se conecta por primera vez su entrada se aade en la table spip
- Pgina 55 de 114 - autoras. Los campos que se rellenan son: nombre, login y correo electrnico que vienen de LDAP (cam- pos cn, uid y mail y el estatuto cuyo valor por defecto se define durante la instalacin redactor, adminis- tradora o visitante. Importante: no se puede modificar el estatuto con el fin de elegir sus administrado- res a mano por ejemplo, Una vez que la autora se ha conectado es autentificada por la va clsica, es decir simplemente con el cookie de sesin. As solo se conecta a LDAP a partir del login (spip_cookie.php3). Por otro lado, las informaciones que se tienen en cuenta en la publicacin y los bucles son las de spip autoras y no las del anuario. Para los autores SPIP no cambia nada. Pueden crearse y modificarse como de costumbre.
IV.3. Spip y las hojas de estilo SPIP 1.2 Cuando se utilizan los atajos tipogrficos en los artculos con SPIP (permitiendo por ejemplo poner en negrita, en cursiva, crear enlaces hipertexto, nterttulos, etc.) SPIP produce las balizas HTML necesarias a tal efecto, cada una de estas balizas est asociada a una clase de estilo CSS. Por ejemplo, Esto es un [enlace->http://www.uzine.net] ser transformado en cdigo HTML as: Esto es un <a href="http://www.uzine.net" class="spip_out">enlace</a> El cdigo HTML se completa as llamando a un estilo CSS llamado `shim_spipnet`.spip_out . Quin lo use puede lograr por tanto la personalizacin de su interfaz grfica definiendo este estilo `shim_spipnet`.spip_out (color diferente, fondo, etc.). La mayora de los atajos tipogrficos de SPIP pueden as ser parametrizados con hojas de estilo; al- gunos son muy tiles, otros se reservan a las webmisstres/webmasters que desean efectos exticos. IV.3.1. Dnde se encuentra la definicin de hojas de estilo? En la instalacin de SPIP con los esqueletos que se ofrecen en estndar, la definicin de las hojas de estilo se encuentra en la carpeta donde est instalado SPIP, en el fichero: spip_style.css Puedes modificar los estilos (incluso es aconsejable), pero es preferible definir tu propio fichero de hojas de estilo CSS para que tus aadidos no se pierdan cuando instales una versin nueva de SPIP. Igualmente puedes integrar directamente las definiciones de estilos en los esqueletos. Atencin: el concepto de hoja de estilo o cascading style sheets, no es una norma propia de SPIP, se trata de un estndar de la Web. Existe numerosa documentacin sobre este tema en diversos sitios; consultar por ejemplo la pgina del W3C. Con el fin de seguir esta explicacin es altamente recomendable abrir el archivo spip_style.css en un editor de textos. IV.3.2. Los enlaces de hipertexto Las dos primeras definiciones permiten modificar el comportamiento de a y a :hover ; muy clsicas, se refieren a todos los sitios enlazados en la pgina Web (mostrar los enlaces sin subrayado y arreglar el sobrevuelo de los enlaces de hipertexto). Se encuentran a continuacin tres definiciones propias de los atajos tipogrficos de SPIP: a.spip_in, a.spip_out, a.spip_url. a.spip_in se refiere a los enlaces en el interior de tu propio sitio. Por ejemplo : Esto es un [enlace interno->article1177] a.spip_out se refiere a los enlaces exteriores de vuestro sitio. Por ejemplo : Esto es un [enlace externo->http://www.uzine.net] a.spip_url se refiere a las direcciones URL transformadas en enlace hipertexto. Por ejemplo : [->http://www.uzine.net] (este atajo muestra la URL, con un enlace hipertexto hacia esta direccin, as: http://www.uzine.net). El principal inters de estos tres estilos diferentes es el de permitir diferenciar de manera grfica los enlaces internos en el sitio y los enlaces hacia otro sitio. IV.3.3. Los interttulos Los interttulos creados por el atajo siguiente : {{{Un interttulo}}}
- Pgina 56 de 114 - pueden ser definidos por el estilo h3.spip. Este estilo es sin duda uno de los ms tiles puesto que permite definir el tamao, el cuerpo (police) y la posicin de los interttulos en los artculos: segn tu eleccin grfica y tipogrfica es probable que tengas que modificarlo. Por defecto, la definicin es : h3.spip { font-family: Verdana,Arial,Helvetica,sans-serif; font-weight: bold; font-size: 120%; text-align: center; margin-top: 2em; margin-bottom: 1.5em; padding: 0em; } Fjate en particular en los atributos margin y padding que permiten intervenir sobre el espaciado del interttulo respecto a los prrafos anterior y siguiente. Sin estos reglajes, habra muchas posibilidades de que el interttulo estuviese demasiado pegado al resto del texto, o bien demasiado separado (segn los gustos...). IV.3.4. Cdigo y tabla Los elementos del cdigo definidos por el atajo : <code>Cdigo en el texto</code> son parmetrizados por el estilo .spip_code. Poco utilizado, salvo en casos de documentacin tcni- ca (como sta) donde hay que poner trozos de cdigo informtico, nombres de ficheros o directorios... Introducida en SPIP 1.3, la baliza <cadre>...</cadre> permite presentar cdigo fuente en una ta- bla (elemento de formulario) en la cual es fcil copiar y pegar el texto. La hoja de estilo asociada es: .spip_cadre, definido as por omisin: .spip_cadre { width: 100%; background-color: #FFFFFF; padding: 5px; } IV.3.5. Las notas a pie de pgina Las notas a pie de pgina, definidas por el atajo : El texto[[Una nota de pie de pgina]] se parmetrizan con el estilo p.spip_note. A menudo intil, ya que las notas pueden ser modificadas directamente en HTML cuando empleas de la baliza #NOTES en tus esqueletos. IV.3.6. Las tablas Las tablas son definidas en SPIP de la siguiente manera : |{{Nombre}}|{{Fecha de nacimiento}}|{{Ciudad}}| | Mara | 5/10/1970 | Buenos Aires | | Juan Carlos | 12/2/1975 | Barcelona | | Marta | 1/31/1957 | Roma | | Manu | 23/12/1948 | Bilbao | que queda como sigue: Nombre Fecha de nacimiento Ciudad Mara 5/10/1970 Buenos Aires Juan Carlos 12/2/1975 Barcelona Marta 1/31/1957 Roma Manu 23/12/1948 Bilbao Las hojas de estilo permiten parametrizar detalladamente como se cuelgan tales tablas : table.spip { } table.spip tr.row_first { background-color: #FCF4D0; } table.spip tr.row_odd { background-color: #C0C0C0; } table.spip tr.row_even {
- Pgina 57 de 114 - background-color: #F0F0F0; } table.spip td { padding: 1px; text-align: left; vertical-align: center; } table.spip permite modificar el comportamiento general de la tabla (particularmente su posicin, a la izquierda, centrada...); table.spip tr.row_first define el comportamiento de la primera lnea de la tabla, en este caso en amarillo (para que la primera lnea se tenga en cuenta es necesario que los elementos que con- tiene se coloquen en negrita); table.spip tr.row_odd para las lneas pares; table.spip re.row_even para las lneas impares; table.spip td permite modificar el comportamiento de las celdas de la tabla. Uno de los intereses estriba en la eleccin de colores diferentes para row_odd y row_even, permitiendo poder hacer una presentacin de colores alternados para las lneas de la tabla (en este caso gris claro y gris oscuro). IV.3.7. Lnea de separacin horizontal Una lnea de separacin horizontal, definida por : ---- puede ser modificada por: hr.spip. IV.3.8. Negrita e itlica La negrita y la itlica son definidas por los atajos : Texto {{en negrita}}, texte {en itlica} Pueden ser modificadas por los estilos: b.spip y i.spip. Estilos poco tiles. IV.3.9. Los prrafos Los prrafos creados por SPIP (dejando lneas vacas entre los prrafos) pueden ser modificados por el estilo: p.spip. A priori, poco til, puesto que se puede definir directamente el comportamiento de los elementos de texto en HTML. IV.3.10. Los formularios En el espacio pblico se utilizan diferentes formularios para el motor de bsqueda interno, la interfaz de redaccin de mensajes de los foros, las inscripciones en el espacio privado. Las hojas de estilo son: .forml, .spip_encadrer, .spip_bouton, .formrecherche. Por omisin se definen as : .forml { width: 100% ; background-color: #FFDDAA;} .spip_encadrer { background-color: #EEEEEE; } .spip_bouton { background-color: #FFCC00;} .formrecherche { width: 100% ; background-color: #FFDDAA;} .forml define las celdas de texto de los formularios; til para definir el tamao de estas celdas y el color de fondo; .spip_encadrer; cuando un formulario tiene diferentes partes, la separacin entre ellas puede definirse con este estilo (por ejemplo, enmarcar cada parte, crear un espacio antes o despus...); .spip_bouton modifica el aspecto del botn de validacin del formulario ; .formrecherche modifica el aspecto de la celda Buscar del motor de bsqueda. IV.3.11. Conclusin Te dars cuenta de que, por omisin, algunos estilos no estn definidos en la hoja. Pueden conside- rarse como muy accesorios (reservados a webmistress/webmasters que quieren obtener efectos grficos muy especficos). Como regla general, los estilos que causan modificaciones grficas espectaculares en un sitio, por otro lado sencillos de parametrizar, son los que se refieren a: Los enlaces del conjunto de la pgina, a y a:hover, El comportamiento de los interttulos, h3.spip, Los formularios.
- Pgina 58 de 114 -
IV.4. <INCLURE>: incluir otros esqueletos [SPIP 1.4] Cuando hay elementos de texto y bucles comunes a varios esqueletos, es lgico querer factorizar dichos elementos, es decir extraerlos de las pginas donde se encuentran, agruparlos en un fichero separado y llamarlos desde los otros esqueletos. De esta manera se agrupa el cdigo comn en un fichero nico, lo que facilita notablemente las modificaciones que conciernen varios esqueletos de una sola vez. Quienes estn acostumbrados a PHP (u otros lenguajes informticos) conocen la funcin include, cu- yo principio es similar al que se presenta aqu para SPIP. Con SPIP, se puede llamar a un esqueleto desde otro esqueleto con la baliza <INCLURE> (tambin se puede utilizar <INCLUDE>, que es idntico). Su sintaxis completa es: <INCLURE(fichero.php3){parametro1}{parametro2}...> El fichero.php3 es le nombre del fichero que se quiere integrar en la pgina. Por ejemplo, ima- ginemos que todas las pginas del sitio muestran la misma informacin abajo de la pgina. Se agrupa entonces el cdigo HTML y SPIP de este pie de pgina en un fichero: pie.html, esqueleto que se llama desde la pgina pie.php3 (siempre siguiendo el principio de de [parejas de ficheros destinados a construir esqueletos SPIP-art93]). Basta integrar en cada uno de los esqueletos que llevan ese pie de pgina el siguiente cdigo en el lugar deseado: <INCLURE(pie.php3)> Ciertas inclusiones pueden depender del contexto. Por ejemplo, imaginemos un esqueleto jerar- quia(.html/php3), que muestre el camino de secciones que llevan desde la raz a un artculo; se llamara a esta pgina por un URL de la forma: jerarquia.php3?id_rubrique=xxx. En los esqueletos donde se quiera mostrar el camino desde la raz a cierta seccin (por ejemplo la seccin actual de un artculo), hay que indicar que el parmetro correspondiente es {id_rubrique}. Si fuera necesario, creamos un bucle en el que se genera contextualmente el nmero apropiado de seccin, y se incorpora el siguiente cdigo dentro de este bucle: <INCLURE(jerarquia.php3){id_rubrique}> Nota: en este caso, el esqueleto jerarquia.html tendr que comenzar con un bucle secciones con el criterio {id_rubrique}... Se puede imaginar que, en ciertos esqueletos, se desee recuperar ya no el camino hasta cierta sec- cin variable (segn el contexto, por ejemplo un parmetro pasado en la URL), sino en funcin de una seccin cuyo nmero (identificador) se sabe de antemano. Para sto se puede fijar el valor del parme- tro as: <INCLURE(jerarquia.php3){id_rubrique=5}> Nota. Es posible indicar varios parmetros en la baliza <INCLURE>; sin embargo, tal caso es poco frecuente. En todo caso, dichas variables se acumulan por un Y lgico al igual que cuando se los adjunta en la definicin de los bucles. Evita aadir parmetros intiles, que harn la cach menos eficaz y tu sitio ms lento. Nota. El fichero incluido es, a su vez, un esqueleto y, por lo tanto, dicho esqueleto tendr su propio valor de $delais (plazo) 33 . Puede revelarse prctico para evitar actualizar elementos complejos y pesados del sitio, que no cambian, y al contrario, actualizar otros elementos que varan regularmente (por ejemplo, la sindicacin). IV.4.1. En un contexto multilinge Si est activado el multilingismo (vase cap. IV.5. Hacer un sitio multilinge) de SPIP, desde SPIP 1.7.1 se puede definir un idioma de entorno para un esqueleto incluido, utilizando el parmetro {lang}. Si no se utiliza ningn parmetro, es decir bajo la forma <INCLURE(pie.php3)>, se llamar al es- queleto incluido con el idioma principal del sitio, <INCLURE(pie.php3){lang=ar}> utilizar el rabe al llamar al esqueleto incluido. Por supuesto, basta con reemplazar ar por el cdigo ISO del idioma deseado: en para el ingls, fr para el fran- cs, vi para el vietnamita, etc. (ver cap. IV.6. Internacionalizar los esqueletos), e <INCLURE(pie.php3){lang}> llama al esqueleto en el idioma actual del contexto de inclusin.
33 Recordemos que la variable $delais define el periodo de actualizacin de una pgina en la cach. Vase la seccin "El fichero .php3 en Principio general.
- Pgina 59 de 114 - Cabe notar que esto hace posible utilizar cdigos de archivos de idiomas en los esqueletos incluidos (para mayores explicaciones sbre los archivos de idiomas, ver cap. IV.6. Internacionalizar los esqueletos). Adicionalmente, los esqueletos incluidos estn sujetos a las mismas tcnicas de seleccin de idioma que los esqueletos de primer nivel. En otras palabras, los esqueletos incluidos (en este caso pie.html) pueden ser especificados de acuerdo al idioma escogido (pie.ar.html, por ejemplo) de la misma manera que cualquier otro esqueleto. Una vez ms, ver cap. IV.6. Internacionalizar los esqueletos para ms detalles.
IV.5. Hacer un sitio multilinge La modificacin ms importante que introducir SPIP 1.7 es su gestin natural de sitios multilin- ges. La totalidad de este artculo slo se aplica a partir de SPIP 1.7. IV.5.1. Prembulo: Qu es un sitio multilinge ? En este artculo no tendra sentido redactar un tutorial completo sobre los sitios multilinges: por un lado, es cierto que existen diversos enfoques sobre lo que se llama multilingismo; por otra parte, la definicin de el mejor mtodo es siempre algo personal. Por eso a continuacin revisamos las diferentes herramientas que proporciona SPIP para gestionar si- tios multilinges; queda en tu mano el usarlas, y su discusin en los espacios previstos para ello (wiki [http://www.spip-contrib.net/spikini/index.php?wiki=MultiLinguisme], listas de discusin, etc.) Pero, antes de seguir leyendo, deja un poco de lado tu proyecto actual, y piensa en las siguientes si- tuaciones: un sitio de poesas, clasificadas por temas (secciones); un sitio de documentacin para, por ejemplo, un software libre como SPIP; un sitio institucional en 25 idiomas ; un sitio corporativo cataln bilinge; el sitio de una asociacin blgara con algunas pginas en ingls para visitantes extranjeros. El sitio de poesas elegir mas bien sus idiomas artculo por artculo; la documentacin de SPIP, por su lado, los ventila por sectores (secciones de primer nivel), y muestra las traducciones disponibles para cada artculo, cuando estn disponibles. El sitio institucional en 25 idiomas, sin duda no podr dis- poner de 25 traducciones al mismo tiempo, pero intentar lo mismo conservar las ramificaciones en pa- ralelo; el sitio corporativo bilinge tendr obligatoriamente una traduccin frente a cada artculo, y una arborescencia de secciones en dos partes, siendo la parte en ingls una copia fiel de la parte en cataln; la asociacin blgara adjudicar el ingls a un sector determinado de su sitio, quedando el resto de los sectores en blgaro (por omisin). IV.5.2. Principio Para poder permitir estas diferentes situaciones, y varias ms, el modelo desarrollado por SPIP con- siste en determinar un idioma para cada artculo, para cada seccin y para cada breve. En el espacio p- blico, al igual que en el espacio privado, este idioma determina el modo de correccin tipogrfico que se aplica a los textos; en el espacio pblico tambin determina el idioma de los elementos insertados por SPIP para estos objetos: principalmente las fechas y los formularios. Para crear un sitio multilinge con SPIP, primero hay que configurar el sitio en consecuencia: en la Administracin del sitio, en la seccin Gestin de idiomas, por supuesto. Ah podrs activar la ges- tin multilinge, y elegir los idiomas que utilizas para tu sitio. IV.5.3. Configurar el espacio privado Para manejar ms fcilmente el sitio, en la configuracin se puede elegir con qu nivel de precisin se efecta la gestin de idiomas, lo que permite ocultar la interfaz donde no sea necesaria y as limitar los riesgos de errores 34 . SPIP propone tres niveles de interfaz diferentes para escoger los idiomas que afectan a los artculos (y breves, etc.); por orden de complejidad: Por sector (seccin de primer nivel): a cada seccin de la raz del sitio corresponde un idioma modi- ficable por los administradores, que afecta a todas las subsecciones y todos los artculos y breves que contienen; este reglaje debera satisfacer las necesidades de la mayora de sitios multilinges, mante- niendo una estructura y una interfaz sencillas. Por secciones: con este reglaje se puede cambiar, de manera ms precisa, el idioma para cada una de las secciones del sitio, no slo las de primer nivel.
34 Cabe mencionar que en la configuracin original de la distribucin, SPIP queda monolinge, para no perturbar la i n- terfaz ms de lo que fuera necesario.
- Pgina 60 de 114 - Por artculos: el idioma puede ser modificado a nivel de cada artculo: esta eleccin es compatible con las precedentes (se puede por ejemplo elegir el idioma por seccin, pero aplicar excepciones por aqu y por all a ciertos artculos) y permitir toda la precisin imaginable; pero ten cuidado para que la estructura de tu sitio no termine siendo incomprensible... IV.5.4. Bloques multilinges [SPIP 1.7.2] Ciertos objetos, como los autores o las palabras clave, pueden escribirse de distintas formas segn pertenezcan a un artculo en un idioma o en otro. Sin embargo, sera absurdo de concebir la traduccin de una palabra clave o traduccin de un autor, porque es el propio autor quien firma ambos artculos, o la propia palabra clave (es el mismo concepto) el que se adjudica. Por eso, estos objetos no tienen idioma en el sentido de SPIP, pero igualmente es posible, con ayuda de los bloques multi, hacer que se muestren en el idioma del contexto en el cual se les invoca (dicho ms sencillamen- te: hacer que la palabra clave Irak se muestre como Iraq cuando afecte un artculo en ingls). El bloque multi es un nuevo atajo de SPIP, cuya estructura es relativamente intuitiva: <multi>cadena 1 [xx] cadena 2 [yy] cadena 3 ...</multi> Retomando el ejemplo de la palabra clave, su ttulo se escribira de esta forma : <multi>[fr]Irak [en]Iraq</multi> Si se llama a un bloque multi para ser publicado en un idioma que no est previsto, Siempre se muestra la primera parte del bloque (cadena 1 en el primer ejemplo, Irak en el segundo). Esto es para no tener nunca un campo vaco 35 . NB: los bloques multi tambin se pueden usar dentro de los esqueletos, segn la misma estruc- tura, cf. cap. IV.6. Internacionalizar los esqueletos. IV.5.5. Bucles y balizas: cmo hacer? Una vez el espacio privado arregladito con sal y pimienta, pasemos al sitio pblico. Y s, aunque cada artculo disponga de su propio idioma juiciosamente elegido (segn el mecanismo anteriormente expli- cado), los esqueletos deben poder tenerlo en cuenta al visualizar el sitio. 1. Para empezar, una buena noticia: lo esencial del multilingismo de los esqueletos es totalmen- te natural; no es necesario hacer distintos esqueletos para mostrar artculos en distintos idiomas. El mismo esqueleto adapta automticamente su presentacin a la lengua actual Esto quiere decir que todos los elementos colgados alrededor y dentro de un artculo en un idioma dado, sern visualizados en dicho idioma. As es, tanto para la fecha de publicacin del artculo, como para el formulario de respuesta al foro del artculo. De manera ms general: cualquier baliza SPIP inclui- da en un bucle ARTICLES ser visualizada en el idioma del artculo. Por ejemplo, si la portada de un sitio contiene un sumario de los 10 ltimos artculos publicados y de su fecha de publicacin, la fecha de los artculos en vietnamita estar en vietnamita, la de los articulos en creol de la Runion estar en creol de la Runion, etc Nota: este funcionamiento supone que el idioma del artculo fue traducido en SPIP. As, si un artculo est en volapuk, pero que tu versin de SPIP an no est traducida al volapuk (por supuesto te invitamos a corregir esta carencia participando en el esfuerzo de traduccin [http://www.spip.net/rubrique4.html], la fecha de los artculos ser visualizada, por cierto en letras, pero en el idioma principal del sitio. 2. El sentido de la escritura Si tu sitio contiene idiomas que se escriben de izquierda a derecha (la mayora de los idiomas) pero tambin lenguas que se escriben de derecha a izquierda (en particular el rabe, el hebreo o el farsi), pe- queos complementos al cdigo HTML sern necesarios para que la visualizacin se haga sin inciden- tes 36 . A tal efecto, SPIP ofrece una baliza especfica: #LANG_DIR, que define el sentido del idioma en cur- so. Esta baliza se puede usar como valor del atributo dir en la mayora de las etiquetas HTML [lo que nos da ltr para los idiomas que se escriben de izquierda a derecha y rtl para los otros 37 ). As, un bucle de visualizacin del sumario se convierte en : <BOUCLE_sumario(ARTICLES){par date}{inverse}{0,10}> <li dir="#LANG_DIR">[(#DATE|affdate)]: <a href="#URL_ARTICLE">#TITRE</a></li>
35 Si, por el contrario se quiere ver un campo vaco, es necesario crear explcitamente una primera par te vaca con un nombre de cualquier idioma. 36 Tericamente el HTML debera arreglar todos esos detalles automticamente, pero el resultado no siempre es como esperado, sobre todo al cambiar de lnea o si se mezclan idiomas que utilizan sentidos de escritur a diferentes. 37 Desgraciadamente, las instancias de normalizacin parecen ignorar por el momento el bustrofedn, lo que impide su utilizacin en HTML.
- Pgina 61 de 114 - </BOUCLE_sumario> Si la paginacin reposa en elementos alineados a la derecha o a la izquierda, sin duda se los deber invertir para los idiomas escritos de la derecha a la izquierda: la primer idea es de remplazar todos 38 los elementos de esqueleto marcados left o right por las balizas #LANG_LEFT y #LANG_RIGHT. Respecto a la definicin de la pgina en si, parece razonable empezar por dar el idioma del elemento solicitado y la direccin general de la pgina: <html lang="#LANG"> <body dir="#LANG_DIR"> ... </body> </html> 3. Los enlaces de traduccin SPIP propone un sistema de traduccin entre artculos: se puede especificar cuales son las diferentes traducciones de un artculo (nota: dichas traducciones son, a su vez, artculos en s). El criterio {traduc- tion} permite, en un bucle ARTICLES, recuperar todas las versiones de un mismo artculo. Por ejemplo, para mostrar todas las traducciones del articulo en curso: <BOUCLE_traducciones(ARTICLES){traduction}{exclus}> [<a href="#URL_ARTICLE" dir="#LANG_DIR">(#LANG|traduire_nom_langue)</a>] </BOUCLE_traducciones> Notemos el uso del criterio {exclus}, que permite no mostrar la versin en curso de visualizacin, y el filtro {traduire_nom_langue} 39 que devuelve el nombre completo del idioma a partir de su cdigo informtico (esto permite escribir en pantalla franais en vez de fr, English en vez de en...). Un criterio complementario {origine_traduction} 40 (para los puristas) permite seleccionar nicamen- te la versin original del artculo actual. Una pgina del wiki de spip-contrib reune ejemplos de bucles que utilizan estos criterios: http://www.spip-contrib.net/spikini... 4. Elementos suplementarios [SPIP 1.7.2] introdujo otros elementos que permiten crear sitios multilinges: el criterio {lang_select} sirve para forzar la seleccin del idioma para el bucle (AUTEURS), que normalmente no lo hace (a la inversa, el criterio {lang_select=non} permite decirles a los bucles (ARTICLES), (RUBRIQUES) o (BREVES) que no seleccionen el idioma). la variable de personalizacin $forcer_lang indica a SPIP que debe comprobar si el visitante dispo- ne de una cookie de idioma, y en caso afirmativo reenviarle hacia la pgina correspondiente. Esto es lo que hace la pgina de conexin al espacio privado que viene como estndar con SPIP. las balizas #MENU_LANG (y #MENU_LANG_ECRIRE) presentan un men de idioma que permite al visitante elegir esta pgina en.... La primera baliza muestra la lista de los idiomas del sitio; la segunda, la lista de los idiomas del espacio privado (se usa en la pgina de conexin al espacio privado). por fin, los criterios opcionales (cf. SPIP 1.7, 1.7.2) permiten utilizar un mismo bucle (de hecho, un mismo esqueleto) para mostrar todos los artculos del sitio en todas las lenguas, o bien slo los artculos en el idioma pasado en la URL. Esto puede ser til en los backend, por ejemplo, o en los bucles de bsqueda : <BOUCLE_recents(ARTICLES){lang?}{par date}{inverse}{0,10}> <BOUCLE_recherche(ARTICLES){lang?}{recherche}{parpoints}{inverse}{0,10}> IV.5.6. Esqueletos internacionales para un sitio masivamente multilinge Lo que precede nos permite hacer multilinge la parte especficamente SPIP de nuestro esqueleto: todo lo que sale de los bucles SPIP aparece en el sentido correcto, con la buena tipografa, y los elemen- tos producidos por SPIP (formularios, fechas...) estn en el idioma solicitado. Para un sitio que presenta un nmero modesto de idiomas (bilinge, por ejemplo), o para el cual existe un idioma principal y algunos idiomas anexos, podramos parar aqu. Los textos escritos a fue- go en los esqueletos, es decir las menciones escritas directamente en el HTML como Mapa del sitio, espacio de redaccin, Responder a este mensaje... pueden, en ciertos casos, quedar en un solo idioma, y en otros -como el de un sitio bilinge- ser resueltos utilizando esqueletos diferentes para cada idioma. Sin embargo, si quieres realizar y administrar eficazmente un sitio con numerosos idiomas plena- mente representados, sera ilusorio mantener esqueletos separados, o imponer una navegacin en un idioma nico (incluso el esperanto o el ingls...). Para realizar un juego de esqueletos que funcione en
38 Todos o casi todos, t sabrs si tu paginacin tiene peculiaridades que prefieres conservar. 39 traducir_nombre_idioma 40 origen_traduccin
- Pgina 62 de 114 - todos los idiomas, hay que internacionalizar los esqueletos para modificar los textos, independientemen- te del cdigo HTML que los contiene (el cual, por su lado, no se mueve de un idioma a otro). Esta tarea, para la cual es necesario poner las manos en la masa, es el objeto de un artculo de documentacin separado (vase cap. IV.6. Internacionalizar los esqueletos). IV.5.7. Detalles anexos Los atajos tipogrficos <code> y <cadre> siempre producen un texto escrito de izquierda a dere- cha, aunque el idioma del artculo se escriba normalmente de derecha a izquierda. Por cierto, estos dos atajos estn principalmente destinados a mostrar cdigo o datos informticos, que casi siempre se escri- ben de izquierda a derecha (y usando el alfabeto latino). Siempre respecto al sentido de la escritura, notemos que los atributos left y right del HTML tambin estn presentes a menudo en las hojas de estilo. Esto significa que tendrs que incluir la parte corres- pondiente de la hoja de estilo en tus esqueletos (para utilizar las balizas #LANG_LEFT y #LANG_RIGHT) en vez de ponerlas en un fichero separado. He aqu un resumen de las balizas SPIP ligadas al sentido de la escritura: Idioma #LANG_LEFT #LANG_RIGHT #LANG_DIR idiomas escritos de izquierda a derecha left right ltr rabe, farsi, hebreo... right left rtl
IV.6. Internacionalizar los esqueletos Todas las funcionalidades abordadas en este artculo estn disponibles a partir de SPIP 1.7. IV.6.1. Por qu crear esqueletos multilinges? Al poner documentos en lnea, SPIP adapta ciertas informaciones automticas al idioma apropiado. En particular las fechas aparecen en el idioma del sitio, de un artculo o de una seccin. Los formularios tambin aparecen en el idioma correspondiente (por ejemplo la interfaz para publicar un mensaje en los foros). Todo eso, ya lo traduce SPIP. Sin embargo no alcanza: los/las webmaster/webmistress suelen agregar a los esqueletos ciertas in- formaciones, en particular las que describen la navegacin en el sitio. Puede ser necesario, por ejemplo, disponer ciertos textos como Mapa del sitio, Responder a este artculo, Artculos de la misma auto- ra o autor, En la misma seccin... Para un sitio en un solo idioma, es fcil incorporar estos elemen- tos: se los inserta a fuego en el cdigo HTML de los esqueletos. El problema surge cuando el sitio es multilinge: bajo un artculo en espaol, uno querr agregar Responder a este artculo, pero bajo un artculo en francs se espera leer Rpondre cet article. [SPIP 1.7.2] propone tres mtodos para manejar estos elementos de texto segn el idioma: (1) un mtodo que consiste en conservar los elementos de textos de los esqueletos en ficheros de idioma (un fichero por cada idioma utilizado en el sitio), separados de los esqueletos; siendo un mismo esqueleto (por ejemplo article.html) el cual llama, usando cdigos definidos por el/la webmaster/webmistress, estos elementos de texto segn el idioma utilizado. De esta manera, un esqueleto nico article.html mostrar automaticamente el texto Rpondre cet article o Com- ment on this document en funcin del idioma del artculo (francs o ingls). Se aconseja vivaman- te este mtodo, pues ofrece mas flexibilidad, facilita la actualizacin del sitio (se trabaja con un solo esqueleto que maneja automticamente varios idiomas) y hay herramientas que a mediano plazo sern integradas a SPIP, que facilitan el trabajo colectivo de traduccin de la interfaz del sitio (va- rios administradores, que dominan idiomas diferentes, podrn traducir la interfaz desde el espacio privado, sin tener que intervenir en los ficheros de esqueletos); (2) un mtodo ms rpidamente accesible y tcnicamente simple, que se basa en la creacin de fi- cheros de esqueletos diferentes para cada idioma. En ste mtodo, se fabrica un fichero article.html para manejar los artculos en el idioma principal del sitio, y un fichero article.en.html para los artcu- los en ingls (nota: en realidad, article.html se aplica a todas las lenguas que no tienen un esque- leto explicitamente definido). Este metodo se adapta a la creacin rpida y simple de sitios que comprenden pocos idiomas diferentes y con una estructura no muy compleja, pero se la desaconse- ja si el sitio utiliza varios idiomas y/o si se utilizan esqueletos diferentes segn la seccin. (3) el mtodo de los bloques multilinges, introducido por [SPIP 1.7.2], funciona igual de bien con los contenidos y con los esqueletos. Basta con introducir en el esqueleto la siguiente construc- cin: <multi> [fr] Rpondre cet article [en] Comment on this article </multi> y se mostrar la frase en el idioma deseado. Si bien este sistema es muy flexible, an tiene limita- ciones cuando el nmero de idiomas es grande, y porque es necesario que distintos traductores ac-
- Pgina 63 de 114 - ten sobre el sitio (se necesita que puedan modificar el esqueleto, lo que se puede evitar con el m- todo de los ficheros de idioma). IV.6.2. Mtodo de ficheros de idioma El principo de los ficheros de idioma consiste en insertar en un esqueleto nico un cdigo, que co- rresponder en cada idioma a un elemento de texto (una cadena); de un idioma a otro el cdigo no vara, pero al texto correspondiente se lo traduce. Por ejemplo, se puede decidir que el cdigo telechargement corresponde: en francs, a la cadena tlcharger ce fichier, en ingls, a la cadena download this file, en espaol, a la cadena 41 descargar este archivo, etc. En el fichero de esqueleto de los artculos (un slo fichero para manejar todos los idiomas), arti- cle.html, alcanza con insertar el cdigo (anota la sntaxis): <:telechargement:> Al visualizar un artculo, este cdigo ser remplazado por su traduccin en el idioma del artculo. Por ejemplo; en el esqueleto article.html, insertamos en el bucle que cuelga los documentos asocia- dos al artculo, el cdigo siguiente: <a href="#URL_DOCUMENT"><:telechargement:></a> Si el artculo en cuestin est en espaol, producir: <a href="/IMG/jpg/midocumento.pdf">descargar este archivo</a> si est en ingls: <a href="/IMG/jpg/midocumento.pdf">download this file</a> y as succesivamente. Un esqueleto nico, que contiene cierto cdigo, cuelga un texto traducido en cualquiera de los idiomas utilizados en el sitio. Utilizar textos que ya estn traducidos Para facilitar el trabajo de los/las webmasters/webmistress, SPIP brinda un conjunto de cadenas ya traducidas (por los traductores de SPIP). Utilizando estas cadenas, que corresponden a elementos de textos frecuentemente utilizados en los sitios Web, el/la webmaster/webmistress puede rpidamente realizar una interfaz que funcionar en diferentes idiomas, incluso aquellas que l o ella misma no habla. Puedes listar las cadenas disponibles desde el espacio privado: entra en la seccin Gestin de idio- mas de Administracin del sitio, y luego pulsa sobre la pestaa Ficheros de idioma. Copia los cdi- gos elegidos para realizar los esqueletos.
41 NdT: en Latinoamrica se suele hablar de archivo y en Espaa de fichero para lo que los anglfonos llaman f i- le y los francfonos fichier. En la documentacin de SPIP hablamos de fichero, porque as empezamos, pero pon- gamos de vez en cuando un archivo.
- Pgina 64 de 114 - Les fichiers de langue dans l'espace priv Ejemplo: un/a webmaster/webmistress quiere realizar la interfaz para un sitio en francs, en espaol y en rabe, pero l mismo no habla ni rabe ni francs. Insertando en los esqueletos los cdigos que vienen con SPIP no debe preocuparse en obtener las traducciones al francs o al rabe, pues stas ya fueron hechas inicialmente por los traductiores de SPIP; as, al di- sear su interfaz en espaol con los cdigos que vienen con SPIP sabe de antemano que es- tas pginas aparecern adecuadamente en francs y en rabe cuando uno de los redactores del sitio escriban un arculo en estos idiomas. Si, ulteriormente, se agregan artculos en polaco, aparecern inmediatamente con los elementos de texto traducidos al polaco, sin que el diseador deba intervenir de nuevo. Otra ventaja de este metodo: facilita la cracin de esqueletos para compartir inmediatamente multilinges. Esqueletos realizados con este metodo sern inmediatamente utilizables en cualquiera de los idiomas en los que se traduzca SPIP. De un punto de vista tcnico, los elementos de texto que vienen en la distribucin estndar de SPIP se almacenan en los archivos de idioma public: /ecrire/lang/public_fr.php3 contiene las cadenas en francs, /ecrire/lang/public_es.php3 en espaol, etc. Crear uno mismo sus prpios cdigos Es posible crear uno mismo sus propios cdigos, que correspondan a cadenas que se desea agregar. Alcanza para esto con crear ficheros de idioma personales, a partir del modelo de los ficheros pu- blic.... Para crear tus propios ficheros, instala, en la carpeta /ecrire/lang<code>: -- <code>local_es.php3 para definir las cadenas en espaol, local_en.php3 en ingls, ... Por ejemplo, podrs crear las cadenas siguientes: telechargement para visualizar en espaol Bajar la ltima versin, en francs Tlcharger la dernire version, ... quehaydenuevo para visualizar Modificaciones recientes. Con ste mtodo, insertando en los esqueletos los cdigos <:telechargement:> y <:quehaydenuevo:>, luego se visualizarn con las traducciones correspondientes, tal como se han de- finido en los ficheros local_...php3. Cabe notar que los cdigos son arbitrarios: los eliges t mismo. Por supuesto, se recomienda elegir cdigos que sean fciles de recordar (textos explcitos en vez de nmeros, por ejem- plo). Como suele suceder con los cdigos informticos, es conveniente limitar los caracteres utilizados al alfabeto latino, y sin acentos... Los ficheros de idioma contienen las diferentes traducciones de los cdigos que utilizars; son fiche- ros PHP que contienen cada uno un cuadro (table) que asocia los cdigos a las cadenas de texto corres- pondiente en cada idioma. Contendrn, por ejemplo: Versin espaola: <?php $GLOBALS[$GLOBALS['idx_lang']] = array( 'telechargement' => 'Descargar la uacute;ltima versión', 'quehaydenuevo' => 'Modificaciones recientes' ); ?> Versin francesa : <?php $GLOBALS[$GLOBALS['idx_lang']] = array( 'telechargement' => 'Télécharger la dernière version', 'quehaydenuevo' => 'Modifications récentes' ); ?> Versin catalana : <?php $GLOBALS[$GLOBALS['idx_lang']] = array( 'telechargement' => 'Descarregar la darrera versió',
- Pgina 65 de 114 - 'quehaydenuevo' => 'Modificacions recents' ); ?> La construccin es la siguiente: al principio del fichero: <?php $GLOBALS[$GLOBALS['idx_lang']] = array( al final del fichero: ); ?> la parte que hay que enriquecer uno mismo consiste en varias lneas de definiciones, que siguen el modelo: 'codigo' => 'La cadena de texto para visualizar', OJO: Cada lnea de definicin se termina por un punto y coma, excepto la ltima. OJO-2: Se debe transcribir el texto de la cadena por traducir en cdigos HTML (los caracteres acentuados, por ejemplo, se convierten en su equivalente HTML, de tipo é). Las apstrofes al interior de la cadena se deben escapar, es decir que se las debe preceder de una barra invertida (antislash). Por ejemplo en francs, la cadena sur linternet debe ser escrita: sur l\'internet. Nota: a medio plazo, esta previsto incluir en SPIP una herramienta que permita crear y mane- jar sus propios ficheros de idioma, sin tener que modificar a mano ficheros PHP. Tal herramienta facilitar no slo la utilizacin de caracteres especiales (letras acentuadas, ca- racteres de alfabetos no occidentales, escapes de apstrofes...), sino tambin la colaboracin de varias personas en el proceso de traduccin de la interface del sitio pblico. Por el momento, la herramienta que permite manejar la traduccin de dichas cadenas no se distribu- ye con SPIP, y su utilizacin muy generalista (la utilizamos para traducir toda la interfaz de SPIP [http://www.spip.net/rubrique4.html], y no slo los archivos de idioma de tipo local...php3) la hace un poco compleja para esta tarea. Este programa, trad_lang, que nos sirve para traducir el software SPIP, la ayuda en lnea, la interfaz del sitio spip.net, etc., tambin est disponible bajo licencia GNU/GPL, pero no est integrado en estndar a SPIP. Puedes bajarlo, para usarlo en tu sitio o para otros pryectos. Si lo mejoras o si tienes ideas para transformarlo, ven a charlar del asunto a la lista de traduc- tores de SPIP spip-trad. IV.6.3. Esqueletos separados para cada idioma El segundo mtodo, ms accesible a los/las webmasters/webmistress principiantes, consiste en crear esqueletos diferentes para cada idioma. Ms o menos de la misma manera que se crean esqueletos es- pecficos para diferentes secciones 42 para obtener interfaces grficas diferentes. Si queremos realizar un sitio en espaol (lengua principal), en francs y en ingls. Construmos tres ficheros de esqueleto diferentes: article.html para el espaol (en realidad, para todos los idiomas que no tienen un fichero de lengua especfico), article.en.html para el ingls, article.fr.html para el francs. (Nota: si se publica un artculo en alemn, y no existe ningn esqueleto article.de.html en el sitio, SPIP utilizar el esqueleto article.html.) Importante: Para que los esqueletos por idioma, definidos agregando un cdigo .lang al final del nombre, sean tomados en cuenta, debe obligatoriamente existir en el sitio una versin por omisin del esqueleto (es decir con el mismo nombre, pero sin la extensin de len- gua). En nuestro ejemplo, si article.html no existiera (y en vez de eso se prefiri crear un arti- cle.es.html), no se tomaran en cuenta los ficheros en ingls y en francs. Se pueden combinar estas extensiones de lengua con la nomenclatura por secciones en cuyo caso SPIP tomar en cuenta el siguiente rden, suponiendo que la seccin nmero 8 est dentro de la seccin 2: article=8.es.html (el esqueleto para los artculos en espaol de la seccin 8, pero no sus sub- secciones), article=8.html (el esqueleto para la seccin pero no sus sub-secciones), article-2.es.html (el esqueleto para los artculos en espaol de la seccin 2 y sus sub-secciones), article-2.html (el esqueleto para los artculos de la seccin 2 y sus sub-secciones),
42 Ver el prrafo Una interfaz diferente en el mismo sitio, en este articulo del manual de refere ncia.
- Pgina 66 de 114 - article.es.html (el esqueleto para los artculos en espaol), article.html (el esqueleto para los artculos), article-dist.html (el esqueleto para los artculos que se distribuye con SPIP). Nota: salvo algunas excepciones, hay que utilizar aqu lso cdigos de lengua en dos letras nor- malizados por la ISO, como es, para el espaol. Se peude consultar la lista enla Biblioteca del Congreso de los Estados Unidos [http://www.loc.gov/standards/iso639- 2/langcodes.html] (oh s!). Para asegurar la mxima compatibilidad, hay que utilizar los cdigos ISO de dos letras (iso 639-1), si existen, y para una designacin ms especializa- da de un idioma dentro de su familia lingstica los cdigos ISO de tres letras (iso 639-2 T). Por ejemplo, el alemn se designar como de. Pero la ISO slo tiene en cuenta 182 idiomas de entre 5.000 a 7.000 que se hablan en el mundo; para los idiomas an no catalo- gados puede servir de guia el catlogo propuesto por el sitio ethnologue.com; para saber ms, nete a la lista spip-trad. Simplificarse la vida. Uno de los mtodos muy simples que autoriza SPIP para manejar un si- tio multilinge consiste en asociar directamente los idiomas a las secciones (y no artculo por artculo) De esta manera, en el caso en que los artculos de un mismo idioma se agrupan en una misma seccin (o incluso en un mismo sector), uno puede contentarse con crear los es- queletos especficos por seccin, sin utilizar los nombres especficos por idiomas, salvo even- tualmente para la portada (esqueleto sommaire.html). De esta manera, si todos los artculos en espaol estn agrupados en la sessin 8 (y sus sub- secciones), uno puede contentarse con llamar rubrique-8.html el fichero adaptado al espa- ol, y no rubrique.es.html. Se adivinan los problemas que se pueden plantear con este mtodo: el fichero article-2.html debe existir si se quiere que article-2.es.html pueda seleccionarse; no se puede decidir, a la inversa, que se use article.es.html en vez de article-2.html si article- 2.es.html no existe: la seleccin por secciones siempre tiene prioridad respecto a la seleccin por idiomas; una correccin de paginacin en un esqueleto implica de hacer la misma correccin en las otras ver- siones 43 ; es necesario poder insertar uno mismo elementos de texto en los ficheros de esqueletos, an cuan- do no entendemos el idioma (imagnate haciendo esqueletos en rabe, cuando uno habla un poco el espaol del sur (ch, vos..), y entiende apenas el cataln...). Por eso, este mtodo est destinado a trabajar rpidamente sobre sitios poco complejos (con pocos o sin esqueletos especficos a ciertas secciones) y/o que llevan pocos idiomas diferentes. En cuanto tu proyecto multilinge se haga algo ambicioso, se aconseja vivamente trabaja con el mtodo de ficheros de lengua. IV.6.4. Los bloques multilinges Los bloques multi, definidos en el cap. IV.5. Hacer un sitio multilinge funcionan igual de bien en el texto de los autores o las palabras clave como en los esqueletos. Cuidado, estos bloques slo manejan texto, no los bucles de SPIP! Para manejar rpidamente un sitio multilnge es, sin duda, el mejor mtodo al principio, accesible y eficaz a la vez; despus, una vez estabilizado el sitio, si se necesita optimizar los esqueletos (por ejem- plo, para abrirlos a ms idiomas; o para distribuirlos en forma de contribucin [http://www.spip- contrib.net/]; o incluso para profesionalizarlos), habr que transformar los bloques multi en ficheros de idioma.
IV.7. Utilizar URLs personalizadas Por omisin, las pginas generadas por SPIP utilizan direcciones relativas parecidas a: arti- cle.php3?id_article=123, dando URLs del tipo http://www.minirezo.net/article.php3?id_article=123. Este tipo de sintaxis producidas en los sitios "dinmicos" no son muy atractivas ni evocadoras. Existe la posibilidad de tener direcciones ms a gusto -por ejemplo articulo123.html- y SPIP en parte puede ayudarte en esta tarea. Esta funcionalidad implica la distincin entre dos tipos de URLs: La URL aparente de una pgina, es decir tal como est escrita y/o publicada en la barra de direccin de un navegador. Por ejemplo http://www.uzine.net/article765.html. Son estas URLs las que se in- tenta hacer ms "atractivas" o ms "significativas";
43 Este problema se puede disminuir (pero no eliminar) utilizando la inclusin de esqueletos (vase cap. IV.4. <IN- CLURE> : incluir otros esqueletos).
- Pgina 67 de 114 - La URL real de la pgina, es decir la URL que es "vista" por SPIP cuando la pgina es calculada en el servidor. Por ejemplo http://www.uzine.net/article.php3?id_article=765; en general esta URL puede escribirse tambin directamente en el navegador (puedes verificarlo). IV.7.1. Elegir el tipo de URLs aparentes El fichero inc-urls.php3 en la raiz de SPIP contiene la declaracin de una variable PHP que contiene el tipo de URLs a utilizar. Por defecto: $type_urls = "standard"; Esta variable determina el nombre del fichero PHP que es llamado para gestionar las URLs. Con la declaracin por defecto planteada a continuacin es inc-urls-standard.php3. Puedes ver que existe tambin un fichero inc-urls-html.php3. Permite tratar las direcciones del tipo de las hemos tomado por ejemplo(article123.html). Puedes pues decidir utilizar este fichero en vez del fichero "estandard" reemplazando la lnea citada por la siguiente: $type_urls = "html"; Si quieres utilizar tus propias direcciones (para ello debes saber programar en PHP), es especialmen- te aconsejable partir de uno de los ficheros existentes y recopiarla bajo el nombre que habrs elegido: inc-urls-XXX.php3. Veamos ahora los diferentes tipos de modificaciones a aportar. IV.7.2. Programar la traduccin de las direcciones aparentes en direccio- nes reales Para que la direccin article123.html haga un llamamiento en realidad al fichero PHP article.php3 con, como parmetro id_article=123, va a ser necesario configurar el servidor Web que alberga tu siti- to, sea en un fichero .htaccess (esto no funciona siempre), sea en el fichero de configuracin central del servidor si tienes acceso a l. Se utiliza para ello, bajo el servidor Apache (el ms utilizado) lo que se denomina Rewrite Rules: reglas de reescritura de direcciones Web. Saber escribir estas reglas no es sencillo para quien no sepa programar y no podemos dar soluciones infalibres puesto que depende de tu configuracin: esta parte se encuentra completamente en tus ma- nos (o en manos de quien albergue tu Web). Sin embargo y a modo de ejemplo, he aqu las reglas utilizadas en el sitio de uZine: RewriteEngine on # urls spip RewriteRule ^/rubrique([0-9]+)\.html$ /rubrique.php3?id_rubrique=$1 [QSA,L] RewriteRule ^/article([0-9]+)\.html$ /article.php3?id_article=$1 [QSA,L] RewriteRule ^/breve([0-9]+)\.html$ /breve.php3?id_breve=$1 [QSA,L] RewriteRule ^/secteur([0-9]+)\.html$ /secteur.php3?id_rubrique=$1 [QSA,L] (Nota si escribes tus propias reglas: utiliza siempre la opcin [QSA] ya que la direccin puede pre- sentar parmetros suplementarios -como los se plantean al pinchar sobre el botn actualizar, que se presenta si colocas la cookie de administracin; la opcin [L] significa, por su parte, que la reescritura se para all si la regla es aplicada: Last) Se aconseja testar la validez de estas direcciones (probndolas en tu navegador) despus de grabar la configuracin correspondiente, puesto que de lo contrario, los siguientes pasos no servirn de nada. IV.7.3. Generar las URLs aparentes en las pginas SPIP SPIP incorpora una funcionalidad permitiendo generar automticamente las URLs del tipo que habrs elegido, en el interior mismo de las pginas calculadas por SPIP. As, los enlaces hacia los artculos seran por ejemplo generados bajo la forma article123.html. Los ficheros inc-urls-XXX.php3 estan all para ello. Si has decidido crear el tuyo propio, va a ser necesario que tu misma/o programes la generacin de las URLs. Sino est ya hecho. Descubrirs que cierto nmero de funciones PHP estan definidas, en el fichero, bajo el nombre generer_url_type d'objet (por ejemplo generer_url_article). El rol destas funciones debera serte evidente por poco que entiendas un mnimo el PHP. Es cuestin tuya modificarlas a tu gusto. A ttulo de ejemplo, puedes entrar en el fichero inc-urls de Le Monde diplo. En todo caso no olvides modificar el tipo elegido en el interior de inc-urls.php3. Finalmente, en tus esqueletos, verifica que para calcular los enlaces en el interior de los bucles, utili- zas siempre los recursos #URL_ARTICLE, #URL_RUBRIQUE, #URL_BREVE, etc. Son en efecto ellos quienes desencadenan las funciones evocadas aqu permitiendo la generacin des "buenas" URLs.
IV.8. El motor de bsqueda SPIP integra un motor de bsqueda desactivado por defecto. Cuando se activa este motor, desde la pgina de configuracin, por alguna persona con rango de administradora, permite efectuar bsquedas
- Pgina 68 de 114 - sobre diferentes tipos de informacin presente en la base de datos: artculos, secciones, breves, pala- bras clave y autores/as. Desde SPIP 1.7.1 se indexan, igualmente, los hilos de discusin de los foros (threads) y las firmas de las peticiones. IV.8.1. Principio Existen principalmente dos maneras para hacer un motor de bsqueda. La primera es buscar simple y directamente en la informacin tal cual est almacenada (ficheros HTML, base de datos,... segn el ti- po de sitio) Dicho mtodo es muy lento, ya que el tipo de almacenamiento no est especficamente pre- visto para ello. El segundo mtodo que fue elegido para SPIP (y que es tambin el de todos los motores de bsque- da profesionales), consiste en establecer un modo de almacenamiento especfico a las necesidades de la bsqueda. Por ejemplo, se puede guardar directamente la puntuacin de cada palabra de un artculo con el fin de que se recupere fcilmente, y as obtener la puntuacin total de una bsqueda mediante una simple suma. La ventaja es que la bsqueda es muy rpida: casi tan rpida que como cualquier otro cl- culo de pgina. El inconveniente es que se hace necesaria una fase de construccin y de almacenamien- to de dicha puntuacin: esto se denomina indexacin. La indexacin tiene un coste en trminos de re- cursos (tiempo de clculo y espacio en el disco), e introduce igualmente una ligera diferencia temporal entre el aadido o la modificacin de un contenido y la repercusin de este aadido o de esta modifica- cin en los resultados de bsqueda. Por otro lado, en el caso de SPIP, estamos obligados a utilizar PHP y MySQL al igual que en el resto del programa, lo que no permite realizar un motor muy optimizado en cuanto a rapidez, ni tampoco en cuanto a precisin u otros aadidos diversos (indexacin de documentos externos al sitio, creacin de campos semnticos que permitan ofrecer bsquedas ms precisas, etc.). La ventaja del motor interno, sin embargo, es que permite gestionar la publicacin de los resultados a travs de los mismos mtodos (esqueletos) que el resto de pginas de SPIP, y dentro de un mismo en- torno visual. IV.8.2. La indexacin La indexacin se realiza durante las visitas al sitio pblico.Para evitar que la acumulacin de una in- dexacin y un clculo de pgina lleve a un timeout (tiempo excedido) en servidores particularmente len- tos, SPIP espera a que una pgina se muestre utilizando la copia de la cach 44 . La indexacin trata uno a uno los diferentes datos textuales de un contenido dado: por ejemplo, para un artculo la entradilla, el descriptivo, el ttulo, el texto... Para cada dato textual la puntuacin de cada palabra se calcula simplemente contando el nmero de apariciones. A este efecto, se ignoran las pala- bras de tres caracteres o menos (la mayora no son significativas, y hacen ms pesada la base de da- tos); por otro lado, los caracteres acentuados son transliterados (convertidos en sus equivalentes no acentuados) para evitar los problemas de juegos de caracteres y tambin para permitir efectuar bsque- das en versin no acentuada (en caso de teclado no adaptado...). Inmediatamente despus, las puntuaciones de cada palabra se acumulan de manera ponderada en- tre los diferentes datos textuales del contenido indexado. La ponderacin permite, por ejemplo, dar ms peso a las palabras contenidas en el ttulo de un artculo que en el cuerpo del texto o el post-scriptum... Las funciones de indexacin pueden ser estudiadas dentro del fichero ecrire/inc_index.php3 . Para ver mejor la dinmica de indexacin del sitio, puedes abrir el fichero ecrire/data/spip.log, o tambin ver la pginaecrire/admin_index.php3 (nota: esta pgina, an experimental, no est incluida en todas las versiones de SPIP, y slo existe en francs). En la versin [SPIP 1.6], se han introducido importantes modificaciones el comportamiento del mo- tor: mejor comportamiento en un entorno multilinge; el guin bajo (underscore) ya no est considerado como un separador de palabra sino como un ca- rcter alfabtico (til para la documentacin informtica). las palabras de dos letras (y ms) que slo contienen maysculas y cifras son consideradas como siglas y son indexadas, lo que elimina uno de los principales inconvenientes de la limitacin de la in- dexacin a palabras de ms de 3 letras (G8, CNT, ONU son por tanto, indexadas). IV.8.3. La bsqueda La bsqueda se efecta simplemente separando el texto de bsqueda en sus diferentes palabras; se aplica el mismo filtro que durante la indexacin: supresin de las palabras de tres letras o menos (salvo las siglas) y conversin de los caracteres acentuados. Por cada contenido de bsqueda se recupera y luego se suma la puntuacin de las diferentes pala- bras para obtener la puntuacin total. Finalmente son en general publicados por orden decreciente de
44 Por lo tanto, si has puesto todos los $delais a cero, o si tu sitio no tiene visitas (sitio de pruebas), la indexacin no se llevar a cabo.
- Pgina 69 de 114 - puntuacin ({par points}{inverse}); es decir, de pertinencia (pero esto se deja a voluntad de la per- sona que escribe los esqueletos de paginacin [vase cap. II.19. Los bucles de bsqueda]). IV.8.4. Prestaciones Rapidez En un servidor reciente y no muy cargado la indexacin de un texto largo (varios decenas de millares de caracteres) necesitar entre uno y dos segundos: la espera es casi imperceptible comparada con el tiempo de carga a travs de la red. Los contenidos cortos son indexados de manera casi instantnea. Por supuesto, estas afirmaciones deben condicionarse al tamao del sitio. Un sitio realmente grande corre el riesgo de ver cmo el tiempo de bsqueda se ampla ligeramente; para relativizar sealemos que un si- tio como Le Courrier des Balkans tiene, en la fecha de escritura de este texto, unos 3800 artculos publi- cados, y ms de 7500 mensajes en el foro, y que el motor de bsqueda de SPIP no muestra ningn sn- toma de debilidad. Por otro lado, estadsticamente, se puede considerar de manera aproximada que cada contenido slo ser indexado una sola vez: teniendo en cuenta que existe en general muchas ms visitas en un sitio que de actualizacin de contenidos, el aumento de carga del servidor es poco considerable (salvo en ca- so de mquinas muy lentas). Calidad La calidad de indexacin es ms floja que en motores de bsqueda profesionales. Al ser PHP un len- guaje sobre todo lento, la fase de extraccin de palabras ha tenido que simplificarse al mximo para que los tiempos de indexacin sean mnimos. Por consiguiente, los datos de indexacin incluyen algunos re- siduos, es decir, trozos de texto que no corresponden a verdaderas palabras; pero que han sido in- dexadas como tales (se trata a menudo de contenidos tcnicos como los nombres de ficheros o de pasos puntuados mal hechos). El ejemplo de uZine (donde hemos constatado en torno a un 2% de tales re- siduos) nos permite pensar que estos datos son una cantidad poco considerable, adems de que exis- ten pocas posibilidades de que produzcan un resultado positivo en una bsqueda. En cuanto a la bsqueda, es simplemente aditiva: no hay operadores booleanos, el operador implcito es a grosso modo un O lgico. Sin embargo, desde SPIP 1.7.1, los artculos encontrados se muestran ordenadas segn los resultados que contengan ms palabras con la ortografa ms aproximada a la bs- queda. Por ejemplo, en la bsqueda de sobre el euro devolver los artculos que contengan sobre y euro antes que los que contienen sobrecarga y Europa, que aparecern ms abajo en la clasifica- cin. Espacio en el disco Dado que MySQL no est especialmente concebido para el almacenamiento de datos indexados, la utilizacin del motor de bsqueda tiene tendencia a incrementar mucho el espacio del disco utilizado por la base de datos. Para precisar un poco ms podramos decir que un contenido genera datos de indexa- cin de un tamao comprendido entre el tamao del contenido y el doble del mismo. Es decir, excluyen- do los datos que no se incluyen en la indexacin (los foros, por ejemplo), puede calcularse que la in- dexacin dobla o triplica el tamao de la base de datos. Esto puede ser molesto si el sitio que tienes es muy escaso. Si alguna vez desactivas el motor de bsqueda con el fin de economizar espacio en el disco, no olvi- des a continuacin borrar los datos de indexacin (en la pgina de salvaguarda/restauracin de la base de datos) con el fin de liberar realmente el espacio del disco ocupado por estos datos.
IV.9. Las variables de personalizacin Algunos comportamientos de las pginas de tu sitio pueden ser modificadas a travs de variables PHP. Estas variables son normalmente definidas por SPIP pero para obtener una mayor personalizacin del sitio la webmisstres o el webmaster puede modificarlas. IV.9.1. Donde indicar estas variables? No es necesario entrar en el propio cdigo fuente de SPIP para fijar estas variables (por suerte!). Para el conjunto del sitio Si quieres fijar estas variables para todo el sitio puedes indicarlo con una sintaxis un poco diferente en un fichero denominado mes_fonctions.php3, colocado en la raz del sitio. (Eventualmente ser nece- sario crear este fichero y cercar las definiciones de tus variables por las etiquetas <?php y ?>, ver los ejemplos ms abajo.) Para cada tipo de esqueleto [SPIP 1.4] Tambin puedes definir estas variables esqueleto por esqueleto. Para ello es necesario declarlas al principio del fichero PHP que llama al esqueleto (por ejemplo article.php3, rubri- que.php3...). Se insertan naturalmente al lado de las variables obligatorias $fond y $delais.
- Pgina 70 de 114 - IV.9.2. Las variables del texto Estas variables se utilizan en el clculo de la paginacin (correccin tipogrfica) por SPIP. $debut_intertitre fija el cdigo HTML insertado en apertura de los interttulos (mediante el atajo {{{). Por omisin, su valor es: $debut_intertitre = "\n <h3 class=\"spip\">\n"; $fin_intertitre es el cdigo HTML insertado en el cierre de los interttulos (atajo }}}). Su valor nor- mal es: $fin_intertitre = "\n</h3><br>\n"; Nota. El interttulo estandar propuesto por SPIP puede parecer ineficaz; se explica por la histo- ria del desarrollo de este programa; en tu propio sitio puedes, evidentemente elegir crear un cdigo ms "elegante" (llamando a una simple hoja de estilo) $ouvre_ref es el cdigo de apertura de las llamadas de las notas de pi de pgina; por omisin, es un espacio inscable y un corchete abriendo; $ferme_ref es el cdigo de cierre de las llamadas de las notas a pi de pgina; por omisin es un corchete cerrando; $ouvre_note es le cdigo de apertura de la nota de pi de pgina (tal como aparece en #NOTES); por omisin, un corchete abriendo; $ferme_note es el cdigo de cierre de las notas a pi de pgina (un corchete cerrando). Opciones alternativas podran ser, por ejemplo, utilizar parntesis o, ms atractivo, abrir con la eti- queta de , y cerrar con , lo que situara al nmero de nota en exponente. El fichero puce.gif y la variable $puce. Cuando empiezas una nueva lnea por un guin SPIP la reem- plaza por un pequeo smbolo grfico. Este smbolo 45 est constitudo por el fichero puce.gif instalado en la raiz del sitio. Puedes modificar el fichero si te apetece. Pero tambin puedes decidir fijar t mismo la eleccin de la "puce" a travs de la variable $puce .Por ejemplo para indicar otro fichero grfico: $puce = "<img src='mipulga.gif' alt='-' align='top' border='0'>"; o por un elemento HTML no grfico: $puce = "---"; IV.9.3. Las variables para los foros pblicos Existen variables que permiten fijar el comportamiento de los foros pblicos con palabras clave. Nota. Estas variables slo se utilizan cuando creas foros pblicos en los que las personas visi- tantes pueden seleccionar palabras clave; su utilizacin es, pues, sumamente especfica (y nada evidente...). $afficher_texte (valores oui o non: - s o no). Por omisin, los foros pblicos son concebidos para permitir a las personas visitantes introducir un texto de mensaje; pero cuando se propone la eleccin de palabras clave en los foros se puede decidir que ningn mensaje es til, que slo la se- leccin de las palabras clave importa. En este caso se podr indicar: $afficher_texte = "non"; $afficher_groupe permite indicar los diferentes grupos de palabras-clave que se desea proponer en tal o cual foro. En efecto, todos los foros de un sitio pueden no ser idnticos. Si, en ciertos foros, se quiere proder proponer la seleccin de todos los grupos de palabras clave (es decir aquellos que, desde el espacio privado, se los volvi accesibles a las personas visitantes) es posible que en otros se quiera utilizar slo algunos grupos, o inclusive ningn grupo (ninguna seleccin de palabras cla- ve: stos son foros de mensajes nicamente). La variable $afficher_groupe es un tablero (array) y se construye, por ejemplo, de la manera si- guiente: $afficher_groupe[] = 3; $afficher_groupe[] = 5; impone proponer a la seleccin nicamente los dos grupos cuyos identificantes son 3 y 5. $afficher_groupe[] = 0; impide utilzar palabras clave en esos foros (ya que no existe ningn grupo de palabras clave nume- rado 0). Si no se le indica nada (no se explicita $afficher_groupe), SPIP propone a la seleccin todos los grupos de palabras clave que estn indicados en el espacio privado como propuestos a las personas vi- sitantes del sitio pblico.
45 En francs, se le llama puce, lo que significa pulga. No duden en hacer propuestas de traduccin en la lista spip-es.
- Pgina 71 de 114 - IV.9.4. La carpeta de los esqueletos [SPIP 1.5] Si se desea poner los esqueletos de un sitio en una carpeta particular, (por ejemplo para probar diferentes juegos de esqueletos localizados en Internet, o porque a uno le gustan las cosas bien ordenadas) es posible fijar en mes_fonctions.php3 la variable $dossier_squelettes. <?php $GLOBALS['dossier_squelettes'] = 'design'; ?> A partir de ese momento, SPIP ir a buscar prioritariamente los esqueletos presentes en la carpeta design/ (que habrs creado en la raz de tu sitio). Si, adems, utilizas <INCLURE(xxx.php3)>, SPIP ir a buscar el fichero xxx.php3 primero en design/, y luego, si no se encuentra ah, en la raz del si- tio. Las ventajas de este arreglo pueden parecer evidentes (mejor separacin del cdigo SPIP y de la es- tructura del sitio, posibilidad de cambiar todo un conjunto de esqueletos de una sola vez, etc.); el incon- veniente principal es que ser ms difcil visualizar los esqueletos a travs de un simple navegdor (los enlaces hacia las imgenes, sobre todo, corren el riesgo de provocar problemas). IV.9.5. Ejemplos Para modificar variables slo para un cierto tipo de esqueletos (por ejemplo para las pginas de sec- ciones) basta con definir sus valores en el fichero de llamada de estos esqueletos. Por ejemplo, para las secciones, se pueden fijar los valores directamente en rubrique.php3: <?php $fond = "rubrique"; $delais = 2 * 3600; $espace_logos = 20; include ("inc-public.php3"); ?> Aqu se mofica los valores del espacio alrededor de los logos. Para modificar los valores de variables para el conjunto del sitio se puede definirlos en el fichero mes_fonctions.php3. Atencin, cuando se definen los valores en este fichero es imperativa utilizar la sintaxis $GLO- BALS['xxx'] para cada una de las variables por personalizar. Por ejemplo, para definir el valor de $de- but_intertitre, se utiliza la sintaxis $GLOBALS['debut_intertitre']. La utilizacin de esta sintaxis est impuesta por imperativos de seguridad de los sitios. <?php $GLOBALS['debut_intertitre'] = "<h3 class='mon_style_h3'>"; $GLOBALS['fin_intertitre'] = "</h3>"; $GLOBALS['ouvre_ref'] = ' ('; $GLOBALS['ferme_ref'] = ')'; $GLOBALS['ouvre_note'] = '('; $GLOBALS['ferme_note'] = ') '; $GLOBALS['espace_logos'] = 0; ?>
- Pgina 72 de 114 -
V. Iniciacin: utilizar hojas de estilo con SPIP Para sacar el mejor provecho de SPIP, se recomienda utilizar las hojas de estilo. Tranquil@s, esta breve inicia- cion permitir a los principiantes dar sus primeros pa- sos...
- Pgina 73 de 114 - V.1. Introduccin Esta presentaci considera que conoces el sistema de los esqueletos de SPIP y que eres capaz de en- tender los esqueletos simples. En caso contrario, te aconsejamos releer el tutorial (vase seccin III. SPIP paso a paso) y/o el manual de referencia (vase seccin II. Formateo. Manual de referencia). V.1.1. Por qu hojas de estilo? Si realizas pginas Web de modo tradicional, las indicaciones grficas se insertan en el cdigo HTML de la pgina. As, cada vez que quieres poner un texto en rojo, escribes: <font color="red">. Para mostrar una tabla con borde ancho, escribes: <table border="2">. Con este mtodo y un sitio esttico (donde cada artculo tiene una pgina HTML especfica), cambiar la maquetacin de un sitio completo es una pesadilla: hay que buscar en todos los archivos HTML los trozos de cdigo a cambiar, y hacer las modificaciones una por una (por ejemplo reemplazar <font co- lor="red"> por <b> si se decide que los elementos que se mostraban en rojo, ahora van a ser mos- trados en negrita). Como ya sabrs, SPIP mejora mucho la situacin: no tienes que modificar ya cientos de archivos HTML, slo algunos esqueletos; y el aspecto de tu pgina es actualizado automticamente en el sitio completo. Sin embargo, el problema no est completamente resuelto. Por ejemplo, supongamos que has decidido usar cierto azul pastel en muchos elementos del sitio, pa- ra conseguir una identidad grfica de la Web: los enlaces, los encartes, ciertos elementos de navega- cin... se ven en azul pastel. El da que quieras cambiar el azul pastel por un verde plido, tendrs que modificar todos los lugares del esqueleto donde aparece el azul y sustituirlo por el verde. Esto puede ser desalentador: en estas condiciones no es factible cambiar rpidamente el aspecto de las pginas, ni si- quiera para hacer pruebas. La solucin est en el uso de las hojas de estilo. Una hoja de estilo es un archivo en el que se define un conjunto de propiedades grficas y los lugares donde estas se aplican. Las hojas de estilo tienen dos ventajas principales: la hoja de estilo es un archivo nico y centralizado, que se puede aplicar a tantos archivos HTML (y esqueletos SPIP) como se desee; las propiedades grficas se definen una sola vez en la hoja de estilo, sea cual sea el nmero de ve- ces que se aplican en el HTML. V.1.2. Concretamente La hoja de estilo que se va a aplicar en un archivo HTML (que puede ser un esqueleto SPIP), debe declararse dentro de la etiqueta <head> del archivo HTML (junto al ttulo y otras etiquetas <meta>) de la siguiente manera: <head> ... <link rel="stylesheet" type="text/css" href="mes_styles.css"> </head> Aqu el archivo mes_styles.css contiene las propiedades grficas que se desea aplicar a la pgina HTML (a lo largo de todo el tutorial, supondremos que mes_styles.css es el nombre que has elegido para este archivo). El archivo lleva la extensin css. De hecho, CSS 46 es el nombre del lenguaje utilizado en las hojas de estilo, de igual forma que HTML es el nombre del lenguaje utilizado para la creacin de p- ginas Web. Nota: una hoja de estilo se puede aplicar lo mismo a una pgina HTML clsica (esttica) que a un esqueleto SPIP. Es decir, que todos los trucos CSS vlidos en HTML clsico sirven tam- bin para un esqueleto de tu sitio... Si has leido bien los prrafos anteriores, es posible que ests en duda: s, hace falta aprender un nuevo lenguaje para usar las hojas de estilo (no es culpa de SPIP!). Las CSS, en efecto, no usan la sin- taxis del HTML. Sin embargo, es un lenguaje muy sencillo, y bastan algunos ejemplos para poder mane- jarlo sin ayuda... Para continuar, veamos primero un ejemplo de uso de los CSS por SPIP.
V.2. Estilos con clase En el artculo anterior, habamos visto de forma general las ventajas de las hojas de estilo. Ahora ex- plicaremos los beneficios adicionales de utilizar las hojas de estilo conjuntamente con SPIP.
46 Cascading Style Sheets: literalmente, hojas de estilo en cascada.
- Pgina 74 de 114 - V.2.1. Los estilos definidos por SPIP Como ya sabrs, las hojas de estilo permiten centralizar y gestionar las definiciones grficas de for- ma mucho ms fcil que cuando se insertan en HTML tradicional. Esto hace beneficioso su uso, aunque no indispensable: se puede seguir insertando donde se quiera cdigos grficos en el HTML mientras se sigue usando una hoja de estilo. En SPIP, las hojas de estilo tienen una funcin adicional fundamental: sirven para modificar las pro- piedades grficas de los elementos que no estn definidos en tu HTML (el del esqueletos). En realidad, el propio SPIP genera une multitud de estilos de publicacin diversos y variados. De este modo, los atajos tipogrficos (enlaces de hipertexto, subttulos, negrita, cursiva, tablas...) se transforman en cdigo HTML/CSS para representarlos en pantalla. Lo mismo sucede con los formularios automticos (responder a un foro, firmar una peticin...) y otros ms. Para que tambin se pueda modificar el aspecto grfico de estos estilos, SPIP les da un nombre es- pecfico, inmutable (existe una lista exhaustiva de estilos en el cap. IV.3. Spip y las hojas de estilo). Por ejemplo, los {{{subttulos}}} no generan una simple etiqueta <h3>, sino una etiqueta <h3 class="spip">. Qu es lo interesante? Que las etiquetas llevan un nombre especfico en el atributo class: este nombre define a que clase pertenece, es decir, un conjunto de elementos HTML que here- dan las mismas propiedades grficas definidas en la hoja de estilo. Y ahora cmo hacemos para cambiar el aspecto de todos los subttulos de SPIP? Muy fcil, basta con abrir el archivo mes_styles.css (o cualquier otro nombre que hayas decidido darle) en un editor de texto y aadir las siguientes lneas: h3.spip { color: red; font-size: 18px; } Recarga la pgina y todos los subttulos SPIP apareceran en rojo como por arte de magia; fjate adems en que el resto de etiquetas <h3> de la pgina, si las hay, no son publicadas en rojo... Si no aparece nada de esto, comprueba que est declarada la hoja de estilo en el esqueleto (en la etiqueta <head> como se explicaba en el artculo anterior), y recarga la pgina... Expliquemos brevemente la sintaxis de esta regla de publicacin: h3.spip justo antes de las llaves significa que la regla siguiente slo se aplicar a las etiquetas <h3> que tengan un atributo class igual a spip. Fjate bien: ni las etiquetas <h3> que no tengan este atributo, ni las etiquetas que tengan este atributo y no sean <h3>, resultan afectadas. Las llaves contienen la lista de las propiedades grficas asociadas al estilo definido. Es destacable que el resto de propiedades no definidas en esta lista mantienen el valor por defecto para la etique- ta en cuestin; en este caso, la etiqueta <h3> producir siempre un texto en negrita, ya que nada en el estilo dice lo contrario. Cada una de las propiedades listadas entre llaves termina con un punto y coma. Estan formadas por un nombre (definido por el lenguaje CSS), seguido por dos puntos y por uno o ms valores. Aqu vemos que el color est puesto en rojo y que la fuente de caracteres debe mostrarse con una altura de 18 pixels. Importante: si aades tus propios estilos, debes saber que el valor dado al atributo class es totalmente arbitrario. Para el navegador es indiferente que este atributo se llame spip, me- nu-secciones o patin321. Lo nico que hay que tener en cuenta es que el valor corresponda con la regla enunciada en la hoja de estilo. Como puedes ver, el lenguaje CSS es muy sencillo, y usa el mismo tipo de vocabulario que los atri- butos HTML clsicos. Segun vayas progresando en el lenguaje de las hojas de estilo, seguirs encon- trando nociones ms o menos heredadas del HTML tradicional (border, width, height...). V.2.2. La gestin de la cach El hecho de que tu hoja de estilo est definida en un archivo separado (el famoso mes_styles.css) tiene una consecuencia importante. En efecto, el archivo, al contrario de tus esqueletos no es gestionado por SPIP (ni es necesario!). Eso significa que si modificas la hoja de estilo, no necesitas vaciar le cach de SPIP: basta con recargar la pgina en el navegador. Eso hace que el ajuste de la pgina sea an ms fcil. Hay que recordar tambin que la hoja de estilo debe ser declarada en los archivos HTML, y que estos deben ser recalculados una primera vez para que la declaracin sea tenida en cuenta: la lnea <link rel="stylesheet" type="text/css" href="mes_styles.css"> debe encontrarse en la cach para que el navegador pueda contar con ella. Despus de esta presentacin general y el primer ejemplo, veamos ms en detalle cono se pueden utilizar los CSS para las balizas SPIP.
- Pgina 75 de 114 -
V.3. Personalizar la tipografa Despus de la introduccin general a las hojas de estilo (vase captulo anterior), vamos a pasar re- vista a alguno de sus usos ms habituales con SPIP. Fijmosnos en los estilos creados cuando se insertan los atajos tipogrficos en un texto escrito en SPIP. No tiene importancia que lo que se publica sea un artculo, una breve, una seccin o cualquier otra cosa: los estilos siempre llevan los mismos nombres. Lo que no impida que encontremos la forma de aplicar estilos grficos eventualmente distintos... V.3.1. El texto base El propio texto base con SPIP, ese que se teclea en un formulario, genera ciertas etiquetas HTML. El texto es separado en prrafos; a cada prrafo le corresponde una etiqueta <p class="spip">. Por lo tanto, podremos asociar a estos prrafos un estilo claramente definido, que no se aplicar al resto de texto en la pgina. Empecemos por elegir un estilo de caracteres. Para ello se usa la propiedad font-family, que toma como valor uno o ms nombres de fuentes a emplear. Para un cuerpo de texto como el de un artculo, va mejor una fuente serif; supongamos que se elige Bookman Old Style. Hay que aadir al archivo mes_styles.css la siguiente regla: p.spip { font-family: "Bookman Old Style"; } (los nombres de fuente que tienen varias palabras deben ir entre comillas...) Un posible problema es que la fuente Bookman Old Style no est instalada en el ordenador de nuestros visitantes: cada orde- nador est configurado de forma diferente, y no hay que olvidar que las fuentes gratuitas de Microsoft pueden no estar instaladas en Linux o Macintosh... Es preferible prevenir esta posibilidad y especificar una o ms fuente alternativas: p.spip { font-family: "Bookman Old Style", "Times New Roman", serif; } Aqu especificamos como alternativas sucesivas de Bookman, la clsica Times New Roman , y co- mo ltimo recurso serif. serif no es una fuente en s, es un cdigo genrico que indica al nave- gador que use la fuente serif por defecto del ordenador; de la misma manera sans-serif especifica la fuente sans-serif por defecto (en general Arial o Helvetica). Hay que recordar esta importante regla: en la propiedad font-family, siempre conviene proponer varias alternativas sucesivas para adaptarse a las fuentes instaladas en el ordenador del visi- tante. Esta regla tambin es vlida para la etiqueta <font face="..."> del HTML tradicional. Naturalmente, hay ms propiedades disponibles. Se puede, por ejemplo regular el tamao del texto con la propiedad font-size. Hay que tener en cuenta, no obstante, que los navegadores disponen de op- ciones para configurar el tamao predeterminado del texto, y el texto principal de la pgina no debera sobrepasar ese ajuste por motivos de confort visual: quien elige el tamao base del texto es el usuario, no el webmaster. Se debe tener en cuenta que los estilos que se apliquen a las etiquetas <p> se aplican a cada prra- fo como objeto autnomo. Esto permite algunos efectos interesantes, como por ejemplo, sangrar la pri- mera lnea de los prrafos usando la propiedad text-indent. Por defecto, esta propiedad tiene un valor cero; es decir, que no hay sangra. Se puede modificar para obtener, en cada primer lnea de prrafo, una sangra de 1em (ms o menos 3 espacios 47 ): p.spip { text-indent: 1em; } V.3.2. Los enlaces de hipertexto Quienes ya se hayan peleado con el CSS sabrn que se puede modifcar el aspecto de los enlaces de manera global: a { color: green; text-decoration: none; }
47 La unidad typogrfica em, que se puede utilizar en CSS, es relativa al tamao de letra.
- Pgina 76 de 114 - Esta regla de estilo especifica que todos los enlaces de hipertexto (es decir, las etiquetas <a ...>, tengan o no un atributo class) sern mostradas en verde sin subrayar. SPIP permite ir ms all. Los enlaces de hipertexto generados por los atajos tipogrficos, utilizan va- rios estilos diferentes: cuando es un enlace interno (reenva a otra pgina del mismo sitio), la etiqueta es <a class="spip_in">; cuando es un enlace externo (reenva hacia otro sitio Web), la etiqueta es <a class="spip_out"> 48 ; y cuando la URL se introduce sin ttulo, la etiqueta es <a class="spip_url">. esto hace muy sencillo representar estos tres tipos de enlaces con distinto aspecto grfico. Veamos: a { color: green; text-decoration: none; } a.spip_in { color: blue; } a.spip_out { color: red; } muestra los enlaces internos en azul y los enlaces externos en rojo. El resto de enlaces, includos los no generados por SPIP, se vern en verde. Adems todos los enlaces se mostrarn sin subrayar: en efecto, la propiedad text-decoration, especificada en la primera regla, no se ha modificado en las si- guientes; por lo tanto, se aplica automticamente a todos los elementos de tipo <a ...>. Hay que resaltar una propiedad fundamental de las hojas de estilo: las reglas grficas se aplican en el orden de la ms genrica a la ms especfica. As se puede definir un comportamiento genrico para la mayor parte de los elementos, y modificar este comportamiento para un subconjunto de ellos. De esta caracterstica deriva la potencia de las hojas de estilo. V.3.3. Aplicar un tratamiento diferenciado Mejor que extendernos sobre la multitud de estilos generados automticamente por los atajos tipo- grficos de SPIP, que pueden ser modificados al gusto (se enumeran en el cap. IV.3 Spip y las hojas de estilo), estudiaremos el caso en el que se desea aplicar un aspecto distinto a un mismo estilo, segn su posicin en el esqueleto. Esto puede ser deseable cuando se quiere, por ejemplo, publicar el cuerpo del texto con una fuente serif e indentacin al principio del prrafo; pero el post-scriptum con una fuente ms lisa (sin los resaltes de las letras serif) y ms pequea, sin indentacin. La operacin es realmente muy sencilla. Hay que modificar el esqueleto para introducir los elementos que permitan discriminar el texto y el post-scriptum. Se pondr, por ejemplo, dentro del bucle ARTICLES principal, el siguiente cdigo: <div class="texte">#TEXTE</div> <div class="ps">#PS</div> Aqu es necesario recalcular la pgina (ya que se ha modificado el HTML...). Pero el aspecto en el na- vegador sigue siendo el mismo: normal, los nuevos estilos no son objeto de ninguna regla en la hoja de estilo, y son omitidos por el navegador. Vamos a remediarlo: .texte p.spip { font-family: "Times New Roman", serif; text-indent: 50px; } .ps p.spip { font-family: Tahoma, Arial, sans-serif; font-size: 90%; } La gran novedad no est en las propiedades grficas, sino en la forma en que se aplican al cdigo HTML. En efcto, .texte p.spip significa: esta regla se aplica a todas las etiquetas <p class="spip"> contenidas en una etiqueta que tenga un atributo class igual a "texte. Se podra res- tringir algo esta regla especificando que la etiqueta padre debe ser, adems una etiqueta <div> (el prin- cipio de la regla sera entonces div.texte p.spip); pero como controlamos la estructura de nuestros propios esqueletos, no es til hacer la hoja de estilo tan restrictiva. As pues, esta hoja de estilo da el resultado deseado: los prrafos del cuerpo de texto se muestran con indentacin, los del post-scriptum con una fuente ms pequea y sin indentacin. Para verificar que
48 Que no se alegren todava los amantes de abrir nuevas ventanas: en una hoja de estilo es imposible especificar si un enlace debe abrirse en otra ventana... Mala suerte!
- Pgina 77 de 114 - las reglas se aplican bien a cada prrafo <p class="spip"> y no a los <div class="..."> que les inclu- yen, vamos a divertirnos poniendo un marco negro: .texte p.spip { border: 1px solid black; } Comprobamos que cada prrafo del cuerpo de texto (pero no el post-scriptum) est rodeado por su propio cuadro negro. Si se hubiese escrito .texte en lugar de .texte p.spip, sera el texto com- pleto el que estara rodeado por un nico cuadro negro. Sealemos, de paso, la aparicin de la propie- dad border... Nota: este truco, que consiste en trazar un marco de color para saber exactamente a qu ele- mentos se aplica una regla, puede ser muy til cuando una hoja de estilo se hace complica- da. No dudes en usarla si te pierdes... Este mtodo es muy poderoso y su uso general es provechoso para estructurar la composicin de la pgina. Despus de la tipografa de las balizas SPIP, sigamos aprendiendo los CSS y los trucos de SPIP con los formularios.
V.4. Qu formularios ms bonitos! Ya estn personalizados el aspecto y la tipografa del sitio; pero ahora los formularios SPIP desento- nan totalmente del resto. Que no cunda el pnico!, tambin aqu las hojas de estilo resuelven el pro- blema. Recuerda que las hojas de estilo, usadas conjuntamente con SPIP, permiten adaptar la visualizacin de los atajos tipogrficos (vase cap. V.3. Personalizar la tipografa) al aspecto de la pgina. Bien, pues sucede lo mismo con los formularios generados por SPIP: su aspecto grfico se puede modular pa- ra integrarse sin diferencias con tu diseo. Una vez ms, no se trata aqu de revisar todos los estilos proporcionados por SPIP (vase cap. IV.3. SPIP y las hojas de estilo). Sin embargo, hay que saber que se puede alterar el aspecto de todos los formularios del espacio pblico: formulario de respuesta a los foros, de bsqueda, de firma de peti- cin 49 ... Vamos a dar algunas recetas. V.4.1. Los colores y el relieve Una novedad que va a encantar a los principiantes en CSS: se puede cambiar el color de los campos y los botones de los formularios 50 . Por ejemplo, para que los botones tengan un fondo azul claro, aade la siguiente regla a tu archivo CSS (que, si has seguido este tutorial al pie de la letra, se llama mes_styles.css) : .spip_bouton { background-color: #b0d0FF; color: black; } Los botones aparecen desde ahora con un fondo azul claro (propiedad background-color), y un texto negro. Fjate que .spip_bouton es el estilo utilizado por los botones y campos de los formularios SPIP. Ahora vamos a modificar el aspecto del borde de los botones. El relieve tradicional de los botones HTML ya est un poco anticuado. Podemos decidir aplanar los bordes, y ensancharlos en contrapartida para que sean bien visibles. Por ejemplo: .spip_bouton { background-color: #b0d0FF; color: black; border: 2px solid #000060; } La propiedad border definida traza un contorno de 2 pixels de ancho, de aspecto plano (solid en lenguaje CSS) y de color azul rodeando los botones. Igualmente se puede modificar el tipo de caracteres del botn (con las propiedades font-size y font-family como se ha visto en las etapas anteriores de es- ta inicicin).
49 E incluso los botones de administracin que se colocan abajo de las pginas cuando ests cone ctado. 50 Sin embargo, hay que advertir que ciertos navegadores imponen su propio estilo de botones, y no permiten cambiar su aspecto.
- Pgina 78 de 114 - Y los campos? Basta con aplicar los cambios al estilo .forml en lugar de a .spip_bouton. V.4.2. Un poco de espacio Las hojas de estilo permiten no slo de cambiar los colores y los tipos de fuentes; tambin se puede gestionar la posicin relativa de los objetos dentro de la pgina. Sin ir ms lejos, veamos cmo desaho- gar un poco los formularios: .formulaire { background-color: #e8f4ff; font-family: Verdana, Arial, sans-serif; font-size: 90%; font-weight: normal; border: 1px solid black; padding: 10px; } Aqu cambiamos la visualizacin del estilo .formulaire, que es el estilo principal de todos los formu- larios generados por SPIP. El inters de modificar este estilo es que se puede gestionar la visualizacine de todos los formularios. Aqu le hemos aplicado un color de fondo, muy claro, y un estilo de fuentes. Pero, sobre todo, se ha modificado el espaciado interior de cada formulario individual. La propiedad padding es la que permite el efecto de espaciado. Hay que tener en cuenta que la separacin se produ- ce precisamente en el interior del borde definido por la propiedad border: el formulario se considera aqu como un bloque rectangular autnomo. Nota: las hojas de estilo permiten incluso definir la disposicin de estos bloques rectangulares entre ellos, sin utilizar tablas para colocarlos. Sin embargo, esta es una materia demasiado larga para tratar en una iniciacin. Aqu termina esta breve introduccin de SPIP y los CSS. Slo nos falta aconsejarte nuestros sitios preferidos para ir ms all.
V.5. Para profundizar La presente iniciacin no es ms que un repaso superficial del poder de las hojas de estilo y una ex- plicacin de como las utiliza SPIP. Si este nivel no es suficiente, se pueden buscar entre la abundante documentacin disponible en la Red para ir ms all. Algunos puntos de partida interesantes: V.5.1. En espaol Carlos Benavides [http://www.sidar.org/recur/desdi/mcss/index.php], mantiene una traduccin completa de la especificacin CSS2 del W3C; El Web Design Group [http://www.htmlhelp.com/es/reference/css/], promueve la creacin de sitios que no dependan del navegador ni de la resolucin de pantalla; unas referencias rpidas selfhtml [http://www.selfhtml.com.ar/], para no perderse en medio de la accin (en proceso de traduccin); V.5.2. En francs OpenWeb [http://openweb.eu.org/], mezcla de debates y artculos tcnicos sobre CSS y otros standards de la Red; un curso CSS dbutant [http://mammouthland.free.fr/cours/css/]; Techniques et astuces pratiques pour une mise en page CSS [http://pompage.net/pompe/csspratique/] ensea a gestionar la posicin de elementos con hojas de estilo; una coleccin de recettes [http://www.alsacreations.com/articles/] para el uso eficaz de CSS; V.5.3. En ingls el bello CSS ZEN Garden [http://www.csszengarden.com/] dnde se pueden ver concretamente en un mismo contenido, centenas de diseos (aunque la hoja de estilo sea ms bien especfica, es una bonita ilustracin); Listas de elementos: Max Design [http://css.maxdesign.com.au/index.htm] ejemplos de efectos grficos; los tipsntricks [http://www.w3.org/Style/Examples/007/] del propio W3C... y, para los amantes del riesgo, todas las especificaciones originales del W3C! [http://www.w3.org/Style/CSS/]
- Pgina 79 de 114 - V.5.4. Una pequea herramienta Si utilizas el excelente navegador Firefox [http://mozilla.org/products/firefox/], el plug-in EditCss [http://texturizer.net/firefox/extensions/#editcss] permite editar y comprobar las hojas de estilo sobre la marcha, desde el navegador.
- Pgina 80 de 114 -
VI. Tutorial: utilizacin avan- zada de bucles y palabras claves Este tutorial explica rapidamente como ir ms all de los limites aparentes de SPIP. OJO: est dirigido a usua- rios con experiencia.
- Pgina 81 de 114 - VI.1. Introduccin SPIP es un producto limitado. Hay cosas que hace muy bien y otras que no puede realizar. Si inten- tas por ejemplo crear un sitio web dedicado al cine con los enlaces de todos los nombres (actores, reali- zador, equipo tcnico, a la manera de fichas como las de Internet Movie Database [http://www.imdb.com/]) hacia otras pelculas que han realizado, etc. te dars cuenta de que SPIP no est realmente pensado para ello. Por el contrario, crear y gestionar un sitio de contenido editorial con una estructura simple a la manera de [uZine-http://www.uzine.net/], es muy sencillo. No obstante, entre estos dos extremos (de los sitos irrealizables con SPIP a los sitios para los cuales SPIP est particularmente adaptado) existe una multitud de usos, de necesidades, fcilmente realizables pero a priori inaccesibles con la versin estndar de los esqueletos. Algunos webmasters (con mucho valor), confrontados a los lmites aparentes del producto, se lanzan con el cdigo fuente de SPIP con el objetivo de adaptarlo a sus necesidades especficas. Si esta actitud muy open source es loable, sin embargo priva a quien la mantiene de la posibilidad de seguir las evo- luciones del programa estndar y requiere conocimientos amplios en PHP. Ahora bien, y es el objetivo de este tutorial, existen numerosas posibilidades para sobrepasar los l- mites de SPIP, nicamente a travs de una utilizacin personalizada de los esqueletos y de la estructura del sitio. VI.1.1. A quin se dirige este documento? Este tutorial est destinado a las y los webmasters/webmisstres que desean sobrepasar algunos lmi- tes aparentes de SPIP. Resulta pues imperativo haber comprendido el funcionamiento de los esqueletos y los bucles que gestionan la interfaz pblica. Si estas empezando empieza con los documentos de la seccin III. SPIP paso a paso destinada a quien se inicia en el funcionamiento de los esqueletos. Si sabes utilizar ya bien los esqueletos te aconse- jamos manejes bien una versin del Manual de Referencia (seccin II. Formateo. Manual de referen- cia). VI.1.2. Qu versin SPIP? Los ejemplos que aqu se plantean utilizan funcionalidades incluidas a partir de la versin SPIP 1.3. Algunos pueden realizarse con versiones precedentes pero la versin 1.3 (y posteriores) ofrece mayores garantas 51 . VI.1.3. Qu otros conocimientos tcnicos son necesarios? Este tutorial es muy progresivo. Presenta la construccin paso a paso de esqueletos completos. Adems de la comprensin del mecanismo general de los esqueletos (y del sistema de bucles) conviene entender el cdigo HTML. El HTML utilizado aqu ser voluntariamente rudimentario pero, si nunca has realizado una pgina web sino con un programa Wysiwyg, corres el riesgo de sufrir. No abordaremos aqu la utilizacin del PHP en los esqueletos; el conocimiento de este lenguaje resul- ta pues aqu intil. VI.1.4. Los imperativos No tocar la estructura de SPIP en si misma. En ningn momento modificaremos el cdigo fuente del producto, ni las tablas de base de datos utilizadas por SPIP. Esto garantizar que las funcionalidades aportadas aqu continen compatibles con las futuras evoluciones del programa y que la interfaz privada conserve su coherencia. Realizar un sitio en el que la interfaz de navegacin se mantenga coherente. Uno de los objetivos aqu es realizar una navegacin ms rica que la que proponen los esqueletos estndar, no conviene pues que contrariamente a ello la interfaz se convierta en una interfaz incomprensible para quien visite el si- tio. (Comprobars sin embargo que no hemos desarrollado aqu el grafismo de nuestras pginas; grfi- camente, la interfaz obtenida al final de este tutorial ser horrible... pero en revancha, los enlaces entre los diferentes elementos estructurales del sitio estarn presentes.) Realizar un sitio cuyas actualizaciones continen siendo simples. Quienes gestionan el sitio desde el espacio privado no deben pasar varias horas para aadir un nuevo artculo... Se trata de aprovechar los automatismos relacionados con un sitio dinmico. VI.1.5. Cmo utilizar este tutorial? Este tutorial es muy progresivo y los cdigos ofrecidos son completos: no encontrars aqu trozos de cdigo salidos de no se sabe donde para volver a copiar, al contrario, el cdigo completo de los es- queletos se construir a medida que se construyan los artculos. El mtodo que se desarrolla aqu es el de la creacin de pginas de esqueletos cada vez ms complejas explicndose cada etapa.
51 Nota de la traductora: en el momento de realizar la traduccin se est utilizando ya la versin e stable de SPIP 1.6
- Pgina 82 de 114 - Te aconsejamos pues seguir este tutorial por el orden de sus artculos y crear los ficheros al mismo tiempo que las explicaciones integrando cada vez las variaciones dadas en ejemplo. Encontrars estos ejemplos mucho ms claros si realizas t misma las pginas planteadas aqu. El cdigo te parecer ms simple ya que a cada nuevo elemento vers inmediatamente el impacto de las modificaciones. Todos los esqueletos realizados en este tutorial estn agrupados en una contribucin [http://www.spip-contrib.net/article87.html] de spip-contrib->http://www.spip-contrib.net/]. Te los puedes bajar ya, pero no obstante te aconsejamos realizar los esqueletos propuestos en el tutorial desde el principio: si trabajas directamente a partir de los esqueletos terminados perders la construccin pro- gresiva y corres el riesgo de no comprender su estructura. VI.1.6. La progresin de este tutorial Los primeros artculos (desde "El objeto del juego" a "Escribir los artculos") insisten en la importan- cia de pensar bien la estructura de tu sitio y de definir la constitucin de los artculos antes de empezar un sitio complejo. Tcnicamente esta parte es necesaria para toda aquella persona usuaria de SPIP (se puede pues leer incluso si no se tiene ningn conocimiento del funcionamiento de los esqueletos.) Esta parte te parecer quizs demasiado sencilla (no hay ninguna audacia tcnica). Introduce sim- plemente la utilizacin de las palabras clave como herramienta de estructuracin del sitio. Sobre todo permite comprender que la estructura del sitio es primordial durante el comienzo de un proyecto de sitio ambicioso. Cuando en esta etapa se realiza una negligencia (y ello resulta frecuente) conduce a realizar sitios que dejan de ser manejables y cuya interfaz pblica es incoherente (estos problemas se plantean raramente cuando se empieza el sitio, con un pequeo grupo de artculos). Finalmente insistimos (am- pliamente...) en el hecho de que las elecciones tcnicas (programacin de los esqueletos, utilizacin de palabras clave) dependen directamente de las elecciones editoriales (esta evidencia es primordial en un sistema de publicacin). Los siguientes artculos (de "Primera versin del esqueleto de los artculos" a "El sitio completo") propondrn la creacin paso a paso de los esqueletos. Es necesario a partir de ese momento tener un buen conocimiento del sistema de bucles SPIP. Las dificultades en ese punto sern de orden lgico y no informticas. Voluntariamente fabricaremos los esqueletos en varias etapas sucesivas: al principio los esqueletos sern extremadamente sencillos, se evolucionar aadiendo cada vez ms complejidad en la estructura de los bucles. Encontrars en esta parte algunas astucias lgicas en la gestin de los bucles; sobre todo vers la utilizacin de las palabras clave como elementos de estructuracin de la navegacin. Obtendremos al final de este tutorial un sitio completo y explotable (a travs de la creacin de una interfaz grfica un poco ms elaborada). Sin embargo, el ltimo artculo (El sitio completo) te ofrecer algunas ideas de desarrollos suplementarios que podrs aadir a tu sitio poniendo en prctica los princi- pios explicados aqu.
VI.2. El objetivo del juego: un sitio web dedicado a los videojuegos Las explicaciones siguientes se basan en la realizacin de un sitio web dedicado a los videojuegos. VI.2.1. Por qu los videojuegos? Una nocin que nunca se debe perder de vista cuando se realizan esqueletos con SPIP, es que se pretende presentar un contenido de forma periodstica (pensar en trminos de posibilidades tcnicas o de base de datos es el mejor modo de crear un sitio con una interfaz incomprensible). Por lo tanto, es necesario utilizar permanentemente un vocabulario e imgenes relacionados directamente con el conte- nido que se quiere presentar. Por lo tanto, para que este tutorial resulte legible, tenamos que fijarnos un objetivo periodstico, pa- ra poder presentar cada manipulacin tcnica como la respuesta a una necesidad editorial. Un sitio de videojuegos ofrece varias ventajas para nuestra explicacin: el vocabulario asociado con los contenidos de este tipo de sitios web es conocido por todos, la navegacin por estos sitios es muy flexible (existen numerosas formas distintas de navegar en ellos); es un ejemplo tpico de un sitio imposible de realizar con los esqueletos estndar de SPIP (salvo que te contentes con un sitio muy por debajo de lo esperado en este tipo de contenidos); en cambio, es un ejemplo muy bueno de lo que se puede hacer para superar los lmites de SPIP, mientras se conserva la coherencia y la sencillez de su uso. VI.2.2. Qu dificultades presenta un sitio web as? La dificultad principal concierne a la organizacin en secciones de los artculos:
- Pgina 83 de 114 - cada juego es objeto de diversos artculos: uno o varios tests (pruebas del producto comercial), un anlisis previo (describir un juego que an no est disponible comercialmente, sino en versin beta), las noticias (por lo general, antes de la salida, se trata de difundir algunas informaciones so- bre el futuro juego), los trucos y soluciones (o tips), una solucin completa a los enigmas del juego; ciertos juegos estn disponibles para diferentes plataformas (PC, Dreamcast, Playstation...); ciertas pruebas, avances o soluciones conciernen a una sola versin del juego, quizs a varias (y esto no es sistemticamente igual para un mismo juego: la solucin de un juego suele ser comn a diversas versiones, mientras que las pruebas deben realizarse para cada versin); cada juego pertenece a una categora (juego de accin/aventura, juego de reflexin, juego de plata- forma, juego de simulacin deportiva, juego de carreras, juego de joystick...). Con SPIP, slo se puede crear una nica estructura jerrquica para las secciones. De manera simple, habra que elegir una estructura nica: una estructura para el tipo de artculo (una seccin para las pruebas, una seccin para los previos, una seccin para las soluciones...); una estructura segn el tipo de mquina (una seccin para PC, una seccin para Playstation, una seccin para Dreamcast...); una estructura para cada categora de juego (una seccin para aventura, una para simulacin de- portiva, una para carreras...). En todos los casos, vemos que se pierde la riqueza de navegacin que debe ofrecer un sitio semejan- te, que debera permitir el paso a otro artculo relacionado con el mismo juego; pero tambin navegar segn el tipo de mquina, o consultar otros juegos de la misma categora... Tiene una segunda dificultad en cuanto a las informaciones sistemticas que se quieran incluir para cada juego, para poder presentarlas como informaciones separadas: la fecha de salida del juego; una nota de puntuacin. Evidentemente, se podra hacer escribiendo esta informacin a mano en el interior de los artculos; pero as no podra presentarse en las pginas especficas (prximas apariciones, juegos recin apa- recidos, mejores juegos de esta categora...).
Esta reproduccin del sumario que obtendremos da una idea de la diversidad de informacin presen- tada en el sitio, y de las posibilidades de navegacin: en el centro, las pruebas; para cada juego probado, se indica la nota atribuida, y la mquina (Dreamcast, Playstation...); en lo alto, se pueden colocar los sumarios consagrados a cada mquina; arriba a la izquierda, se podrn ver las prximas fechas de salida de juegos, al igual que la lista de juegos que hayan recibido mejor nota; a la izquierda aparece la navegacin en el sitio por la categora de juego (supervivencia-terror, simulacin deportiva...); a la derecha, los anlisis previos, las soluciones, los trucos, las noticias...
- Pgina 84 de 114 - VI.3. La estructura del sitio web La flexibilidad de SPIP en la gestin de la estructura de las secciones permite, por lo general, comen- zar la redaccin de los artculos sin preocuparse demasiado por su seccin (despus siempre es fcil mo- ver los artculos o las secciones). En el caso que nos ocupa, por el contrario, es necesario comenzar por la definicin de la estructura subyacente. En realidad, es ella la que condiciona las posibilidades de un si- tio como ste. Con SPIP, no se puede definir nada ms que una estructura jerrquica nica para las secciones. Habr que decidir, por lo tanto, cmo vamos a crear las secciones de nuestro sitio web. VI.3.1. Posibilidades Como hemos visto en el artculo anterior, aqu cada artculo contiene diversos criterios. Por lo tanto, se puede elegir para las secciones una estructura entre las siguientes: una estructura segn la mquina: una seccin para Dreamcast, una seccin para Playstation, una seccin para PC... una estructura segn el juego: una seccin para Resident Evil, una seccin para Gran Turismo, una seccin para Mortal Combat... una estructura segn la categora de los artculos: una seccin para las pruebas, una seccin de no- ticias, una seccin para soluciones... una estructura segn el tipo de juego: una seccin para juegos de deportes, una para los juegos de plataformas, una para juegos de habilidad... Forzando un poco las posibilidades, tambin se podran adoptar las siguientes estructuras: una estructura segn la calidad de los juegos (los mejores juegos en una seccin, los de calidad media en otra...); una estructura segn la fecha de redaccin, que se adapta notablemente a la transposicin en la Red de una revista mensual (los artculos del nmero de noviembre de 2001, una seccin para di- ciembre de 2001, una seccin para enero de 2002, etc.). VI.3.2. Los requisitos Ciertas caractersticas de nuestro sitio web aconsejan la eleccin de un tipo de estructura mejor que otro. Mientras se navega por un sitio web, es natural que se quiera pasar directamente de la prueba de un juego a su solucin, de la presentacin preliminar a sus noticias... Los visitantes, interesados por la presentacin, querrn saber la informacin reciente sobre el desarrollo del producto (las noticias). Una jugadora, tras leer la opinin extrada de una prueba, querr encontrar rpidamente pistas para terminar su juego (las soluciones, los trucos). En este caso, lo ms sencillo es reunir todos los artculos de un mismo juego en la misma seccin. La seccin de un juego incluir al mismo tiempo la presentacin previa, las pruebas, la solucin... Por lo tanto, la seccin ms pequea de nuestro sitio web ser la seccin que contenga todos los artculos sobre un solo juego. Se podra decidir la creacin de grandes secciones por tipo de mquina, y situar cada uno de los juegos como subsecciones con sus distintos artculos (un juego que tenga versin para varias m- quinas tendra una seccin especfica para cada tipo de mquina). Sin embargo, es frecuente que ciertos artculos sobre un mismo juego sean comunes para varias mquinas. La prueba de la versin para Dreamcast de Alone in the dark es diferente de la prueba para la versin Playstation; en cam- bio, la solucin del juego es comn para ambos soportes. Organizando las secciones por tipo de mquina, tendremos la prueba de Dreamcast en la seccin Dreamcast, y la prueba sobre Playstation en la seccin ad hoc; pero la solucin, comn para las dos versiones, tendra que publicarse en am- bas secciones, lo que es poco elegante y muy molesto. Los tipos de juegos presentan una estructura jerrquica: una carrera de rallye es una carrera de co- ches, que a su vez es una simulacin deportiva; un survival horror es un juego de aventu- ra/accin; un juego de habilidad 2D es un juego de habilidad... Por tanto, este tipo de estructura se adapta especialmente bien a SPIP, porque dentro de las secciones se pueden insertar tantas sub- secciones como sea necesario. Una gran seccin Deporte contendr varias subsecciones (Carre- ras, Ftbol, Deslizamiento, Tenis...), cada una de las cuales puede a su vez contener otras subsec- ciones. Por el contrario, las dems estructuras no tienen realmente una estructura jerrquica. Los tipos de mquina no dependen unos de otros: evidentemente, se podran reunir las consolas de juegos dentro de una gran seccin y crear otra gran seccin para PC; pero esto no tiene mucho inters, y no presentara gran profundidad jerrquica. De igual manera, una categora de artculos no depende de otra (las noticias no dependen de las soluciones, las cuales no dependen de las pruebas...); una organizacin de secciones segn la categora de los artculos no nos permitira, por lo tanto, tener una estructura real de secciones/subsecciones. VI.3.3. La estructura seleccionada En realidad, no importa cual de las posibilidades vistas anteriormente resulta factible, pues las tcni- cas que abordaremos ms adelante permitiran adaptarse a esas distintas situaciones. No obstante, es
- Pgina 85 de 114 - ms agradable elegir una estructura adaptada ms directamente a la lgica de SPIP; dicho de otro mo- do: un sitio web que ya se podra presentar bien con esa estructura, incluso sin utilizar los trucos que explicaremos ms adelante (es decir, un sitio que ya se puede visitar con los esqueletos standard). De esta manera, el uso del espacio privado y la gestin del sitio web seguirn siendo coherentes y sencillos. Por lo tanto vamos a preferir la estructura ms jerrquica: la estructura segn el gnero de juego. Crearemos grandes secciones temticas (Accin/aventura, Combate, Juegos pedaggicos, Plataformas, Deportes, Estrategia...), con varias subsecciones en cada una de ellas. En cada una de las subsecciones vamos a crear una subseccin para cada juego, que reuna todo tipo de artculos sobre ese juego en todas las plataformas del mismo (por ejemplo, todos los artculos relati- vos a Alone in the Dark 4. No importa que los artculos sean noticias, anlisis previos, pruebas, solucio- nes... que se refieran a la versin PC, Dreamcast o Playstation... todos estarn agrupados en la seccin nica consagrada e este juego). Lgicamente, la prueba de la versin para Dreamcast de Alone in the Dark se encontrar en la sec- cin Alone in the Dark, que estar instalada en una seccin Terror, dependiente a su vez de la seccin Accin/Aventura. Ms adelante veremos que, aunque es fcil utilizar esta estructura con SPIP (y que un sitio web se- mejante ya es fcil de visitar con los esqueletos estndar); a cambio aade algunas dificultades en la l- gica de presentacin, porque se mezclan secciones en las que el nombre es un juego con otras secciones que son las grandes categoras de juegos. VI.3.4. Qu sucede con el tipo de mquina y el gnero de artculo? Con esta estructura hemos perdido la posibilidad de indicar en la navegacin, para cada artculo, si se trata de una prueba, de una solucin, de noticias... o tambin si se refiere a una versin para PC, Dreamcast, Playstation... No sera prctico tener aqu para cada artculo un men desplegable que ofrezca una lista de m- quinas, y otro que ofrezca la lista de tipos de artculo? Se podra seleccionar en estos mens desplega- bles y, con un clic, indicar que se trata de una prueba, y que se refiere a la Dreamcast. Incluso se podra indicar que un mismo artculo se refiere a la Dreamcast y la Playstation. (No te puedes ni imaginar la cantidad de webmasters que, en este punto, se lanzan a cuerpo limpio sobre el cdigo fuente de SPIP para aadir los mens desplegables donde lo necesitan!) Fjate bien: ese men desplegable ya existe. Es el de las palabras-clave. Las palabras-clave asociadas a los artculos, permiten crear elementos de navegacin transversales en el seno de la estructura jerrquica de un sitio con SPIP, es decir, pasar directamente de un artculo en una seccin a un artculo situado en otra seccin distinta (sea cual sea la posicin de la otra seccin dentro de la jerarqua). Es cierto que el uso inmediato de las palabras-clave consiste en crear palabras-clave puramente te- mticas; pero si se considera que se trata de un medio de navegacin transversal en la estructura de secciones, se pueden utilizar de igual manera para adjudicar el nombre de la mquina utilizada o el tipo de artculo. El mtodo se ajusta particularmente bien a nuestro caso: lo que tenemos que indicar no tiene una estructura jerrquica y, sobre todo el nmero de elementos es relativamente fijo. Una vez determinada la lista completa de tipos de mquina, no es necesario aadir ms (la aparicin de una nueva consola no es frecuente); y los tipos de artculo en nuestro sitio web sern determinados de antemano. por lo tanto, se fijar la lista de palabras-clave una sola vez antes de comenzar (los aadidos sern muy raros) y ten- dremos nuestro men desplegable que permitir, para cada artculo, indicar la mquina a la cual se re- fiere y el tipo de artculo. N.B. Existen otros casos donde el uso de palabras-clave es una trampa. Notablemente son los casos donde la lista de palabras no est fijada por adelantado, y donde casi sera necesario crear una palabra-clave nueva para cada nuevo artculo. Es verdad que esto funcionara con SPIP; pero la actualizacin del sitio sera particularmente costosa. Por ejemplo, un sitio web dedicado al cine. Tendramos una estructura temtica segn los grandes gneros del cine. A continuacin, desearamos poder saltar de una pelcula de tal director a otras pelcu- las de ese mismo director. Una solucin (con trampa) consistira en crear una palabra-clave para este di- rector: siempre que se aada la ficha de una pelcula, se le asociara la palabra-clave de su director. lo mismo para los actores protagonistas, el autor del guin, etc. La navegacin por el sitio web sera de gran riqueza. Pero la actualizacin con SPIP sera infernal: una lista de palabras-clave interminable, y sobre todo la necesidad de crear palabras-clave cada vez que se aade una pelcula. Imaginemos tambin que hemos seleccionado para nuestro sitio web una estructura segn una cate- gora de artculos grande: una seccin para las pruebas, una seccin para previos, una seccin para no- ticias... Una vez dentro de las pruebas de Alone in the dark, se querra mostrar enlaces hacia su solu- cin, sus noticias... El nico medio de hacerlo sera utilizando una palabra-clave Alone in the dark. Se ve que as, por cada nuevo juego que se incluya en el sitio , habr que crear una nueva palabra-clave: muy molesto de gestionar, difcil de utilizar (el men desplegable se har interminable rpidamente),
- Pgina 86 de 114 - con interfaz sobrecargado intilmente (ciertos juegos dejan de ser tratados por completo unos meses despus de su salida, su presencia en la lista de palabras-clave mostrada cada vez, resulta intil).
VI.4. Despliegue de la estructura Una vez determinada la estructura del sitio web en el artculo anterior, entramos al espacio privado de SPIP, e introducimos los elementos necesarios. Siempre es una tarea ingrata; pero es indispensable antes de redactar el menor artculo e incluso de crear los esqueletos. Los elementos que vamos a crear a partir de ahora servirn de base a los siguien- tes. VI.4.1. La estructura de las secciones Empecemos por crear la jerarqua temtica de secciones (segn las grandes categoras de juegos). Esto es cuestin de gustos personales; pero esta puede ser una idea (no exhaustiva) del resultado: Accin/aventura o Exploracin y enigmas o FPS (Tipo Quake) o RPG (Juegos de rol) o Supervivencia y terror Combate o 2D o 3D Juegos pedaggicos o Lectura o Matemticas o Fsica o Cultura Plataformas o 2D o 3D Deportes o Carreras S Formula 1 S Rallye S Gran Turismo o Ftbol o Esqu o Tenis Estrategia o Rompecabezas o Juegos de cartas o Juegos de tablero o Wargames o Estrategia en tiempo real Esta estructura no est completa; pero eso es lo interesante: podemos modificarla fcilmente en fun- cin de nuestras necesidades, sin que por ello tengamos que modificar el principio general ni los esque- letos. Cuando una seccin contenga demasiados juegos, se pueden crear subsecciones para evitar que nos salgan listas demasiado largas (por ejemplo, si hay demasiados juegos de cartas, se pueden crear subsecciones Poker, Bridge, Solitario dentro de esta seccin y mover los juegos). Habamos previsto crear a continuacin secciones para cada juego (una seccin Resident Evil, una seccin Alone in the dark...). Pero como estas secciones no afectan a la estructura fija del sitio web, las dejaremos para el siguiente artculo. VI.4.2. Las mquinas Como habamos explicado antes, los tipos de mquina se indicarn por medio de palabras-clave. Para empezar hay que crear un grupo de palabras, que vamos a llamar Mquinas. A continuacin creamos una palabra-clave para cada mquina dentro del grupo Mquinas. Queda- r asi:
- Pgina 87 de 114 -
En este tipo de sitios web, es frecuente indicar el tipo de mquina al que nos referimos mediante un pequeo logo. As que vamos a atribuir a cada palabra clave el correspondiente logo (considerando este logo como obligatorio; en los esqueletos, a menudo, mostraremos el logo en vez de escribir el nombre de la mquina). Para asegurar la coherencia grfica, estos logos deben ser aproximadamente del mismo tamao (por ejemplo unos 25 pixels x 25 pixels):
VI.4.3. Los tipos de artculo De la misma manera definiremos ahora una lista de los tipos de artculo. Quedar asi:
No atribuimos un logo a estas palabras-clave (tu puedes decidir hacerlo, al igual que crear elementos grficos de navegacin). Un matiz (que veremos de manera ms evidente enseguida) sobre estas palabras en relacin con las palabras-clave de las mquinas: estas palabras se usarn por su nombre en los esqueletos; por lo tanto hay que elegir un nombre y mantenerlo (si, en el caso anterior, Playstation se podr cambiar despus por PS One sin dificultad, aqu no se puede cambiar Soluc. por Solucin sin tener que modificar los esqueletos). Fjate en que el grupo de palabras se llama Type_article, y no Tipo de artculo; ya que escribi- remos directamente este ttulo en los esqueletos, y los nombres con espacios, acentos y otros signos or- togrficos son menos manejables.
VI.5. Escribir los artculos Ahora es el momento de crear los primeros artculos. Esta etapa no slo nos va a permitir explicar el planteamiento en el tutorial, sino que es indispensable de todos modos para que se pueda trabajar sobre los esqueletos. N.B. Si ya has manipulado los esqueletos de SPIP, sabrs que no se puede trabajar realmente hasta que se ha publicado al menos un artculo. Incluso aconsejamos que, mientras se reali- za la interfaz grfica, se escriba el mximo nmero de artculos posible, con varios artculos por seccin, varias secciones... e incluso artculos de diferente tamao, con o sin antettulo y subttulo, con o sin introduccin, descriptivo... Cuanto ms numerosos y diferentes en forma- to sean estos artculos, mejor se podr crear una interfaz flexible (es decir, adaptada a to- dos los casos posibles de artculo). Naturalmente, para las pruebas de interfaz, estos artcu-
- Pgina 88 de 114 - los pueden ser realizados con texto aleatorio (copiar-pegar artculos tomados de Internet, caracteres sin sentido, latinajos...). VI.5.1. Una seccin por juego Habamos decidido que todos los artculos relativos a un juego se agrupan en una misma seccin. Por lo tanto, antes de escribir el primer artculo dedicado a un juego, hace falta crear una seccin que lleve el nombre de ese juego (para los siguientes artculos, evidentemente se pondrn en la misma seccin). La seccin va a desempear un papel muy importante: es ella quien da el nombre del juego, y pro- porciona el logo, para todos los artculos que contiene. Por ejemplo, vamos a crear una seccin Resi- dent Evil: Code Veronica y vamos a atribuirle un logo. Desde ahora, cuando introduzcamos un artculo que contenga la solucin del juego en esta seccin, no hace falta que el artculo recuerde el nombre del juego (el artculo se llamar simplemente Solucin completa), y no ser obligatorio atribuirle un logo. Vamos a situarnos en la seccin: Accin/aventura | Survival horror y vamos a crear una nueva subseccin titulada Resident Evil: Code Veronica. Pondremos una descripcin para esta seccin, presentando la trama general del juego. Para finalizar, utilizamos una captura de pantalla para crear el logo de la seccin. N.B. Estos logos de seccin despus sern muy utilizados para obtener la interfaz grfica del si- tio. Nuestro consejo es elegir arbitrariamente (en funcin de las exigencias grficas) un for- mato nico para todos los logos. Esto facilitar la creacin de una interfaz coherente. Elegi- remos por ejemplo que todos los logos de las secciones tengan 120 x 160 pixels. Esto nos da:
VI.5.2. La prueba completa del juego! Con esta seccin creada, ya podemos escribir nuestro primer artculo sobre este juego. N.B. Subrayemos aqu el primer inconveniente de este sitio: es necesario esperar (y explicar esto a los dems participantes del sitio) a crear una seccin antes de que se pueda escribir el primer artculo sobre un juego. Est claro que la accin natural sera escribir el artculo direc- tamente en la seccin Survival horror, y ponerle como ttulo (o como antettulo) el nombre del juego. Esto puede ser conveniente para un sitio ms sencillo (que trate de una sola m- quina, que no tenga nada ms que pruebas o soluciones...). Pero, como estamos interesados en un sitio ms ambicioso, esto nos lleva a un mayor formalismo en la estructuracin. Para empezar, basta con escribir el texto, integrar las imgenes... nada fuera de lo normal. Ahora, atencin, hay dos puntos que se deben determinar de inmediato, y a los que es necesario atenerse sistemticamente en lo sucesivo: se indica el nombre del juego en las cajas del propio artculo? (en ttulo, antettulo, subttulo...) es obligatoria la descripcin? Esto determina la forma en que trataremos los esqueletos a continuacin. Puedes elegir cualquiera de las posibilidades, bastar con realizar despus tus esqueletos en consecuencia. En los ejemplos que se darn en este tutorial, hemos decidido que el propio artculo no indicar el nombre del juego (ni en el ttulo, ni en los ante/subttulos); el nombre se tomar sistemticamente de la seccin que contiene el artculo. Y en nuestros esqueletos, usaremos el #DESCRIPTIF; donde sea aconsejable ponerlo; si no, el espacio reservado a la descripcin estar vaco. Por ltimo, no es obligatorio atribuir un logo al propio artculo, ya que tomaremos el de la seccin. Pero si se decide poner un logo en el artculo, aconsejamos respetar el formato adoptado para los logos de las secciones (en nuestro caso 120 x 160 pixels).
- Pgina 89 de 114 - Aproximadamente, esto nos dar:
El ttulo del artculo no es el nombre del juego, sino un titular (por ejemplo: El retorno de Claire Redfield); existe una descripcin; slo usamos la fecha de publicacin en lnea (y no la fecha de publicacin anterior - incluso hemos desactivado esta posibilidad en la Configuracin precisa); esta fecha corresponde bien a la de publicacin del artculo, o bien a la de actualizacin del sitio Web (la gestin de las fechas de sa- lida comercial del juego se tratar ms adelante); con los autores, trabajaremos tambin de la manera habitual: el autor es el redactor que ha escrito el artculo en el sitio (las pruebas, las noticias...). Aqu no intentes indicar un autor del juego u otra sutileza. VI.5.3. Para qu mquina(s)? Qu tipo de artculo? Ahora queda indicar a qu mquina(s) se refiere el artculo, y de qu tipo de artculo se trata. Para ello, vamos a utilizar los mens desplegables Aadir una palabra clave. Vemos que es bien prctico...
Para este juego, consideraremos que la prueba sirve igual para la versin Dreamcast que para la versin Playstation 2. Si se considera que ambas versiones son suficientemente diferentes, tambin se puede escribir una prueba distinta para cada mquina, bastar con seleccionar slo una mquina por ar- tculo. En cuanto al tipo de artculo, se trata de una prueba. Esto nos da:
- Pgina 90 de 114 - Nuevamente hay que subrayar la necesidad de formalizar estrictamente la manera de publicar un ar- tculo. Antes de cualquier publicacin, es necesario comprobar la presencia de las palabras clave necesa- rias. No es realmente obligatorio indicar la mquina (el artculo aparecer igual en el sumario); pero su ausencia har la interfaz incoherente (ciertos artculos indican las mquinas, otros no) y el artculo no estar referenciado en la navegacin por mquina. Es posible indicar varias mquinas para un mismo artculo. El tipo de artculo es indispensable. A continuacin veremos que se hace un uso intensivo de los ti- pos de artculo. En caso de olvido, hay riesgo de que el artculo pura y simplemente no aparezca en el si- tio pblico. Para un artculo, slo hay que indicar un tipo de artculo. Una vez hecho esto, crea otros artculos, con diferentes formatos, algunos con varias mquinas, con diferentes tipos de artculo... En particular, intenta crear una seccin completa (con todos los tipos de artculo), y enriquece las secciones cercanas a Survival horror, de forma que se pueda trabajar sobre los esqueletos con secciones representativas de la actividad del sitio. Piensa tambin en modificar las fe- chas de publicacin, para poder probar la clasificacin de los artculos y secciones. Lo ideal es, en esta situacin, crear el mximo de artculos en todo el sitio, con fechas de publicacin que cubran un periodo bastante largo.
VI.6. Primera versin del esqueleto de los artculos Tenemos ya un sitio muy estructurado en el espacio privado y numerosos artculos publicados. Ya es hora de plantearnos la creacin del primer esqueleto. Muchas webmisstres empiezan esta etapa trabajando a partir de un esqueleto estndar que modifi- can poco a poco. Por nuestra parte no solo por las necesidades de este tutorial sino tambin por costumbre, vamos a construir los esqueletos a partir de un documento totalmente vaco. Etapa por etapa, los diferentes bu- cles van aadindose y al final se aade la interfaz grfica (en un principio cdigo HTML extremadamen- te simple, la construccin grfica con tablas se aadir en la ltima etapa). Este mtodo presenta varias ventajas: Permite comprender bien la propia construccin intelectual durante el desarrollo de una pgina: qu bucle depende de qu otro, etc; Prescindiendo inicialmente de los elementos interfaz grfica es ms sencillo percibir la jerarqua de las informaciones de la pgina; de este modo la interfaz grfica se desprende de ella de una manera ms coherente; El cdigo HTML generado es a menudo ms claro: las redundancias son menos numerosas (proble- ma frecuente al copiar y pegar cdigo HTML). En el texto siguiente utilizaremos pues cdigo HTML muy simple (sobre todo sin tablas). La creacin de una interfaz grfica ms elaborada al final del proceso, se deja a eleccin personal. Voluntariamente construiremos el cdigo etapa por etapa. Para evitar pginas interminables, cuando enriquezcamos un bucle existente, no reproduciremos de manera ntegra la pgina sino nicamente la parte que nos interesa. Para que sea ms fcil nos referiremos a menudo al nombre de los bucles ya existentes. VI.6.1. La pgina base Empecemos pues con un fichero "article.html" virgen. Extremadamente simple, he aqu la estructura mnima de un artculo sin ningn elemento de nave- gacin: <html> <title>[#NOM_SITE_SPIP] <BOUCLE_titre(ARTICLES){id_article}>#TITRE</BOUCLE_titre></title> </head>
- Pgina 91 de 114 - [(#LOGO_ARTICLE_RUBRIQUE|right)] [<b>(#CHAPO|justifier)</b>] [(#TEXTE|justifier)]
[<p align="right" align='justify'>(#LESAUTEURS)]
[<hr>(#PS)] [<hr>(#NOTES)]
</BOUCLE_principale> </blockquote> </body> </html> Fcil: El bucle BOUCLE_titre permite publicar el ttulo del artculo en la cabecera de la pgina; El bucle BOUCLE_principale contiene ntegramente toda la pgina; permite situar los otros bucles en el interior del artculo seleccionado. VI.6.2. Recuperar la informacin sobre el juego El esqueleto precedente sera una buena base para un webzine estndar (toda la informacin necesa- ria est en el artculo); pero, en nuestro caso, hay una informacin esencial que no se encuentra en el artculo: de que juego se trata? En efecto, hemos decidido que el ttulo del juego no se encuentra en el artculo sino en la seccin que contiene este artculo. Podramos contentarnos con el bucle HIERARCHIE (JERARQUA); pero aqu preferimos acostumbrarnos a lo que haremos sistemticamente en nuestros ejemplos: es necesario pa- sar del artculo a su seccin para recuperar el nombre del juego. (Es el mismo principio para recuperar el logo; con la diferencia de que la etiqueta #LOGO_RUBRIQUE_ARTICLE efecta automticamente esta operacin.) Ser pues una constante en este sitio web: los bucles ARTICLES contienen a menudo un bucle RU- BRIQUES que permite "subir un paso", es decir, recuperar el ttulo del juego. Este ser el caso en las pginas de las secciones, al igual que en la pgina de sumario. Retomemos el principio del cdigo, al comienzo del BOUCLE_principale: <BOUCLE_principale(ARTICLES){id_article}> <BOUCLE_rubrique(RUBRIQUES){id_rubrique}> <h1>#TITRE</h1> </BOUCLE_rubrique> ... Fjate que el #TITRE (TITULO) de la seccin se publica con el tamao mximo (h1); lgico, puesto que se trata del ttulo del juego. El ttulo de la seccin, que habitualmente es slo un elemento de nave- gacin en el sitio, es aqu la informacin principal del artculo. Con el fin de obtener un esbozo de navegacin, mostramos la jerarqua. Vamos a iniciar esta jerar- qua desde la seccin que contiene la subseccin actual, dado que lo que nos interesa es la lista de las categoras de juegos (y ya sabemos el nombre de la ltima subseccin: el ttulo del juego). Nos coloca- mos pues en el interior del BOUCLE_rubrique, aadimos una BOUCLE_rub_parent (que permite "su- bir un paso" en la jerarqua) y a partir de ah llamamos a la jerarqua: <BOUCLE_rubrique(RUBRIQUES){id_rubrique}> <BOUCLE_rub_parent(RUBRIQUES){id_enfant}> <BOUCLE_hierarchie(HIERARCHIE){id_rubrique}{": "}> <a href="#URL_RUBRIQUE">#TITRE</a> </BOUCLE_hierarchie> </BOUCLE_rub_parent> <h1>#TITRE</h1> </BOUCLE_rubrique> Dejemos esta pgina article.html en este punto. Nada de complicado por el momento. Falta la gestin de las palabras clave, y los enlaces entre los artculos de una misma seccin (es decir, los que tratan sobre un mismo juego). Un solo detalle: hay que subir a la seccin que contiene el artculo para obtener el ttulo del juego, y es necesario de nuevo "subir un paso" (la seccin que contiene la seccin que contiene el juego) antes de poner en mar.
VI.7. La pgina de las secciones Comenzaremos con un fichero rubrique.html virgen.
- Pgina 92 de 114 - La primera versin de nuestro fichero ser muy sencilla. Integramos todo el BOUCLE_hierarchie, que aqu no tiene ninguna particularidad. <html> <title>[#NOM_SITE_SPIP] <BOUCLE_titre(RUBRIQUES){id_rubrique}>#TITRE</BOUCLE_titre></title> </head> <body> <blockquote> <BOUCLE_principale(RUBRIQUES){id_rubrique}> <BOUCLE_hierarchie(HIERARCHIE){": "}> <a href="#URL_RUBRIQUE">#TITRE</a> </BOUCLE_hierarchie> <h1>#TITRE</h1> [(#LOGO_RUBRIQUE|right)] [(#TEXTE|justifier)] [<hr>(#NOTES)] </BOUCLE_principale> </blockquote> </body> </html> Si instalas esta pgina en tu sitio, no va a ser nada espectacular... VI.7.1. Los artculos que contiene esta seccin Aadimos la lista de los artculos que contiene esta seccin. Situamos el bucle BOUCLE_articles al final del BOUCLE_principale (despus del texto y sus notas). ... <B_articles>Les articles : <ul> <BOUCLE_articles(ARTICLES){id_rubrique}> <li> <a href="#URL_ARTICLE">#TITRE</a> </BOUCLE_articles> </ul> </B_articles> </BOUCLE_principale> ... En realidad, este bucle no presenta gran inters: muestra los artculos sin un orden particular (no tiene en cuenta las palabras clave de tipo de artculos). Por el momento, lo instalamos tal cual, con el fin de tener una primera posibilidad de navegacin por el sitio. Retomaremos esta parte un poco ms ade- lante en el tutorial. VI.7.2. Las subsecciones Ahora instalamos el bucle de las subsecciones (despus del bucle BOUCLE_articles): ... <B_sous_rubriques>Les sous-rubriques : <ul> <BOUCLE_sous_rubriques(RUBRIQUES){id_parent}{par titre}> <li> <a href="">#TITRE</a> </BOUCLE_sous_rubriques> </ul> <B_sous_rubriques> </BOUCLE_principale> ... Y aqu se encuentra el primer problema verdadero de nuestro tutorial: las secciones que definen los tipos de juego estn mezcladas con las secciones dedicadas directamente a los juegos. Por ejemplo, en la estructura de demostracin, la seccin Accin/aventura contiene a la vez, pre- sentadas exactamente de la misma manera: dos subsecciones temticas (Exploracin y enigmas y Survival horror), y dos secciones de juegos (Devil May Cry y Soul Reaver 2). La presentacin del bucle anterior nos da la lista: Devil May Cry, Exploracin y enigmas, Soul Reaver 2, Survival horror.
- Pgina 93 de 114 - Est claro que es completamente necesario distinguir con claridad las secciones categoras de jue- gos (tiles esencialmente para la navegacin) y las secciones de juegos (que nos dan el ttulo de los juegos). Para resolver esta dificultad, vamos a usar el sistema de los bucles. No har falta ningn truco in- formtico, slo ser necesario entender bien la lgica del sitio y la lgica de los bucles. La lgica del sitio: una seccin Juego es una seccin que contiene artculos; una seccin de cate- gora de juegos no contiene artculos directamente. Es la definicin de nuestro sitio: todo artculo rela- tivo a un juego est situado en una seccin que lleva el nombre del juego; de igual forma una seccin de categora de juego no contiene ms que subsecciones de categoras y secciones que llevan el nombre de los juegos; nunca artculos directamente (est bien claro?). Por ejemplo, en nuestro caso: Soul Reaver 2 y Devil May Cry contienen los artculos relacionados con estos juegos (pruebas, presentaciones, etc.); Survival horror y Exploracin y enigmas por definicin no contienen artculos. Si hay dos jue- gos en Survival horror, los artculos relacionados estn en las subsecciones que lleven el nombre de esos juegos, nunca directamente en la seccin Survival.... El objetivo de la maniobra consistir,por lo tanto, en separar las secciones sin artculos de las seccio- nes con artculos. Y lo ms sencillo es hacer dos bucles diferentes. VI.7.3. Las secciones sin artculos Comencemos por las subsecciones que no contienen artculos (es decir, las grandes categoras de ti- po Survival horror, Exploracin...). Modificamos el bucle BOUCLE_sous_rubriques as: <BOUCLE_sous_rubriques(RUBRIQUES){id_parent}{par titre}> <BOUCLE_sans_articles(ARTICLES){id_rubrique}> </BOUCLE_sans_articles> <h3><a href="#URL_RUBRIQUE">#TITRE</a></h3> <//B_sans_articles> </BOUCLE_sous_rubriques> El principio de este truco es sencillo: dentro del bucle BOUCLE_sous_rubriques, se inserta un nuevo BOUCLE_sans_articles, que re- cupera los artculos que contiene aquel. Fjate que el interior del BOUCLE_sans_articles est va- co: si las subsecciones contienen artculos, estos no se muestran (el bucle slo sirve para controlar su presencia); el #TITRE del BOUCLE_sous_rubriques se inserta en el texto opcional sin del BOU- CLE_sans_articles. Justo antes de <//B_sans_articles>. As, el ttulo de la seccin slo se muestra si BOUCLE_sans_articles no contiene ningn artculo (es decir, si el propio BOU- CLE_sous_rubriques no contiene ningn artculo). El bucle BOUCLE_sous_rubriques, recupera absolutamente todas las secciones (incluida la de los juegos). Pero el ttulo #TITRE (con el enlace de hipertexto) slo se muestra si el BOU- CLE_sans_articles est vaco. VI.7.4. Las secciones de juego (con artculos) Aplicamos el principio exactamente a la inversa en un BOUCLE_jeux (que podemos situar justo an- tes del BOUCLE_sous_rubriques). <BOUCLE_jeux(RUBRIQUES){id_parent}{par titre}> <B_avec_articles> <h4><a href="#URL_RUBRIQUE">#TITRE</a></h4> [(#LOGO_RUBRIQUE|right)] <ul> <BOUCLE_avec_articles(ARTICLES){id_rubrique}> <li><a href="#URL_ARTICLE">#TITRE</a> </BOUCLE_avec_articles> </ul> </B_avec_articles> </BOUCLE_jeux> Esta vez, el #TITRE de la seccin est situado en el texto condicional anterior; se muestra el #LOGO_RUBRIQUE (evidentemente, al final, harn falta unas bonitas tablas para evitar las superposi- ciones desafortunadas). Y, de paso, se aprovecha para mostrar la lista de los artculos del BOU- CLE_avec_articles. El BOUCLE_jeux y el BOUCLE_sous_rubriques son en principio totalmente idnticos: sus criterios son los mismos. Dentro de estos bucles, por lo tanto, se tratan las mismas secciones. En cambio, los bu- cles BOUCLE_avec_articles y BOUCLE_sans_articles sirven de filtros: toman cada una de las sec- ciones de BOUCLE_jeux y BOUCLE_sous_rubriques, y verifican la presencia o no de artculos.
- Pgina 94 de 114 - Se hubiera podido usar aqu el criterio {doublons}? No, porque el primer bucle mostrado (BOU- CLE_sous_rubriques) trata todas las subsecciones (solamente el ttulo de estas subsecciones se mues- tra o no segn los casos). Atribuirle un criterio {doublons} impedira tratar despus ninguna de estas subsecciones. A continuacin, el BOUCLE_jeux asociado a este criterio de {doublons} intentara recu- perar todas las subsecciones que no hayan sido tratadas por el primer bucle; pero todas las subseccio- nes han sido tratadas. El BOUCLE_jeux no podra mostrar absolutamente nada. Dejaremos ahora esta pgina rubrique.html para retomarla ms tarde.
VI.8. Las palabras clave en los artculos Volvamos a nuestros artculos... Ahora vamos a aprovechar las palabras clave para determinar la o las mquinas a las que se refiere, para despus gestionar inteligentemente los enlaces hacia el resto de artculos relativos al mismo juego. VI.8.1. Las mquinas Es muy sencillo indicar qu mquinas estn relacionadas: se trata de una simple aplicacin del bucle (MOTS). Introducimos el siguiente bucle en el artculo (por ejemplo, entre el #SOUSTITRE y la #DA- TE): <BOUCLE_machines(MOTS){id_article}{type=Machines}> [(#LOGO_MOT|left)] </BOUCLE_machines> Slo mostraremos el logo de la mquina. (Evidentemente, una vez terminado todo el proceso de creacin de los bucles, sera conveniente retocar la interfaz grfica...) VI.8.2. En la misma seccin, sobre el mismo juego Tampoco es mucho ms complicado mostrar el resto de artculos que contiene la misma seccin. Comenzamos por modificar la llamada del BOUCLE_principale con un {doublons}, para evitar que luego se cree un enlace hacia el artculo que ya se est viendo (esto no es que sea malo; pero no queda demasiado bien): <BOUCLE_principale(ARTICLES){id_article}{doublons}> Ahora podramos contentarnos simplemente con recuperar todos los artculos de la misma seccin (simplemente, con un bucle (ARTICLES){id_rubrique}{doublons}). Sin embargo, aqu queremos di- ferenciar claramente los tipos de artculo, no solamente para tener una interfaz ms clara, sino tambin para poder realizar enlaces y presentaciones diferentes segn el caso. Comencemos por un bucle para las otras pruebas del mismo juego. Siempre insertaremos este bucle dentro del BOUCLE_principale; por ejemplo justo despus de #NOTES. <B_tests><p>Otras pruebas de este juego: <ul> <BOUCLE_tests(ARTICLES){id_rubrique}{titre_mot=Test}{doublons}> <li><a href="#URL_ARTICLE">#TITRE</a> </BOUCLE_tests> </ul> </B_tests> (Para comprobar el funcionamiento de este bucle, crea varios artculos de tipo Test en la misma seccin. Incluso puedes atribuirles mquinas diferentes: un test de la versin PC, un test de la versin Dreamcast, un test de la versin Playstation...) Como puedes constatar, es muy sencillo: se llama a los (ARTICLES) segn el criterio {id_rubrique} (es decir los artculos pertenecientes a la misma seccin); se aade la restriccin siguiente: el ttulo de una de las palabras clave asignadas a estos artculos debe ser Test (nota aqu lo importante que es respetar la eleccin inicial del nombre de la palabra clave, y no modificarla despus); el criterio {doublons} evita que se vea de nuevo el artculo principal. Los textos opcionales anterior y posterior (los <ul>...</ul>) slo sirven para la presentacin grfi- ca. N.B. Este bucle utiliza una caracterstica introducida en la versin SPIP 1.3: en un bucle (AR- TICLES), puedes seleccionar los artculos segn el ttulo de una palabra clave (con el criterio titre_mot), o segn un grupo de palabras (criterio type_mot). Sin embargo, este bucle no es suficiente: debido a que se trata de pruebas del mismo juego, pero en distintas mquinas, es necesario indicar a qu mquina se refiere. Basta con aadir un bucle de palabras
- Pgina 95 de 114 - (como el de ms abajo) dentro de este BOUCLE_tests y mostrar los logos correspondientes. De paso, aadimos la fecha de publicacin del artculo. El cdigo pasa a ser: <B_tests><p>Otras pruebas de este juego: <ul> <BOUCLE_tests(ARTICLES){id_rubrique}{titre_mot=Test}> <li> <BOUCLE_tests_machines(MOTS){id_article}{type=Machines}> [(#LOGO_MOT)] </BOUCLE_tests_machines> <a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)] </BOUCLE_tests> </ul> </B_tests> Lo mismo se hace para los previos, las soluciones y los trucos: <B_previews><p>Los anlisis previos de este juego: <ul> <BOUCLE_previews(ARTICLES){id_rubrique}{titre_mot=Preview}> <li> <BOUCLE_previews_machines(MOTS){id_article}{type=Machines}> [(#LOGO_MOT)] </BOUCLE_previews_machines> <a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)] </BOUCLE_previews> </ul> </B_previews>
<B_soluces><p>Las soluciones de este juego: <ul> <BOUCLE_soluces(ARTICLES){id_rubrique}{titre_mot=Soluce}> <li> <BOUCLE_soluces_machines(MOTS){id_article}{type=Machines}> [(#LOGO_MOT)] </BOUCLE_soluces_machines> <a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)] </BOUCLE_soluces> </ul> </B_soluces>
<B_astuces><p>Los trucos y atajos de este juego : <ul> <BOUCLE_astuces(ARTICLES){id_rubrique}{titre_mot=Astuces}> <li> <BOUCLE_astuces_machines(MOTS){id_article}{type=Machines}> [(#LOGO_MOT)] </BOUCLE_astuces_machines> <a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)] </BOUCLE_astuces> </ul> </B_astuces> (Estos tres bucles funcionan exactamente de la misma forma que el BOUCLE_tests.) Faltan las noticias... Aqu vamos a proceder de forma muy diferente. Como las noticias generalmente son una informacin corta (anuncio de un retraso, rumores...), ser ventajoso presentarlas todas re- unidas en una misma pgina (es posible que no; pero, por necesidades de este tutorial, digamos que es mejor). Este trocito de cdigo se encargar del asunto: <BOUCLE_news(ARTICLES){id_rubrique}{titre_mot=News}{doublons}{par date}{inverse}{0,1}> <p><a href="news_jeu.php3?id_rubrique=#ID_RUBRIQUE">Las noticias de este juego</a> - ltima actualizacin: [(#DATE|affdate)] </BOUCLE_news> El truco que permite obtener un cdigo tan corto: para empezar, no nos importa a qu mquina se refiere; as se suprime un bucle; el BOUCLE_news recupera el ltimo artculo ({par date}{inverse}{0,1}) asociado con la pala- bra clave News. Un slo artculo, es ms que suficiente para saber si hay una pgina dedicada a
- Pgina 96 de 114 - las noticias; y cuando se recupera la noticia ms reciente, mostrar su fecha equivale a anunciar la ltima actualizacin de la pgina de las noticias... De manera ms elegante, se hubiese podido realizar un BOUCLE_news vaco e insertar el enlace de hipertexto en el texto opcional del bucle. Importante: el enlace de hipertexto apunta hacia una pgina news_jeu.php3, con la id_rubrique de la seccin actual. A continuacin tendremos que crear el esqueleto corres- pondiente. VI.8.3. Los juego de la misma categora Para terminar, queremos mostrar los juego de la misma categora (por ejemplo, los otros juego del gnero Survival horror). Para empezar, vamos a utilizar el mtodo que consiste en subir un paso (para pasar de la seccin del artculo a la seccin de la categora de este juego). Luego vamos a recuperar el mtodo utilizado en las secciones para mostrar por separado las secciones que contengan artculos (es decir las secciones di- rectamente dedicadas a un juego). El cdigo es: <BOUCLE_rub_act(RUBRIQUES){id_rubrique}{doublons}> <BOUCLE_jeux(RUBRIQUES){meme_parent}{doublons}{par date}{inverse}> <B_avec_articles> <h4><a href="#URL_RUBRIQUE">#TITRE</a></h4> <BOUCLE_avec_articles(ARTICLES){id_rubrique}{age < 90}> </BOUCLE_avec_articles> </BOUCLE_jeux> </BOUCLE_rub_act> Las sutilezas de este cdigo: el BOUCLE_rub_act (que devuelve la seccin actual) contiene un {doublons} para evitar que ahora se vea el juego principal; lgicamente, el BOUCLE_jeux contiene tambin un {doublons}; cuidado: multiplicar los criterios doublons puede crear dificultades. Si duplicas estos bucles en la misma pgina para otro uso, ten cuidado de evitar este criterio; el BOUCLE_avec_articles slo recupera artculos con una antigedad menor de 3 meses (90 das). Efectivamente, aqu no queremos mostrar todos los juegos de la misma categora, sino slo los que se han modificado recientemente.
VI.9. Las palabras clave en las secciones Volvamos al fichero rubrique.html. Lo habamos dejado con un malvado BOUCLE_articles, sin inte- rs para nuestro sitio, ya que no clasificaba los artculos por categoras. La cosa marcha bien: acabamos de programar esa funcin para los artculos! Basta, por lo tanto, con copiar y pegar el bloque que nos interesa, insertarlo en lugar del BOU- CLE_articles (el cual, por lo tanto, desaparece), y ver si hace falta modificarlo. Esto nos da: <BOUCLE_les_articles(RUBRIQUES){id_rubrique}> <B_tests><p>Las pruebas de este juego: <ul> <BOUCLE_tests(ARTICLES){id_rubrique}{titre_mot=Test}> <li> <BOUCLE_tests_machines(MOTS){id_article}{type=Machines}> [(#LOGO_MOT)] </BOUCLE_tests_machines> <a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)] </BOUCLE_tests> </ul> </B_tests>
<B_previews><p>Los previos de este juego: <ul> <BOUCLE_previews(ARTICLES){id_rubrique}{titre_mot=Preview}> <li> <BOUCLE_previews_machines(MOTS){id_article}{type=Machines}> [(#LOGO_MOT)] </BOUCLE_previews_machines> <a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)] </BOUCLE_previews>
- Pgina 97 de 114 - </ul> </B_previews>
<B_soluces><p>Las soluciones de este juego : <ul> <BOUCLE_soluces(ARTICLES){id_rubrique}{titre_mot=Soluce}> <li> <BOUCLE_soluces_machines(MOTS){id_article}{type=Machines}> [(#LOGO_MOT)] </BOUCLE_soluces_machines> <a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)] </BOUCLE_soluces> </ul> </B_soluces>
<B_astuces><p>Los trucos y atajos de este juego: <ul> <BOUCLE_astuces(ARTICLES){id_rubrique}{titre_mot=Astuces}> <li> <BOUCLE_astuces_machines(MOTS){id_article}{type=Machines}> [(#LOGO_MOT)] </BOUCLE_astuces_machines> <a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)] </BOUCLE_astuces> </ul> </B_astuces>
<BOUCLE_news(ARTICLES){id_rubrique}{titre_mot=News}{par date}{inverse}{0,1}> <p><a href="news_jeu.php3?id_rubrique=#ID_RUBRIQUE">Las noticias de este juego</a> - ltima actualizacin: [(#DATE|affdate)] </BOUCLE_news> </BOUCLE_les_articles> Las modificaciones aportadas: no hace falta cambiar la llamada a {id_rubrique}, porque ya era en esta seccin en lo que nos ba- samos para los artculos; suprimimos todos los {doublons}, ya que aqu no son de ninguna utilidad (no hay ningn artculo que ya se haya mostrado); por eso no hay que correr el riesgo de tener conflictos con futuros desarrollos de nuestra pgina si no sirven para nada; el conjunto se instala en un gran BOUCLE_les_articles. Qu hace este bucle? Estrictamente na- da: devuelve la seccin en la que nos encontramos ya. Pero nos ser til despus... El otro punto oscuro de nuestra pgina era el BOUCLE_jeux, en el cual el BOUCLE_avec_articles aprovechaba su paso para mostrar la lista de artculos de la subseccin sin ordenar. Claro que lo que acabamos de hacer ms arriba es ordenar los artculos de una seccin. Por lo tanto, modifiquemos el BOUCLE_jeux as: <BOUCLE_jeux(RUBRIQUES){id_parent}{par titre}> <B_avec_articles> <h4><a href="#URL_RUBRIQUE">#TITRE</a></h4> [(#LOGO_RUBRIQUE|right)] <ul> <BOUCLE_avec_articles(ARTICLES){id_rubrique}{0,1}> <BOUCLE_rec(boucle_les_articles)></BOUCLE_rec> </BOUCLE_avec_articles> </ul> </B_avec_articles> </BOUCLE_jeux> El BOUCLE_avec_articles ahora se ejecuta una sola vez (sobre un solo artculo), lo que es suficien- te para saber si la seccin contiene un artculo. Se ve que aparece un BOUCLE_repeter_articles: se trata de un bucle que reproduce exactamente el comportamiento del BOUCLE_les_articles, desde el punto donde se encuentra (es decir que no arranca desde la seccin principal, sino desde la subseccin). El inters de limitar ahora el BOUCLE_avec_articles a un elemento nico est claro: sin este lmite, el BOUCLE_rec se ejecutara tantas veces como artculos haya en la subseccin. Evidentemente, el resultado grfico de este ejemplo es horroroso: demasiado recargado, poco claro. Digamos que era interesante utilizar un bucle recursivo en este tutorial...
- Pgina 98 de 114 - VI.10. La interfaz de las noticias VI.10. Todas las noticias sobre un juego En los esqueletos de los artculos y de las secciones, hemos insertado un enlace hacia una pgina news_jeu.php3, que debe presentar a la vez todas las noticias relativas a un juego. Hagamos este esqueleto... Para empezar (segn el principio de parejas de ficheros para manejar los esqueletos de SPIP), vamos crear el fichero de llamada news_jeu.php3. Basta con copiar, por ejemplo el fichero arti- cle.php3 (proporcionado con SPIP) y de modificar algunos elementos. Este es el contenido del fichero news_jeu.php3: <? $fond = "news_jeu"; $delais = 24 * 3600; include ("inc-public.php3"); ?> El fichero de esqueleto utilizado ser entonces news_jeu (.html, o una de las variantes espec- ficas para una seccin si es necesario, como news_jeu-52.html...). Digamos que el esqueleto ser news_jeu.html. Este fichero se usa con una variable de seccin, ya que es justo la seccin la que contiene el nombre del juego y la totalidad de los artculos relativos al juego. Visto y no visto, vamos a copiar el contenido del fichero rubrique.html y a suprimir lo que no nos hace falta: <html> <title>[#NOM_SITE_SPIP] <BOUCLE_titre(RUBRIQUES){id_rubrique}>#TITRE</BOUCLE_titre></title> </head>
<body> <blockquote> <BOUCLE_principale(RUBRIQUES){id_rubrique}> <BOUCLE_hierarchie(HIERARCHIE){": "}> <a href="#URL_RUBRIQUE">#TITRE</a> </BOUCLE_hierarchie> <h1><a href="#URL_RUBRIQUE">#TITRE</a></h1> [(#LOGO_RUBRIQUE|right)] </BOUCLE_principale> </blockquote> </body> </html> Esto muestra el ttulo de la seccin (es decir el nombre del juego), el logo de la seccin, y la jerar- qua. La nica modificacin: el ttulo del juego es un enlace de hipertexto para volver a la pgina princi- pal (hasta el acabado grfico del sitio, puede ser preferible un enlace ms discreto). Lo que nos falta por hacer: insertar un nico bucle que mostrar todos los artculos de esta seccin ligados a la palabra clave News. Dentro del BOUCLE_principale, bajo el #LOGO_RUBRIQUE, bas- ta con poner: <BOUCLE_news(ARTICLES){id_rubrique}{titre_mot=News}{par date}{inverse}> <hr><h3>#TITRE</h3> [(#DATE|affdate)] <BOUCLE_news_machines(MOTS){id_article}{type=Machines}> [(#LOGO_MOT|right)] </BOUCLE_news_machines> [(#TEXTE|justifier)] [<p><font size=2>(#PS)</font>] [<p>(#NOTES)] </BOUCLE_news> El BOUCLE_news hace todo el trabajo: muestra el ttulo de cada noticia, su texto, y si es necesario el post-scriptum y las notas de pie de pgina. Como es habitual, el BOUCLE_news_machines muestra el logo de las mquinas relacionadas con la noticia. Consideremos terminada nuestra pgina de noticias. Naturalmente, se le podrn aadir enlaces hacia los artculos de la misma seccin (las pruebas, los previos, las soluciones...).
- Pgina 99 de 114 -
VII. Tucos y utilidades Algunos ejemplos de bucles, y otros trozos de esque- letos para aprender a usar el lenguaje de SPIP resolvien- do casos particulares.
- Pgina 100 de 114 - VII.1. Ver el nmero de mensajes del foro unido a un artculo Esta es una pequea acrobacia. A primera vista, es muy sencillo saber el nmero de elementos de un bucle: basta con utilizar la bali- za #TOTAL_BOUCLE de SPIP. Esta baliza no slo se puede usar dentro del bucle; sino tambin (y es el nico caso) en el texto condicional anterior (el texto que se muestra antes del bucle si este contiene al- gn elemento) y el texto condicional alternativo (el texto que se muestra si el bucle est vaco). Debemos crear un bucle de tipo FORUMS (vase cap. II.9. El bucle FORUMS (foros)), unido a un artculo, de forma que podamos contar el nmero de resultados. Primera sutileza: queremos todos los mensajes de los foros unidos al artculo, contando las respues- tas a los mensajes, las respuestas a las respuestas... Un bucle sencillo de tipo: <BOUCLE_forum(FORUMS){id_article}> contiene nicamente los mensajes que responden al artculo. Habitualmente se incluye un segundo bucle dentro del mismo, para acceder a las respuestas a estos mensajes... Aqu, deseamos que el bucle seleccione absolutamente todos los mensajes unidos al artculo, sin tener en cuenta su jerarqua. Para ello, hace falta especificar el criterio plat que sirve para mostrar un foro sin ordenar por hilos. Lo que nos da: <BOUCLE_forum(FORUMS){id_article}{plat}> Veamos ahora cmo contar los elementos que contiene. La dificultad, aqu, es que precisamente este bucle no debe mostrar nada! No muestra el ttulo de los mensajes, se evitar incluso que haga aparecer espacios o saltos de lnea (si no, tu pgina HTML contendr decenas de lneas vacias, poco elegantes). El interior del bucle no muestra, por lo tanto, rigurosamente nada; pero antes del bucle se debe mostrar el nmero de resultados. Una sutileza que hay que comprender bien: el texto condicional alternativo se ve si el bucle no mues- tra nada; por lo tanto, se ve incluso cuando el bucle selecciona los elementos (en este caso, los mensa- jes del foro) pero no tiene ninguno que mostrar. Por lo tanto, debemos situar #TOTAL_BOUCLE en el texto condicional alternativo. Si no hay ningn mensaje en el foro unido al artculo, #TOTAL_BOUCLE estar vaco, y entonces no har falta mostrar el texto que lo contiene (hay N contribuciones al foro) en este caso. <BOUCLE_nb_forums(FORUMS){id_article}{plat}></BOUCLE_nb_forums> [Hay (#TOTAL_BOUCLE) contribucin(es) al foro.] <//B_nb_forums>
VII.2. Presentar los resultados de una bsqueda por sectores Es suficiente con incluir el bucle de bsqueda dentro de un bucle de tipo secciones, que seleccione las secciones de primer nivel; en el bucle de bsqueda, aadimos el criterio id_secteur para limitar- nos al sector actual. <BOUCLE_secteurs(RUBRIQUES){racine}> <B_recherche> <b>#TITRE</b> <ul> <BOUCLE_recherche(ARTICLES){recherche}{id_secteur}{par points}{inverse}{0,5}> <li><a href="#URL_ARTICLE">#TITRE </a> </BOUCLE_recherche> </ul><hr> </B_recherche> </BOUCLE_secteurs> Destacamos que el ttulo del sector slo se ver si la bsqueda devuelve algn resultado para este sector. Por otra parte, para cada sector no se ven ms que los cinco artculos mejor clasificados, en or- den decreciente de pertinencia. Pero ten cuidado, como la bsqueda se efecta tantas veces como sectores haya en tu sitio web, existe el riesgo de que el clculo sea lento.
- Pgina 101 de 114 - VII.3. No mostrar los artculos publicados hace ms de un ao Esto se consigue con el criterio age, que es la antigedad del artculo (calculada a partir de su fe- cha de puesta en lnea en el espacio pblico) en nmero de das. As, para conservar todos los artculos de la seccin actual desde hace menos de un ao, el criterio de seleccin que nos interesa usar es: age. <B_articles_recents> <ul> <BOUCLE_articles_recents(ARTICLES){id_rubrique}{age < 365}{par titre}> <li>#TITRE</li> </BOUCLE_articles_recents> </ul> </B_articles_recents> Para considerar el tiempo desde la fecha de su primera publicacin, en lugar de la fecha de puesta en lnea, hay que usar el criterio age_redac en lugar de age. La antigedad se indica en nmero de d- as. Fjate en que esta manipulacin se puede realizar con todo tipo de datos que tengan una fecha aso- ciada (breves, foros...).
VII.4. Mostrar los ltimos artculos de los redactores de cada seccin SPIP te ofrece, por omisin, una pgina de autores que hace posible mostrar la lista de auto- res/redactores que participan en tu sitio web, al igual que sus ltimos artculos. Pero surge un problema cuando hay bastantes redactores que participan activamente en el sitio. En este caso la pgina de autores acaba siendo interminable. Sin embargo existe un medio de mostrar los ltimos envos de todos y cada uno de tus auto- res/redactores. Cmo se hace? Para empezar, se van a crear dos ficheros: un fichero myauteur.php3 y un fichero myauteur.html VII.4.1. Creacin del fichero myauteur.php3 En el fichero myauteur.php3 se escribe el siguiente cdigo: <?php $fond = "myauteur"; $delais = 24*3600; include ("inc-public.php3"); ?> Creacin del fichero myauteur.html En el fichero myauteur.php3 introducir los siguientes cdigos: Justo despus de la baliza <body>, insertar <BOUCLE_principale(AUTEURS){id_auteur}{unique}> Justo antes de la baliza </body>, insertar </BOUCLE_principale> Este es el cdigo que se escribe en el cuerpo de la pgina HTML (no se puede determinar la seccin porque, por omisin, la autora no est asociada con una seccin, sino con un artculo, el cdigo puede parecer algo extravagante; pero devolver la seccin relativa al artculo): Cdigo para mostrar el ltimo artculo <B_appel_article> ltimo artculo escrito por <BOU- CLE_nom_auteur(AUTEURS){id_auteur}>[(#NOM)]</BOUCLE_nom_auteur><br> <BOUCLE_appel_article(ARTICLES){id_auteur}> <BOUCLE_appel_rubrique_article(RUBRIQUES){id_rubrique}{par titre}{doublons}> [(#TITRE|majuscules)] <ul> <BOUCLE_rappel_article(ARTICLES){id_rubrique}{par date}{inverse}{doublons}{0,15}> <li><a href="#URL_ARTICLE">[(#TITRE)<br></a>] </BOUCLE_rappel_article>
- Pgina 102 de 114 - </ul> </BOUCLE_appel_rubrique_article> </BOUCLE_appel_article> </B_appel_article> Por el momento, este autor no ha escrito ningn artculo <//B_appel_article> Cdigo para mostrar un artculo al azar <B_appel_article>
ltimo artculo escrito por <BOU- CLE_nom_auteur(AUTEURS){id_auteur}>[(#NOM)]</BOUCLE_nom_auteur><br> <BOUCLE_appel_article(ARTICLES){id_auteur}> <BOUCLE_appel_rubrique_article(RUBRIQUES){id_rubrique}{par titre}{doublons}> [(#TITRE|majuscules)] <ul> <BOUCLE_rappel_article(ARTICLES){id_rubrique}{par hasard}{doublons}{0,15}> <li><a href="#URL_ARTICLE">[(#TITRE)<br></a>] </BOUCLE_rappel_article> </ul> </BOUCLE_appel_rubrique_article> </BOUCLE_appel_article> </B_appel_article> Por el momento, este autor no ha escrito ningn artculo <//B_appel_article> VII.4.2. Y, para terminar Ahora es necesario configurar la pgina de autores (la pgina donde se listan los diferentes autores) para que, al pulsar sobre el enlace del autor, se dirija hacia la pgina myauteur donde se encontrarn los ltimos artculos escritos por el mismo. El enlace deber escribirse de la siguiente manera: <a href="myauteur.php3?id_auteur=#ID_AUTEUR">nombre del enlace</a>
VII.5. Varios logos para el mismo artculo Es frecuente que, para dinamizar la navegacin del sitio web, se desee utilizar diferentes logos (es- pecialmente de distintos tamaos) para un mismo artculo en funcin del contexto en el cual aparece. Por ejemplo, utilizar un logo grande en la pgina de inicio del sitio que pueda aadir valor al artculo principal actual, y un logo pequeo para la navegacin general en el sitio. Hasta hace poco, los usuarios haban creado algunos mtodos personales basados en el uso diferente del logo normal y del logo de paso del ratn. En nuestro ejemplo, el logo normal utilizado como logo pequeo, llamado desde la baliza #LOGO_ARTICLE_NORMAL; y en la portada, el logo de pa- so del ratn llamado por la baliza #LOGO_ARTICLE_SURVOL para mostrar la versin grande del logo. Este mtodo complica bastante el cdigo de los esqueletos, e impide el uso habitual de logos de paso del ratn que SPIP proporciona automticamente. Adems es de una flexibilidad muy limitada. Desde la versin [SPIP 1.4], es posible adjuntar documentos a los artculos (y, adems, a las sec- ciones). A continuacin vamos a explicar cmo se pueden usar estos documentos adjuntos para crear ms logos para un mismo artculo. VII.5.1. Principio general Seguiremos usando los dos logos del artculo para mostrar los logos normales (los que aparecen en los enlaces de navegacin ms frecuentes, por ejemplo, en las pginas de las secciones), lo que permite conservar la sencillez de gestin de los logos con SPIP y la gestin automtica del paso de ratn (se vuelve al uso natural de las balizas #LOGO_ARTICLE, o #LO- GO_ARTICLE_RUBRIQUE). Adjuntaremos a los artculos un documento (por lo general una imagen en formato GIF, JPEG o PNG) al cual daremos siempre el mismo nombre. Basta con mostrar este documento (haciendo una llamada a su nombre) en el lugar del logo normal cuando se desee. Este mtodo tambin permite crear tantos logos diferentes como se necesite para un mismo artculo (no slo un logo grande y uno pequeo; sino incluso una imagen escaneada de un trabajo de im- prenta creado para mostrar el ttulo, etc.). Adems veremos cmo, gracias a los bucles de SPIP, se puede determinar con facilidad en los es- queletos si ese logo grande (el documento que tiene el nombre que hemos elegido) est presen- te, y actuar en consecuencia (mostrar en un lugar un logo normal, un texto especfico, o cual- quier otro elemento grfico).
- Pgina 103 de 114 - Por milagro de la tecnologa moderna, de los formatos propietarios y del acceso por banda ancha, estas versiones especficas de los logos, al ser documentos adjuntos, pueden tener un formato dis- tinto que las imgenes. De este modo se pueden mostrar, en lugar de logos grandes, animacio- nes de Flash o Shockwave, imgenes de vdeo... VII.5.2. Situacin de los documentos y eleccin de sus nombres Decidimos (arbitrariamente, se puede elegir el que se desee) que los documentos adjuntos usados como logo grande se titularn todos spip_logo; este documento spip_logo se situar en la pgina del sumario de nuestro sitio web en lugar del logo normal. Como en este ejemplo utilizaremos ms adelante otros nombres para crear efectos ms sutiles, decidimos que los nombres de todos ellos comenzarn por spip_.... (Esto nos va a permitir que, en la presentacin normal de los documentos adjuntos de un artculo, queden excludos todos los documentos cuyo nombre comience por spip_.... De esta manera, el uso de documentos como logos alternativos no interferir con la presentacin, por ejemplo, de un lbum de imgenes.) En un artculo publicado en lnea (para que podamos "trastear" con nuestros esqueletos mientras los probamos), instalamos simplemente: o un logotipo normal (columna de la izquierda); si queremos, se puede instalar una versin de paso de ratn para la gestin automtica del cambio de imagen cuando el ratn pasa por encima de ella;
El logotipo normal El logotipo se instala de forma clsica. A priori, se trata de una imagen de tamao reducdo. o al final de la pgina del artculo, instalamos un documento adjunto (en el bloque AA- DIR UN DOCUMENTO); sencillamente, instalamos una imagen (JPEG, GIF, PNG); una vez instalado el documento (subido al servidor), lo titulamos spip_logo. Ya est, es lo nico que hay que hacer... SPIP muestra el documento bajo la pgina del artculo en el espacio privado, con su ttulo (spip_logo) e indicando sus dimensiones en pixels.
- Pgina 104 de 114 -
El documento spip_logo Este documento debe llevar obligato- riamente el ttulo spip_logo. Es in- til instalar un icono de previsualiza- cin. En el caso de un documento multimedia (Flash, Shockwave...), es necesario in- dicar manualmente sus dimensiones en pxels. Decidimos cmo utilizar este documento titulado spip_logo: se pondr en la pgina de inicio del sitio web en lugar del logo normal del ltimo artculo publicado. De esta manera, la pgina de por- tada del sitio puede mostrar una imagen grande para aadir valor al artculo principal. VII.5.3. Mostrar spip_logo en la Portada del sitio Comencemos por insertar un bucle sencillo que muestre el ltimo artculo publicado en el sitio con su logo normal. (En todos los ejemplos siguientes, el cdigo HTML es el mnimo estricto; tendrs que adaptarlo con el estilo grfico ms conveniente para tus pginas.) <BOUCLE_article_vedette(ARTICLES){doublons}{par date}{inverse}{0,1}> #LOGO_ARTICLE <h1>#TITRE</h1> </BOUCLE_article_vedette> Este bucle, muy simple, muestra el primer artculo ({0,1}) de entre todos los ARTICLES (artculos), seleccionados por la fecha de publicacin ({par date}) del ms reciente al ms antiguo ({inverse}).
- Pgina 105 de 114 - Por lo tanto, muestra el ltimo artculo publicado en el sitio. En el interior del bucle, se publica el logo del artculo, seguido por su ttulo. Habamos dicho que queramos mostrar, en lugar del logo normal, el documento adjunto al artculo cuyo ttulo es spip_logo. El cdigo se transforma en: <BOUCLE_article_vedette(ARTICLES){doublons}{par date}{inverse}{0,1}> <BOUCLE_logo_article_vedette(DOCUMENTS){id_article}{titre=spip_logo}> [(#EMBED_DOCUMENT)] </BOUCLE_logo_article_vedette> <h1>#TITRE</h1> </BOUCLE_article_vedette> El BOUCLE_logo_article_vedette selecciona de entre los documentos adjuntos de este artculo ({id_article}) aquel cuyo ttulo es spip_logo ({titre=spip_logo}). Dentro del bucle, se pide que se muestre este documento adjunto (#EMBED_DOCUMENT). El uso de #EMBED_DOCUMENT (an poco extendido entre los sitios que utilizan SPIP) en los esqueletos permite insertar directamente el documento dentro de la pgina, mediante el sistema de bu- cles. SPIP se encarga de crear el cdigo correspondiente a las imgenes o a los ficheros multimedia. Inconveniente: si el artculo no tiene un documento adjunto titulado spip_logo, la ejecucin del cdigo anterior slo muestra el ttulo. Por lo tanto vamos a efectuar una nueva modificacin, que permi- te mostrar el logo normal del artculo si no existe un documento adjunto que se pueda usar. Fjate bien: una vez comprendido este mtodo, no harn falta nuevas sutilezas para realizar todos los efectos siguientes... <BOUCLE_article_vedette(ARTICLES){doublons}{par date}{inverse}{0,1}> <BOUCLE_logo_article_vedette(DOCUMENTS){id_article}{titre=spip_logo}> [(#EMBED_DOCUMENT)] </BOUCLE_logo_article_vedette> #LOGO_ARTICLE <//B_logo_article_vedette> <h1>#TITRE</h1> </BOUCLE_article_vedette> Simplemente hemos aadido la llamada al logo normal (#LOGO_ARTICLE) en el texto alternativo (el que se halla antes de <//B...> en un bucle, que se muestra si el bucle no produce ningn resultado - en este caso, si no hay un documento adjunto al artculo que lleve el ttulo spip_logo). Hemos obtenido el resultado que desebamos: si existe un documento adjunto asociado al artculo que hayamos titulado spip_logo, se muestra directamente; si no, en su lugar se muestra el logo normal. VII.5.3. Exclur estos documentos especficos de la publicacin normal de los documentos adjuntos En el esqueleto de los artculos, se muestran los documentos adjuntos gracias al bucle BOU- CLE_documents_joints, donde los criterios esenciales son: <BOUCLE_documents_joints(DOCUMENTS){id_article}{mode=document}{doublons}> Se llama a los DOCUMENTS (documentos) unidos a este artculo ({id_article}), que sean docu- mentos adjuntos y no imgenes ({mode=document}) y que no hayan sido ya publicados en el interior del texto del artculo utilizando el atajo <EMBxx> ({doublons}). Modificamos este cdigo para evitar que se muestren, en este bucle (que es una especie de l- bum), los documentos cuyo nombre comience por spip_... (si no se quiere mostrar aqu el logo grande usado en la pgina de Portada del sitio): <BOUCLE_documents_joints(DOCUMENTS){id_article}{titre!==^spip\_}{mode=document} {doublons}> El criterio {titre!==^spip\_} es una expresin regular, cuya sintaxis est muy codificada. Se se- leccionan los documentos cuyo ttulo no est formado as (la expresin !== significa que no correspon- de a la expresin regular): los primeros caracteres (el smbolo ^ indica el inicio de la cadena de carac- teres) son spip seguidos por _ (en la sintaxis de las expresiones regulares, \_ indica el carc- ter _, de la misma forma que \. indica el carcter .). Por lo tanto, este criterio selecciona los documentos adjuntos cuyo ttulo no comience por spip_. Aqu termina la exposicin del principio general, con esto tienes mucha diversin para probar en tu propio sitio. Los siguientes ejemplos no son ms que variaciones.
- Pgina 106 de 114 - VII.5.4. Mostrar siempre un gran logo en lo alto de la pgina He decidido, de manera arbitraria, que siempre habr una gran imagen en lo alto de la pgina de mis artculos. Se trata de una eleccin grfica por mi parte: para asegurar la unidad grfica de mi sitio, pu- blico en lo alto de la pgina una versin en formato grande relacionada con el artculo (una variacin del principio del logo grande) y, por omisin, une imgen guardada en otro lugar de mi sitio. Siempre el mismo principio: aado a mi artculo un documento al que pongo por ttulo spip_haut. (Para evitar que este documento se muestre en el lbum del bucle BOU- CLE_documents_joints precedente, hago comenzar su ttulo por spip_....) En mi esqueleto de los artculos, simplemente muestro en lo alto de la pgina este documento: <BOUCLE_doc_haut(DOCUMENTS){id_article}{titre=spip_haut}> #EMBED_DOCUMENT </BOUCLE_doc_haut> Como en el ejemplo precedente, muestro el documento adjunto al artculo de esta pgina cuyo ttulo es spip_haut. Como en el primer ejemplo, podra decidir que se muestre el logo del artculo si este documento no existe: <BOUCLE_doc_haut(DOCUMENTS){id_article}{titre=spip_haut}> #EMBED_DOCUMENT </BOUCLE_doc_haut> #LOGO_ARTICLE <//B_doc_haut> Pero este no es el resultado que se desea. Quiero, por imperativos grficos, que siempre se vea una imagen grande de dimensiones predeterminadas. Por lo tanto (siempre segn una eleccin arbitraria por ma parte) voy a crear imgenes de sustitu- cin, utilizadas por omisin, en el caso de que un artculo no tenga imagen propia. Estas imgenes responden a mis requisitos grficos (por ejemplo, todas ellas tienen les mismas dimensiones que los do- cumentos que uso habitualmente en spip_haut). En mi sitio, creo una seccin para guardar estos documentos de sustitucin en almacenaje. Activo los documentos asociados a las secciones. (Tambin puedo crear un artculo que recoja todos estos do- cumentos, para no tener que activar los documentos adjuntos en las secciones. El cdigo apenas sera diferente.) Admitamos que esta seccin tiene el nmero 18 (es SPIP quien adjudica automticamente el nmero de la seccin cuando se crea esta). Instalo todos mis documentos de sustitucin dento de esta seccin nmero 18. (Es intil ponerle un ttulo.) Para llamar, al azar, a un documento instalado en esta seccin, es suficiente invocar los criterios si- guientes: <BOUCLE_doc_substitution(DOCUMENTS){id_rubrique=18}{0,1}{par hasard}> #EMBED_DOCUMENT </BOUCLE_doc_substitution> (Fjate bien: el criterio {par hasard} no significa que la imagen sea diferente para cada visita de la pgina, sino que ser seleccionada al azar cada vez que se recalcule la pgina.) Hay que tener cuidado para evitar que se vea la seccin 18, en la navegacin del sitio, pues no es necesario que se muestre a los visitantes. El criterio {id_rubrique!=18} se ocupar de esto. Para terminar el despliegue del dispositivo, basta con insertar este bucle que muestra un documento de sustitucin tomado al azar de la seccin 18 como texto alternativo a nuestro bucle BOU- CLE_doc_haut (en lugar de #LOGO_ARTICLE): <BOUCLE_doc_haut(DOCUMENTS){id_article}{titre=spip_haut}> #EMBED_DOCUMENT </BOUCLE_doc_haut> <BOUCLE_doc_substitution(DOCUMENTS){id_rubrique=18}{0,1}{par hasard}> #EMBED_DOCUMENT </BOUCLE_doc_substitution> <//B_doc_haut> VII.5.5. Mostrar un ttulo grfico Siguiendo el mismo principio, vamos a publicar una versin grfica del ttulo del artculo. Se trata de una imagen realizada con un programa de dibujo donde aparece, con una tipografa especialmente cui- dada (efectos de relieve, degradados de color, tipos de caracteres raros...) el ttulo del artculo. Decidimos que se har mediante un documento adjunto asociado al artculo, que vamos a titular spip_titre.
- Pgina 107 de 114 - Para llamar a este documento, en el lugar donde debera figurar el #TITRE (ttulo) del artculo, si- tuamos el siguiente bucle: <BOUCLE_doc_titre(DOCUMENTS){id_article}{titre=spip_titre}> #EMBED_DOCUMENT </BOUCLE_doc_titre> Fjate nuevamente que este mtodo permite usar no slo una imgen para mostrar el ttulo, si- no tambin una animacin Flash, un vdeo... En estos casos, es necesario indicar manual- mente las dimensiones en pixels del documento adjunto. Completamos el dispositivo: si no existe un documento adjunto con el ttulo spip_titre, hay que mostrar la informacin necesaria como texto HTML clsico: <BOUCLE_doc_titre(DOCUMENTS){id_article}{titre=spip_titre}> #EMBED_DOCUMENT </BOUCLE_doc_titre> [<div>(#SURTITRE|majuscules)</div>] <div><font size=6>#TITRE</font></div> [<div>(#SOUSTITRE|majuscules)</div>] <br>[(#DATE|nom_jour)] [(#DATE|affdate)]</p> <//B_doc_titre> * * * Sealamos una ltima ventaja de usar este mtodo... Permite realizar rpidamente una modificacin radical en el aspecto grfico de tu sitio web. Sin tener que suprimir uno por uno los documentos titulados spip_haut, spip_titre..., es suficiente con crear unos esqueletos nuevos que, simplemente, no llamen a esos documentos. Por ejemplo, si los documentos spip_haut estaban pensados anteriormente con una longitud de 450 pixels, y el nuevo aspecto grfico requiere que las imgenes tengan una longitud de 600 pixels, no necesitars modificar uno por uno todos los ficheros spip_haut. Basta con no hacer la llamada, en los esqueletos, a los documentos titulados spip_haut; utilizando en su lugar un nombre nuevo (por ejemplo spip_large) e instalarlos a medida que vayas teniendo las versiones nuevas de los docu- mentos titulados spip_large. Durante la transicin, no habr incoherencias grficas. Los ms atrevidos incluso pueden imaginar todo tipo de pruebas con el tipo de documento ({exten- sion=...}) o con su tamao ({largeur=...}, {hauteur=...}) (no se necesita PHP) para cambiar el as- pecto segn el resultado obtenido (por ejemplo, mostrar cierta interfaz grfica si spip_haut tiene 450 pixels de longitud, y otra distinta si esa longitud es de 600 pixels...).
VII.6. Mostrar los elementos como lneas de una ta- bla Por ejemplo, es posible que se desee crear una tabla que contenga los ttulos de los artculos de una seccin dispuestos en tres columnas, con un nmero de lneas que depende del nmero total de artcu- los segn el esquema: artculo 1 artculo 2 artculo 3 artculo 4 artculo 5 artculo 6 artculo 7 artculo 8 artculo 9 El truco consiste en jugar al mismo tiempo con los doublons y con los bucles recursivos. Construimos un primer bucle que muestre los tres primeros artculos de la seccin una vez elimina- dos los duplicados. Como se ver, basta con seguir llamando a este bucle mientras nos queden artculos para mostrarlos gradualmente todos, pues los ya mostrados pasan cada vez a formar parte del rango de los duplicados. Para eso, en el cdigo condicional de este bucle, se aade una llamada recursiva al propio bucle que funcionar mientras produzca resultados. <table> <B_ligne> <tr> <BOUCLE_ligne (ARTICLES) {id_rubrique} {doublons} {par titre} {0,3}> <td width="33%"> <a href="#URL_ARTICLE">#TITRE</a> </td> </BOUCLE_ligne> </tr> <BOUCLE_ligne_suite (BOUCLE_ligne)></BOUCLE_ligne_suite> </B_ligne>
- Pgina 108 de 114 - </table> El mismo tipo de bucle, cambiando la llamada al ttulo por el logo (con la baliza #LOGO_ARTICLE), permite mostrar una galera con la miniatura de cada logo de artculo (cuyos tamaos es preferible que sean iguales para mejorar la presentacin de la pgina), obras que se muestran en el texto del artculo.
VII.7. Rellenar los meta-tags HTML de las pginas de artculo El objetivo de este ejemplo, es situar en los meta-tags de nuestra pgina la lista de palabras clave asociadas al artculo; al igual que el nombre de los autores. <head> <BOUCLE_head(ARTICLES){id_article}> <title>#TITRE</title> <meta name="Description" content="#DESCRIPTIF"> <meta name="Keywords" content="<BOUCLE_keywords(MOTS){id_article}{","}>#TITRE </BOUCLE_keywords>"> <meta name="Author" content="<BOUCLE_author(AUTEURS){id_article}{","}>#NOM </BOUCLE_author>"> </BOUCLE_head> </head> Si se desea optimizar la indexacin del sitio por los motores de bsqueda, se puede, por ejemplo, in- cluir la descripcin del artculo, las palabras clave asociadas, y el nombre de los autores. Hay que destacar que, para las palabras clave y el autor, utilizamos un bucle anidado 52 para buscar esta informacin a partir del id_article actual. Adems, especificamos una coma como separador, con el fin de que el contenido del meta-tag sea comprensible (y para que lo entienda el motor de bsqueda). Atencin! el cdigo de ejemplo del cuadro superior es un poco bsico: si el #NOM de un autor o el #DESCRIPTIF de un artculo contienen etiquetas html (letra cursiva, salto de prrafo...) la pgina resultante estar llena de errores. Para evitarlo, sera necesario poner un filtro como |supprimer_tags en el campo en cuestin (cambiar #DESCRIPTIF por [(#DESCRIPTIF|supprimer_tags)])...
VII.8. Un men desplegable para presentar una lista de artculos Es fcil realizar un men desplegable utilizando las etiquetas HTML para creacin de formularios; que adems sirva para ir a la URL del artculo seleccionado. Si la URL de los artculos es del tipo article.php3?id_article=123, el siguiente cdigo har maravi- llas: <FORM ACTION="article.php3" METHOD="get"> <SELECT NAME="id_article"> <BOUCLE_menu_articles(ARTICLES) {id_rubrique} {par titre}> <OPTION VALUE="#ID_ARTICLE">#TITRE</OPTION> </BOUCLE_menu_articles> </SELECT> <INPUT TYPE="submit" NAME="Valider" VALUE="Mostrar articulo"> </FORM> Los criterios del bucle artculos (en este caso: los artculos de la seccin actual, ordenados por ttulo) se pueden modificar segun el gusto. Esta construccin funciona tambin para las breves, secciones... Siguiendo el mismo procedimiento, es igual de fcil presentar una lista de secciones, otra de bre- ves... o incluso de la totalidad de la estructura del sitio.
VII.9. Publicar automticamente segn la fecha o se- gn el orden impuesto La situacin es la siguiente: en un mismo sitio la presentacin de artculos en diferentes secciones debe estar diferenciada:
52 Se llama bucle anidado al que est includo dentro de otro bucle.
- Pgina 109 de 114 - en algunas secciones, los artculos son publicados los unos tras los otros y se quiere que se presen- ten por orden cronolgico: los ms recientes al principio de la lista, los ms antiguos al final de la lista; en otras secciones se quiere "forzar" la publicacin de los artculos numerndolos (1. El primer ar- tculo, 2. El segundo artculo...) ; en el sitio pblico se les quiere presentar segn este orden in- dicado por la numeracin. He aqu un mtodo para realizar este efecto: Estamos en el interior de un bucle de seccin (por ejemplo la pgina rubrique.html) : <BOUCLE_rubrique_principale(RUBRIQUES){id_rubrique}> ... </BOUCLE_rubrique_principale> En el interior de este bucle vamos a efectuar el test siguiente: existe en esta seccin al menos un artculo cuyo ttulo empiece por un nmero seguido por un punto? <BOUCLE_test_numero(ARTICLES){id_rubrique}{titre==^[0-9]+\.}{0,1}> Existe un artculo numerado en esta seccin. </BOUCLE_test_numero> No hay ningn artculo numerado. <//B_test_numero> El criterio interesante aqu es: {titre==^[0-9]+\.} Se trata de una seleccin del ttulo segn una expresin regular(== indica una seleccin segn una expresin regular) cuya sintaxis es: al principio del ttulo (^ indica el principio de la cadena tes- tada), hay uno o varios (+ indica al menos uno de los caracteres precedentes) caracteres com- prendidos entre 0 y 9 ([0-9] significa caracteres comprendidos entre 0 y 9 incluidos), seguidos del carcter punto (\.). Notar finalmente que slo se selecciona un artculo as numerado ({0,1}); de esta manera el interior del bucle solo ser efectuado una sola vez. Por otro lado basta que exista un solo artculo numerado pa- ra provocar la publicacin de una lista por orden numerado. Este bucle muestra tambin Existe un artculo numerado en esta seccin. si existe al menos un ar- tculo cuyo ttulo es precedido por un nmero en la seccin, y No hay ningn artculo numerado. si no existe. Es suficiente ahora instalar en lugar de estas menciones bucles que publiquen los artculos segn el orden de presentacin deseado: <BOUCLE_test_numero(ARTICLES){id_rubrique}{titre==^[0-9]+\.}{0,1}> <BOUCLE_ordre_numeros(ARTICLES){id_rubrique}{par num titre}> <li> [(#TITRE|supprimer_numero)] </BOUCLE_ordre_numeros> /BOUCLE_test_numero> <BOUCLE_ordre_date(ARTICLES){id_rubrique}{par date}{inverse}> <li> #TITRE </BOUCLE_ordre_date> <//B_test_numero>
VII.10. Seleccionar artculos por orden alfabtico, salvo uno que hay que publicar en primer lugar Supongamos que quieres presentar una serie de artculos por orden alfabtico, salvo el prlogo que quieres lgicamente publicar al principio de la lista... Existe un truco para "engaar" a la ordenacin efectuada por SPIP: basta con aadir un espacio al principio del ttulo del artculo (por ejemplo, transformar "Prlogo" en " Prlogo"). El orden alfabtico si- tuar este ttulo por delante de los dems y lo mostrar primero. A pesar de ello el espacio suplementario del ttulo ser ignorado por el navegador Web y no provoca- r un desplazamiento extrao en la paginacin de la lista de artculos. Tener en cuenta que el truco slo funcionar si ests utilizando la clasificacin alfabtica en el ttulo de los artculos (es decir el criterio de bucle {par titre}). En toda otra clasificacin no funcionar. Observacin: esto se aplica igualmente a las secciones, breves, sitios referenciados, etc.
- Pgina 110 de 114 - VII.11. Realizar una agenda con SPIP Indicaciones para poder construir una agenda con SPIP. Pertinencia: 83 % Nivel: difcil Contiene cdigo PHP [SPIP 1.4.2] En este artculo vamos a utilizar SPIP para presentar una agenda de acontecimientos en formato de calendario. En vez de integrar un logiciel externo especializado, veamos como realizar es- to con un esqueleto mezclando bucles SPIP clsico y cdigo PHP.
VII.11.1. Cules son las informaciones que necesitas? La primera etapa consiste en determinar como se almacenaran las informaciones en SPIP y por tanto ofrecidas por las redactoras/es. Con el objetivo principal de que quien redacte pueda definir una fecha en la debe celebrarse un de- terminado evento, necesitaremos los siguientes elementos: al menos un campo de tipo texto un campo de tipo fecha Para el campo texto es simple, SPIP nos propone al menos 3 muy tiles y sistemticamente presen- tes sea cual sea el parametrage del sitio: ttulo, descripcin y texto. VII.11.2. La fecha de publicacin anterior o la verdadera fecha de publi- cacin? La fecha de publicacin de un artculo se determina automticamente en el momento de su valida- cin lo que significa que la autora no puede precisarlo previamente. Esta fecha puede ser modificada sin embargo por quien valida la nota pero esto no resulta verdaderamente muy til para indicar la fecha de un acontecimiento -sobre todo si se ha configurado el sitio para que SPIP no publique los artculos post- datados. Afortunadamente SPIP propone tambin una fecha de publicacin anterior especialmente utilizada para indicar en que fecha a sido publicado un artculo recogido posteriormente por SPIP, y que puede ser definida libremente por el redactor (Verifica si has configurado el sitio para gestionar este tipo de fecha suplementaria). Es esta fecha la que vamos a utilizar para definir las convocatorias de la agenda. Utilizacin de la fecha de publicacin anterior
Utilizacin de la fecha de publicacin anterior
- Pgina 111 de 114 - VII.11.3. Organizar las convocatorias Si la agenda debe contener mucha informacin de diferente tipo, puede resultar til clasificarlas (concierto, pelcula, reunin) para mostrarlas y eventualmente colgarlas de manera selectiva. En SPIP dos mtodos de clasificacin vienen inmediatamente a la memoria: clasificacin por seccin (y eventualmente sub-secciones); clasificacin por palabra clave. En este ejemplo vamos a utilizar las secciones que nos permitir constituir una ramificacin para al- macenar los artculos-convocatoria; ello nos va a permitir filtrar los tipos de convocatoria con una nocin de granularit (no encuentro traduccin) progresiva. En la agenda de Gastero Prod, la organizacin de secciones no est muy desarrollada pero resulta ya posible seleccionar unicamente los acontecimientos musicales y eventualmente filtrar todava conside- rando solo los conciertos. Una jerarqua de secciones por tema
Las convocatorias se crean en una ramificacin de secciones temticas, se colocan en una base de datos, pasemos a cosas serias: VII.11.4. Colgar la agenda, PHP al rescate Deseamos colgar la agenda con un formato estandar de una tabla mensual en la que cada columna representa un da a la semana. Deseamos tambin poder navegar de un mes a otro, ver, incluso elegir directamente un mes de manera arbitraria. Todo ello no es posible directamente si se utiliza exclusiva- mente los bucles de SPIP, por ello es necesario usar PHP. He aqu una explicacin paso a paso de todos los elementos del esqueleto (encontrars al final de es- te texto el esqueleto completo para telecargar). Preparacin de las informaciones a tratar Definamos una tabla que contenga los 12 meses del ao y los 7 das de la semana. $months = array('', 'Enero', 'Febrero', 'Mazo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Sep- tiembre', 'Octubre', 'Noviembre', 'Deciembre'); $days = array('Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado', 'Domingo',); Y he aqu una pequea funcin, que permite simplificar la generacin de una fecha en formato times- tamp para las y los ms perezosos que no solo quieren tener que precisar la hora... function mkdate($month, $day, $year) { return mktime(0, 0, 0, $month, $day, $year); } Gestin de la navegacin. Los parmetros de navegacin se colocan en la URL a travs de las variables var_nav_month et var_nav_year (Se utiliza la anotacin var_xxx para indicar a SPIP que no tome en cuenta estas variables para el clculo de la cach de la pgina, lo que permite a la vez limitar el impacto en la cach -un solo fichero cach tratar todas las pginas de la agenda- y acelerar la publicacin -ya que SPIP solo tendr necesidad de ir a buscar los datos en la base una sola vez.) La primera cosa a hacer al principio del script es pues determinar que mes es necesario publicar. Por
- Pgina 112 de 114 - sa a hacer al principio del script es pues determinar que mes es necesario publicar. Por defecto se publi- ca el mes corriente si no se introduce ningn dato: if(isset($GLOBALS['var_nav_month'])) { $cal_day = mkdate($GLOBALS['var_nav_month'], 1, $GLOBALS['var_nav_year']); } else { $cal_day = time(); } $D = intval(date('d', $cal_day)); $M = intval(date('m', $cal_day)); $Y = intval(date('Y', $cal_day)); Recuperacin de la lista de convocatorias Vamos a comenzar por colocar en una variable PHP de tipo tabla llamada $events la lista de convoca- torias susceptibles de ser publicadas en el calendario del mes solicitado, en funcin por supuesto de la restriccin temtica correspondiente a la seccin corriente: $events = array(); ?> <BOUCLE_principale(RUBRIQUES){id_rubrique}{doublons}> <p> <span class="small"> <a href="#URL_SITE_SPIP">Accueil</a> > <BOUCLE_hier1(HIERARCHIE){doublons}> <a href="#URL_RUBRIQUE">#TITRE</a> > </BOUCLE_hier1> </span> <br /> [<span class="title">(#TITRE)</span>] </p> <BOUCLE_evenements(ARTICLES){branche}> <?php $date = ereg_replace("^([0-9]{4})-([0-9]{2})-([0-9]{2}).*$", "\\1\\2\\3", '#DATE_REDAC'); if ($date > date("Ymd", mkdate($M, $D - 31, $Y)) && $date < date("Ymd", mkdate($M, $D + 31, $Y))) { if (!isset($events[$date])) { $events[$date] = array(); } $events[$date][] = array('link' => '#URL_ARTICLE', 'title' => '[(#TITRE|texte_script)]', 'logo' => "#LOGO_ARTICLE_RUBRIQUE"); } ?> </BOUCLE_evenements> La seleccin de las fechas est de hecho realizada en PHP sobre la lista completa de los artculos re- enviados por SPIP sin control de fecha. Publicacin de la navegacin Utilizamos aqu enlaces hacia el mes precedente y el siguiente, y un pequeo formulario con las listas de los 12 meses y de los aos desde 1995 al 2010. <table width="100%" cellpadding="5" cellspacing="0" align="center" border="1" class="small"> <form method="get"> <tr> <th colspan="7"> <a href="/rubrique.php3?id_rubrique=#ID_RUBRIQUE&var_nav_month=<?=($M - 1)?>&var_nav_year=<?=$Y?>"><b><<</b></a> <input type="hidden" name="id_rubrique" value="#ID_RUBRIQUE" /> <?php echo '<select name="var_nav_month">'; for($i = 1; $i < 13; $i++) { echo '<option value="'.$i.'"'.($i == $M ? ' selected="selected"': '').'>'.$months[$i].'</option>'; } echo '</select>'; echo ' <select name="var_nav_year">'; for($i = 1995; $i < 2011; $i++) { echo '<option value="'.$i.'"'.($i == $Y ? ' selected="selected"': '').'>'.$i.'</option>';
- Pgina 113 de 114 - } echo '</select> '; ?> <input type="submit" value="go" /> <a href="/rubrique.php3?id_rubrique=#ID_RUBRIQUE&var_nav_month=<?=($M + 1)?>&var_nav_year=<?=$Y?>"><b>>></b></a> </th> </tr> </form> Publicacin de los nombres de los das en la cabecera de las columnas <tr> <?php for($i = 1; $i < 8; $i++) { echo '<th width="14%" class="calendar_head">'.$days[$i%7].'</th>'; } Publicacin de los ltimos das del mes precedente En un calendario mensual presentado en forma de tabla, los ltimos das del mes precedente y los primeros de mes siguiente son en general presentados para que las semanas sean completas. $TempD = 1; if(date('w', mkdate($M, 1, $Y)) != 1) { echo '</tr><tr>'; $tmp = ''; while(date('w', mkdate($M, $TempD, $Y)) != 1) { $TempD--; $case = '<td width="14%" height="50" valign="top" class="calendar_not_this_month">'; $case .= date('j', mkdate($M, $TempD, $Y)); $date = date('Ymd', mkdate($M, $TempD, $Y)); if (isset($events[$date])) { while (list(, $event) = each($events[$date])) { $case .= '<br />'.$event['logo'].'<a href="'.$event['link'].'" class="small">'.$event['title'].'</a>'; } } $case .= '</td>'; $tmp = $case.$tmp; } echo $tmp; } Publicacin del resto del calendario $TempD = 1; while((date('m', mkdate($M, $TempD, $Y)) == $M) || (date('w', mkdate($M, $TempD, $Y)) != 1)) { if(date('w', mkdate($M, $TempD, $Y)) == 1) { echo '</tr><tr>'; } echo '<td width="14%" height="50" valign="top" class="calendar_'.(date('m', mkdate($M, $TempD, $Y)) != $M ? 'not_': '').'this_'.(date('Ymd', mkdate($M, $TempD, $Y)) == date('Ymd') ? 'day': 'month').'">'; echo date('j', mkdate($M, $TempD, $Y)); $date = date('Ymd', mkdate($M, $TempD, $Y)); if (isset($events[$date])) { while (list(, $event) = each($events[$date])) { echo '<br />'.$event['logo'].'<a href="'.$event['link'].'" class="small">'.$event['title'].'</a>'; } } echo '</td>'; $TempD++; } ?> </tr> </table> Publicacin de la ramificacin temtica de la agenda <?php
<p class="big">Accs direct aux thmes, et lgende des icnes :</p> <BOUCLE_sous_rubriques1(RUBRIQUES){id_parent=43}{par titre}> <p> #LOGO_RUBRIQUE <a href="#URL_RUBRIQUE">#TITRE</a> <B_sous_rubriques> <BOUCLE_sous_rubriques(RUBRIQUES){id_parent}{par titre}> <br /> <?php depth($depth, 'rub'); ?> #LOGO_RUBRIQUE <a href="#URL_RUBRIQUE">#TITRE</a> <B_sous_rubriques_2> <?php $depth++; ?> <BOUCLE_sous_rubriques_2(BOUCLE_sous_rubriques)> </BOUCLE_sous_rubriques_2> <?php $depth--; ?> </B_sous_rubriques_2> </BOUCLE_sous_rubriques> </B_sous_rubriques> </p> </BOUCLE_sous_rubriques1> Y por supuesto, cierre final del bucle principal: </BOUCLE_principale> VII.11.5. Un poco de personalizacin visual Como puedes ver en el cdigo propuesto, la presentacin puede personalizarse con varios estilos. Es- te es el estracto de la hoja de estilo de Gastero Prod correspondiente a la agenda: .calendar_head { background-color: #003366; } .calendar_this_day { background-color: #00bbee; } .calendar_this_month { background-color: #0099cc; } .calendar_not_this_month { background : #006699; } VII.11.6. El cdigo completo del esqueleto Y aqu tienes el cdigo completo del esqueleto, para copiar y difundir al mximo !
agenda.html [http://www.uzine.net/IMG/zip/doc-710.zip] 1 spipedu manual de uso creacin de sitios web dinmicos de forma colaborativa con software libre versin 2.0 - septiembre 2008 grupo de trabajo spipedu + hapaxmedia.net creative commons by 3.0 es 2 spipedumanual de uso Contenidos
1 - Qu es spipedu? 3 1.1. Qu es spip? 3 1.2. Por qu elegir spipedu? 4 2 - Conceptos bsicos 5 3 - Modelos en spipedu 7 3.1. Modelo 1. 7 3.2. Modelo 2. 12 4 - Trabajando un modelo spipedu 15 4.1. Consideraciones previas del espacio privado. 15 4.2. Creacin de autores. 17 4.3. Publicar un artculo. 18 4.4. La cach de spip. 24 4.5. Publicar contenidos multimedia. 25 4.6. Publicar un enlace / sitio referenciado. 26 4.7. Gestin de la agenda. 27 4.8. Gestionar comentarios. 28 4.9. Gestin de blogs. 29 5 - Breve introduccin al diseo y modifcacin de esqueletos 31 3 spipedumanual de uso 1 - Qu es SPIPEDU? SPIPEDU es un proyecto de elaboracin de recursos educativos digitales en software libre, apoyado, en el curso 2005 / 2006, por la Consejera de Educacin de la Junta de Andaluca y que ha tenido su desarrollo con el apoyo del Centro de Profesorado de Alcal de Guadaira (Sevilla). El proyecto se basa en el desarro- llo de modelos de creacin de pginas web para centros educativos de carcter abierto y mantenimiento colaborativo. La web ofcial del proyecto es http://www.spipedu.es y la ayuda la puedes encon- trar en el wiki http://www.spipedu.es/ayuda SPIPEDU es una adaptacin del sistema SPIP (Systme de Publication Pour lInternet Participative) que usa la versin 1.9.2.c de este software escrito en PHP y que utiliza HTML y CSS para su diseo. Los promotores del proyecto han sido los docentes Jos Antonio Jimnez, Beatriz Rodrguez, Manuel Cceres y Dolores lvarez, tanto el mantenimiento y la aseso- ra tcnica lo viene haciendo la empresa de Gestin Creativo Cultural Hapaxmedia. Modelos en SPIPEDU SPIPEDU ha construido dos modelos de aplicacin que se pueden instalar en ser- vidores web que cumplan las caractersticas bsicas de SPIP. Estos modelos han sido diseados para facilitar la eleccin de los mismos a los centros educativos: MODELO 1 (o IES Profesor Juan Bautista), es el ms completo, diseado en colaboracin con un centro de Educacin Secundaria, es importante que puedan mantenerse blogs de contenidos concretos y permite comentarios. Existen centros de infantil y primaria que mantienen este modelo. Requiere una mayor dedicacin para su correcto mantenimiento. El modelo original se puede encontrar en www. spipedu.es/modelo1 y en funcionamiento real en www.iesprofesorjuanbautista.es MODELO 2 (o Sevilla Este) es ms simple, diseado en colaboracin con un centro educativo de infantil y primaria. No permite comentarios, ni blogs, su man- tenimiento requiere de menor dedicacin. El modelo original se puede encontrar en www.spipedu.es/modelo2 y en funcionamiento real en www.colegiomaestrojo- sefuentes.es Puedes encontrar un listado amplio de sitios web que utilizan SPIPEDU en la siguiente direccin: http://www.spipedu.es/ayuda/index.php/Sitios_SPIPEDU 1.1. Qu es SPIP? Es el acrnimo de Systme de Publication Pour lInternet Participative, un soft- ware libre bajo licencia GPL con la estructura ideal para desarrollar sitios de tipo CMS con edicin colectiva al estilo de una revista en lnea. Caractersticas tcnicas SPIP es un programa escrito en PHP y que utiliza una base de datos MySql. La apariencia del sitio est separada del contenido del mismo, y se basa en esquele- tos, que son simples archivos HTML (aunque puede incluirse PHP propio embebi- do) donde se introducen etiquetas propias de SPIP que forman un pseudocdigo de bucles. La gran fortaleza de SPIP es la fexibilidad para modifcar la apariencia del sitio publico, el que es visible para los visitantes. Esto hace ms fexible la presenta- cin del contenido, permitiendo por ejemplo mostrar con un bucle los 5 artculos ms ledos de esta seccin, todos los artculos relacionados con este tema u otros artculos de este autor ordenados por fecha. Las posibilidades son infnitas, tanto como la imaginacin. Los esqueletos son muy abiertos y slo con conocimientos de HTML y algo de estudio de las etiquetas propias de SPIP se pueden hacer presentaciones grfcas propias, rompiendo el esquema demasiado estandarizado de otros CMS, que slo permiten hacer modifcaciones desde un panel de control. Otra gran ventaja es la velocidad con la que se muestran las pginas al visitante. Esto se debe a un sistema de Cach que tiene: la base de datos no se consulta cada vez que un visitante solicita una pgina, sino que se genera una vez cada cierto tiempo (confgurable), y se guarda esta pgina esttica en un cach para 4 spipedumanual de uso mostrarla (mucho ms rpido por ser html puro) al visitante. En Principio General se explica esto con ms detalle. Documentacin Oficial * http://www.spip.net/ Sitio Ofcial * http://www.spip.net/es Documentacin en Espaol * http://www.spip.net/es_download Descargar la ltima versin * http://www.spip-es.net/ Comunidad Hispanohablante 1.2. Por qu elegir SPIPEDU? Si has llegado aqu y tienes inters en este proyecto quizs quieras instalar y de- sarrollar un sitio web con SPIPEDU. Si an lo ests pensando estos son algunos de los motivos para elegir SPIPEDU: 1. Est desarrollado para centros educativos y por un grupo de profesorado. 2. Prima la facilidad y es totalmente intuitivo en su uso. 3. Cumple las normas estndares de accesibilidad. 4. Slo tendrs que preocuparte de los contenidos. 5. Si tienes conocimientos limitados podrs mantener vivo y actualizado tu sitio web. 6. Si tienes conocimientos avanzados podrs modifcar lo que no te guste y hacer versiones nuevas de SPIPEDU. 7. Todo est en castellano y el resto de lenguas co-ofciales del Estado Espaol. 8. Hay una comunidad de desarrollo y de apoyo a nuevos usuarios muy ami- gable. 9. Est desarrollado con Software Libre bajo Licencia GPL. En resumen, y como dicen algunos spiperos: es Software Libre con cario. 10. Nos hara mucho ilusin que nuestro trabajo sirviera para otros y otras. 5 spipedumanual de uso 2 - Conceptos bsicos de SPIPEDU A modo de glosario vamos a realizar un listado de los conceptos bsicos que hay que conocer para el trabajo en SPIP y en SPIPEDU. Son defniciones escuetas que luego sern desarrolladas con mayor extensin en el resto de pginas de este manual. 2.1. Contenido esttico vs. contenido dinmico Un sitio esttico es aquel que muestra siempre el mismo contenido. En cambio, un sitio dinmico funciona mediante una estructura de programacin oculta para el usuario que permite la utilizacin de distintas aplicaciones en Internet, como foros, encuestas, estadsticas de visitas, sistemas de noticias, etctera. Las posibilida- des que brinda un sitio dinmico son enormes y casi cualquier cosa es posible. El trmino programacin dinmica, es un concepto nuevo con respecto a las pginas HTML conocidas hasta ahora. El mismo consiste en la formacin de una pgina, tanto de grfcos como de contenidos, a partir de la lectura de determinados datos residentes en una base de datos. En otras palabras, una pgina dinmica no se encuentra pre-armada, sino que se construye online en el momento en que es solicitada por el usuario que la visita. Los sitios estticos estn diseados con algn software editor de HTML (Nvu para Guadalinex, Frontpage de Microsoft o Dreamweaver de Adobe son los ms cono- cidos) y requieren de este programa para su actualizacin. Los sitios dinmicos, como SPIP, han sido diseados con algunos de los programas arriba mencio- nados, pero para la actualizacin de contenidos no hay que tenerlos instalados. Adems, en el caso de SPIPEDU, no hace falta disear nada porque existen dos modelos preparados para empezar a publicar. 2.2. La estructura del sitio La estructura de un sitio web SPIP se construye bajo una jerarqua de secciones. No hay lmite en el nmero de secciones: una seccin puede contener as mismo las sub-secciones necesarias y stas a su vez contener otras sub-secciones, etc. En SPIPEDU hemos decidido limitar el nmero de secciones, salvo en la seccin blogs del modelo 1, as nos centraremos en publicar contenidos. 2.3. Diseo y Esqueletos El diseo de un sitio bajo SPIP y SPIPEDU se basa en archivos HTML y CSS que son alimentados por una base de datos MySQL. Esta caracterstica nos permite tener total libertad en cuanto al diseo que queramos desarrollar. 2.4. HTML El HTML, acrnimo ingls de Hyper Text Markup Language (lenguaje de mar- cacin de hipertexto), es el lenguaje de programacin diseado para estructurar textos y presentarlos en forma de hipertexto. Es el formato estndar de la mayora de pginas web. Existen editores de HTML avanzado aunque cualquier editor de textos podra servir, los lectores o navegadores de HTML son los conocidos Inter- net Explorer o Mozilla Firefox. Aunque en SPIPEDU no es necesario conocer el lenguaje HTML, ya que el diseo del mismo permite saltarse este paso, siempre es recomendable conocer sus etiquetas y sintaxis bsicas. Existe un wiki.libro sobre Lenguaje HTML http:// es.wikibooks.org/wiki/Lenguaje_HTML 2.5. CSS Las hojas de estilo en cascada (Cascading Style Sheets, CSS) son un lenguaje formal de programacin usado para defnir la presentacin (la parte visual del mismo) de un documento escrito en HTML. La idea principal que se encuentra detrs del desarrollo de CSS es separar la estructura de un documento de su presentacin. El conocimiento del lenguaje CSS ser importante, en SPIPEDU, para aquellos usuarios avanzados que quieran desarrollar un modelo desde cero o hacer modifcaciones sustanciales al modelo escogido. 2.6. Los redactores y administradores Un sitio bajo SPIP puede estar gestionado por una sola persona o realizado por un grupo de usuarios con diferentes niveles de acceso. SPIP propone tres niveles: 6 spipedumanual de uso a) los administradores y administradoras que gestionan la estructura del sitio, crean y adjudican niveles de responsabilidad a los usuarios y normalmente se encargan de la validacin de los artculos. b) las redactoras y redactores que proponen los artculos, su principal limita- cin es que no pueden publicarlos, slo proponerlos para que un administra- dor lo haga. c) los administradores restringidos que slo pueden controlar secciones con- cretas, donde s pueden publicar. El nmero de redactores y de administradores es ilimitado. En SPIPEDU, aposta- mos por la horizontalidad y recomendamos que todas las personas implicadas en el proceso de creacin de la web sean administradores y administradoras. 2.7. Los artculos La unidad mnima de informacin en SPIP es el artculo (o article en francs) que tienen que ser publicados dentro de alguna seccin. Se pueden colgar tantos artculos como sea necesario. La redaccin de los artculos se hace dentro de la propia web, en sus entraas y es muy simple. Colgar un artculo con SPIP es tan fcil como escribir un correo electrnico. Un artculo, en SPIPEDU, est constituido por varios elementos que permiten estructurarlo: ttulo, epgrafe o resumen y texto principal. La interfaz permite incluir fcilmente texto, imgenes y cualquier tipo de documento. Para ilustrarlo cada artculo quedar sealado con su propio logo o imagen de cabecera. Para su correcta identifcacin e indexacin se le agregarn palabras clave. En el modelo 1 de SPIPEDU se encuentran activados los comentarios que ge- neran un foro sobre el propio artculo. Este foro podr ser moderado a priori o a posteriori por sus administradores. 2.8. Los sitios referenciados / enlaces SPIP permite crear un directorio de enlaces a pginas webs, artculos de inter- net, normativas. Pueden estar asignados a Secciones y Subsecciones y poseer palabras claves. Funciona como la segunda unidad mnima de informacin. Nor- malmente se puede incluir el ttulo de la pgina, el enlace (http://....) y una breve descripcin. 2.9. Las palabras clave SPIP integra un sistema muy simple de palabras claves que pueden servir para crear categoras temticas de artculos de diferentes secciones o subsecciones. Las palabras clave se pueden asignar a Artculos y Enlaces. Es uno de los gran- des avances de SPIPEDU y su uso es muy importante para conseguir una pgina web transversal y dinmica. 7 spipedumanual de uso 3 - Modelos de spipedu En este paso vamos a ayudarte a elegir el MODELO SPIPEDU que se ajuste ms a tus necesidades, para ello debes conocer las caractersticas comunes de ambos: 1. Estn programados en SPIP lo que conlleva que en lo esencial el funciona- miento de interfaz privada es idntica. 2. Estn orientados a los contenidos y a la creacin de una Hemeroteca / Mediateca del Centro con el paso de los cursos escolares 3. Usan 3 secciones, una para contenidos estticos, otra para contenidos dinmicos y una tercera para incluir enlaces. 4. En ambos modelos podemos incluir imgenes, vdeos, sonidos y otros documentos. 5. Las palabras claves hacen transversal la categorizacin y orden de la pgi- na web. Los modelos han sido diseados en colaboracin con dos centros educativos. El Modelo 1 con el IES Profesor Juan Bautista de El Viso del Alcor, Sevilla y el Mode- lo 2 con el Colegio Maestro Jos Fuentes de Sevilla capital. El trabajo continuado en SPIPEDU nos ha hecho ver que ambos modelos estn enfocados hacia el nivel de implicacin y complicacin que quiera establecerse por parte del grupo promotor de la web. As encontramos sitios web, basados en el modelo 1, que estn dando muy buenos resultados en Colegios de infantil y primaria y sitios web basados en el modelo 2 que han sido totalmente reformulados. Tanto en www.spipedu.es/modelo1 como www.spipedu.es/modelo2 puedes entrar en la interfaz de administracin, pulsando en espacio privado o privado con el usuario y contrasea invitado, si quieres experimentar las diferencias. A continua- cin hacemos una descripcin detallada de todas las caractersticas de cada uno de los modelos. 3.1. Modelo 1 3.1.1 Secciones en el Modelo 1 Estas son las secciones que forman la estructura interna del sitio web: - Nuestro centro - Novedades - Enlaces - Blogs - Blog Profesor 1 - Blog Alumnado 1 - (...) La Seccin Nuestro centro contiene documentos de localizacin y funcio- namiento del centro. Son contenidos estticos y lo que publiquemos aqu no aparece en la columna central. Algunos de los contenidos que han sido colocados en esta seccin, el ROF, el Plan de Centro, la Localizacin y con- tacto, las diferentes memorias de direccin. Estos artculos que se dejan en la seccin Nuestro centro tienen estas particularidades: son documentos con una cierta durabilidad, una extensin en el tiempo y sobre todo una relevan- 8 spipedumanual de uso cia comunicativa que no permite que sean tratados como hechos noticiosos sujetos a la cronologa de la novedad. En la seccin Novedades publicaremos la mayor parte de los artculos. Aparecern siempre en la columna central y es importante que estos artculos tengan logotipo y palabras claves. En esta seccin publicamos los contenidos dinmicos, noticias, circulares del centro, artculos de opinin, galeras de fotos, convocatorias, comunicaciones, etc. Se ordenarn segn de la tempo- ralidad, es decir, segn se van publicando contenidos en novedades se van colocando automticamente en orden cronolgico inverso, esto es, del ms nuevo al ms antiguo. En portada aparecen los 6 ltimos artculos publicados. Ser muy importante establecer las palabras claves para poder recuperar los artculos a travs de las categoras. La seccin Enlaces recopila aquellos hiperenlaces ms interesantes selec- cionados por los promotores de la web. Son enlaces que contienen un ttulo, el enlace y una descripcin, se ordenan por palabras claves y los ltimos pu- blicados aparecen en la barra de la izquierda. Es importante diferenciarlos de los hiperenlaces que se incluyen dentro de un artculo, ya que estos forman parte del propio artculo. Esta seccin nace con la idea de convertirse en un repositorio permanente de otros contenidos relacionados con la temtica de la web. Por ello, es importante asociar los enlaces con las palabras claves del grupo de palabras clave homnimo. Esta seccin Blogs es una de las importantes diferencias en relacin al Modelo 2. No alberga directamente artculos con una temtica concreta, sino que contiene ms cajones en su interior, una serie de subsecciones, que cada una es un BLOG. Dentro de cada BLOG se publicarn artculo que slo apa- recern dentro del blog, es decir, son contenidos dinmicos que no aparecen en la columna central de nuestra web. Se pueden crear blogs para materias especfcas (por ejemplo el Blog de Matemticas) o para cursos concretos (el blog de 2 de ESO), o se pueden crear blogs como espacios singulares para la opinin de algn miembro de la comunidad educativa o incluso como diario de clase. Sobre blogs es interesante leer este artculo en la wikipedia http:// es.wikipedia.org/wiki/Edublog y en el blog de la especialista Tscar Lara http://tiscar.com/alfabetizacion-digital-con-blogs/ Palabras claves, como importante contenido estructurador de la web estarn las palabras clave. Estas palabras claves se engloban dentro de grupos de palabras clave, dentro del modelo hay propuestos algunos grupos para orien- tar al usuario sobre el posible uso que se le pueden dar a las palabras clave. El usuario es libre de crear tantas palabras clave como necesite. 9 spipedumanual de uso 3.1.2 El esqueleto en el Modelo 1 Hemos hablado de las secciones, que estructuran internamente el contenido de nuestra web. Ahora hablaremos de los elementos grfcos y pblicos que son comunes en el Modelo 1. La interfaz pblica se compone de un cabecera, tres columnas de contenido y un pie. - Cabecera. Se trata de una imagen que tiene un ancho no superior a 817 pxeles y un alto de 180 pxeles. Puede ser una composicin de imgenes o un fragmento del centro. La imagen se puede cambiar cuantas veces se quie- ra en el Panel de Administracin ya que es el Logotipo del Sitio. Es importante que la imagen est optimizada para internet y su peso en kb sea el menor posible, ya que se trata de una imagen de cabecera siempre se ver. - Una barra lateral de la izquierda, que contiene un men de navegacin por diferentes criterios o apartados. Por un lado, nos permite acceder a todos los contenidos de la seccin Nuestro centro. As mismo podremos colocar una imagen a travs del Logotipo de la seccin, se puede poner el escudo del centro o una fotografa del edifcio. 10 spipedumanual de uso En el apartado Contenidos aparecern los grupos de palabras claves que contienen a todas las palabras claves de nuestro sitio web.
Despus aparecen los ltimos enlaces que publicamos en la seccin Enla- ces as como un acceso directo a ver todos los Enlaces de la web. Y, por ltimo, los contenidos de esta barra lateral de la izquierda se cierran con un men de navegacin, propio de la web 2.0, conocido como nube de pala- bras claves. Aparecen todas las palabras claves de nuestro sitio web orde- nadas de manera alfabtica, con los nmeros en primer lugar y con diferentes tamaos segn el nmero de artculos que contengan dicha palabra clave.
- La columna central es en la que encontramos el contenido principal de la web, el que hemos llamado contenido dinmico o noticioso. Aparecen los 10 ltimos artculos publicados y contienen bastante informacin de cada uno de ellos: el ttulo, la fecha de publicacin, la nombre del autor/a, un logotipo (una imagen no superior a 150 pxeles de ancho), un breve resumen / epgrafe del contenido (con su correspondiente leer ms que da acceso al artculo comple- to) y las palabras clave que etiquetan y defnen el artculo. - La barra de la derecha contiene: un men de acceso al espacio privado, al correo electrnico de contacto y un botn de inicio que vuelve siempre a la portada de la web, este mismo men incluye el buscador de la web que tiene una importante efectividad, ya que busca entre todas las palabras y muestra resultados por orden de relevancia. 11 spipedumanual de uso Un calendario / agenda que funciona una vez que le asignamos a los artculos alguna fecha concreta. Es decir, hay que publicar el artculo y luego asignarle una fecha concreta en el calendario. Existe un bloque de noticias destacadas, para reforzar la presencia de noticias importantes. Esta funcin se asignar mediante palabras claves y aparecern todas las noticias destacadas que tengan dicha etiqueta. El men de acceso a los blogs, que muestra los ttulos de las subsecciones creadas al efecto. La informacin prctica donde se indica los crditos del proyecto SPIPEDU, as como la sindicacin de contenidos y la licencia del sitio: ya que todo el contenido que se publique usando los modelos de SPIPEDU se publican bajo una licencia de Creative Commons. Por ltimo, hay un apartado para las estadsticas que estn generadas de manera automtica por el sitio y que en la zona privada tiene un desarrollo grfco. - Pie de Pgina. El pie de pgina recoge la informacin ms ofcial, mostran- do principalmente los logotipos de las entidades e instituciones que colaboran o forman parte del propio proyecto. Asimismo, se indica el nombre y direccin postal del centro, as como un telfono, fax de contactos y la direccin de correo electrnico a la que poder dirigirse para comunicarse con el centro. Tambin existe un botn para la versin slo texto y para dispositivos mviles 12 spipedumanual de uso que genera automticamente SPIP. Lo vemos en la siguiente imagen: 3.2. Modelo 2 3.2.1 Secciones en el Modelo 2 Estas son las secciones que forman la estructura interna del sitio web: - Nuestro centro - Novedades - Enlaces La Seccin Nuestro centro contiene documentos de localizacin y funcio- namiento del centro. Son contenidos estticos y lo que publiquemos aqu no aparece en la columna central. Algunos de los contenidos que han sido colocados en esta seccin, el ROF, el Plan de Centro, la Localizacin y con- tacto, las diferentes memorias de direccin. Estos artculos que se dejan en la seccin Nuestro centro tienen estas particularidades: son documentos con una cierta durabilidad, una extensin en el tiempo y sobre todo una relevan- cia comunicativa que no permite que sean tratados como hechos noticiosos sujetos a la cronologa de la novedad. En la seccin Novedades publicaremos la mayor parte de los artculos. Aparecern siempre en la columna central y es importante que estos artculos tengan logotipo y palabras claves. En esta seccin publicamos los contenidos dinmicos, noticias, circulares del centro, artculos de opinin, galeras de fotos, convocatorias, comunicaciones, etc. Se ordenarn segn de la tempo- ralidad, es decir, segn se van publicando contenidos en novedades se van colocando automticamente en orden cronolgico inverso, esto es, del ms nuevo al ms antiguo. En portada aparecen los 6 ltimos artculos publicados. Ser muy importante establecer las palabras claves para poder recuperar los artculos a travs de las categoras. La seccin Enlaces recopila aquellos hiperenlaces ms interesantes selec- cionados por los promotores de la web. Son enlaces que contienen un ttulo, el enlace y una descripcin, se ordenan por palabras claves y los ltimos pu- blicados aparecen en la barra de la izquierda. Es importante diferenciarlos de los hiperenlaces que se incluyen dentro de un artculo, ya que estos forman parte del propio artculo. Esta seccin nace con la idea de convertirse en un repositorio permanente de otros contenidos relacionados con la temtica de la web. Por ello es importante asociar los enlaces con las palabras claves del grupo de palabras clave homnimo. 13 spipedumanual de uso 3.2.2 El esqueleto en el Modelo 2 La estructura o esqueleto de nuestra interfaz pblica es como se ve a la derecha: - Cabecera. Simple, se alimenta del nombre del sitio SPIPEDU, en este caso, CEIP Maestro Jos Fuentes - Sevilla Este. El nombre es algo que podemos cambiar en la propia Administracin del sitio. - Men horizontal. Que se compone de varios enlaces siempre presentes y que nunca cambian. Por un lado, un enlace a la portada del sitio. Tambin un enlace a la palabra clave que engloba a todas las galeras de fotos. Un enlace directo al correo electrnico en contactar. El acceso directo a la interfaz privada. Un enlace con suscrbete que lleva a la sindicacin de contenidos del sitio mediante la tecnologa RSS y por ltimo la versin slo texto que permite acceder a la web fcilmente desde dispositivos mviles como telfo- nos, PDA o consolas, es una versin sencilla de la web. - Contenido principal. Con contenido principal nos referimos fundamental- mente a los artculos, que se estructuran de la siguiente manera: 14 spipedumanual de uso Segn vemos en la imagen, un titular, seguido de la fecha y el autor, un epgrafe o introduccin al artculo, las palabras clave o categoras asignadas y por ltimo un enlace al Leer ms que contina con el texto del artculo. - Barra lateral. La barra lateral contiene una imagen que identifca el edifcio del centro (podra ser cualquier otra imagen, como el escudo del centro o si- milar, esta imagen ser el Logotipo del Sitio que se gestiona en Confguracin del Sitio), seguido de un potente buscador para realizar bsquedas a partir de una o ms palabras. A partir de ah, le sigue un listado de los que estn incluidos en la seccin Nuestro centro o Mi Centro, es decir, la informacin esttica. A continuacin encontraremos aquellos artculos etiquetados con la palabra clave Noticia destacada que podemos encontrar en el grupo de pa- labras clave Tipos de contenido, podremos activar o desactivar esta palabra clave en el artculo para que forme parte de ese apartado en la web. A continuacin aparecern los nombres de los Grupos de Palabras Claves que hayamos creado es lo que hemos llamado buscar por categora. En esta barra lateral, nos encontramos con otro tipo de informacin relevante para identifcar la pgina web y conocer ms acerca de ella. En Sobre esta web, se indica que este sitio web forma parte del proyecto SPIPEDU, desa- rrollado con SPIP y bajo la asesora tcnica de la empresa Hapaxmedia.net. Se hace referencia tambin a la licencia del sitio: se publica bajo una licencia de Creative Commons. Y por ltimo, un apartado para las estadsticas nos permite conocer las visitas y nmeros totales de artculos y autores y autoras que participan en el sitio. Estas estadsticas, para consumo interno, tienen ms informacin en la interfaz privada del sitio web. Pie de Pgina. El pie de pgina recoge la informacin ms ofcial, mostran- do principalmente los logotipos de los proyectos que lleva a cabo el centro. Asimismo, se indica el nombre y direccin postal del centro, as como un telfono y fax de contactos y, la direccin de correo electrnico a la que poder dirigirse para comunicarse con el centro. Lo vemos en la siguiente imagen: 15 spipedumanual de uso 4 - Trabajando con un modelo En el apartado anterior hemos desarrollado los elementos bsicos de los Modelos 1 y 2 de SPIPEDU. En l hemos adelantado algunas acciones relacionadas con palabras claves y secciones, ahora vamos a explicar paso por paso cmo traba- jar internamente. Como norma general, y mientras no se diga la contrario, estas acciones sern vlidas para el Modelo 1 y 2. Recuerda que toda nuestra interfaz de trabajo est en castellano y otros idiomas co-ofciales del Estado. Otro aspecto importante es que si vas a utilizar SPIPEDU tienes que instalarlo en tu sitio web para ello hemos elaborado otro Manual que explica la instalacin. 4.1. Consideraciones previas del espacio privado El espacio privado es diferente segn seas Administrador o Redactor. Vamos a trabajar siempre sobre la opcin de Administrador ya que el Redactor slo podr proponer artculos. Para acceder pulsa en espacio privado o teclea www.tusitio. com/ecrire La primera accin que tienes que ejecutar, siempre que te conectes por primera vez con tu nombre y con tu usuario a un sitio con SPIP es pasar de la interfaz simple a la interfaz completa. Pulsa en esta pestaa. Veamos todos los elementos que nos encontramos en la interfaz completa de nuestro sitio interno: Mis Tareas, encontraremos todos los atajos directos a publicar contenidos, aparecern los artculos en redaccin, as como las notifcaciones de adminis- trador: validacin de artculos, de foros, etc. Edicin del sitio, encontraremos todos los artculos y la estructura de nuestro modelo, las secciones. En l podremos acceder como administradores a todos los artculos publicados, en curso de redaccin y propuestos a evalua- cin. Tambin encontraremos la edicin de las palabras claves. Para usuarios avanzados aqu encontraris un editor HTML de los esqueletos. Foro interno, es una herramienta de teletrabajo sobre la web, permite hacer comentarios internos de los artculos. En principio no es una herramienta que se use mucho porque normalmente el grupo que gestiona la web tiene reunio- nes presenciales para tratar estos asuntos. Autoras y autores, es donde gestionaremos los administadores, los adminis- 16 spipedumanual de uso tradores restringidos, los redactores, los podremos crear, borrar y modifcar sus datos. Estadsticas de Visitas, ah podremos saber el nmero de visitas por seccio- nes, por artculos y conocer quin nos enlaza, as como las palabras que se utilizan en los buscadores para encontrar nuestra web. Confguracin del sitio, es el verdadero espacio de Administracin de la web, todo lo que se toque ah podr afectar mucho a la web y podremos crear confictos y errores externos. Para los usuarios normales de SPIPEDU slo usaremos este apartado para cambiar la direccin, telfono y correo electrni- co, as como para colocar la cabecera del Modelo 1 y el nombre del centro del Modelo 2. En principio no es necesario tocar nada ms de la Confguracin del Sitio. Ayuda, una potente ayuda on.line, consltala y te sorprenders. No vamos a desarrollar algunos elementos que ah estn muy claros as que en todo mo- mento haremos referencia a ella. Es muy til porque est disponible en todo momento a travs de botones como este: Visitar el Sitio, es un botn que sirve para ir a la portada pblica de nuestra web. Se utiliza normalmente para comprobar los cambios que hemos realiza- do en la web, por ejemplo, despus de publicar un artculo. Tambin en la interfaz interna tenemos esta barra de atajos, que tiene estos iconos: De izquierda a derecha. Acceso directo a todo el sitio, a todas las secciones y subsecciones en el caso de que las haya. Navegacin Rpida, para crear artculos o referenciar sitios de una manera rpida. Un potente Buscador interno que te devuelve artculos, enlaces, palabras claves, muy til cuando el volumen de artculos crece. De izquierda a derecha. Agenda en el que incluir eventos y recordatorios pbli- cos y personales, no confundir con el plugin agenda, esta es de uso interno en el que automticamente se marcan los das en que se publican artculos. Mensaje- ra Personal, acceso directo a recordatorios personales, Mensaje a algn autor y Anuncios a todos los autores. Seguir la vida del sitio se puede hacer de diferentes maneras, usando RSS, sincronizando la agenda con el protocolo ical o usando una simple lnea de javascript para colocar los artculos publicados en cualquier archivo HTML De izquierda a derecha. Interfaz simple / Interfaz Completa que permite cambiar el aspecto de la parte interna como ya hemos visto. Los tres iconos permite eliminar los mens que estamos viendo y dejar slo las letras o los logos o mantener los dos que es el que tenemos por defecto. Con Pantalla pequea / Pantalla Completa aprovecharemos la resolucin al mximo, para poder ver todo correctamente. Segn tu resolucin de pantalla lo vers de una forma u otra. Los colores, cambian la visualizacin de tu interfaz de trabajo. Ojo no cambia los colores de la interfaz pblica. Nos permite cambiar el idioma de nuestra interfaz privada. Hay muchos. El botn verde y blanco indica salir de la sesin, para entrar con otro nombre o para dejar de administrar la web. Cuando ests en ordenadores pblicos es importante que pulses ese botn y as te garantizas que nadie usurpe tu identidad o entre en tu cuenta por error. 17 spipedumanual de uso 4.2. Creacin de autores Ser una de las primeras acciones que tendremos que hacer, es importante que decidamos el nmero de administradores y redactores que vamos a tener en la web. De todos modos ya hemos comentado que cuantos ms administradores mejor, porque un redactor no puede publicar el artculo, y tiene que esperar que un administrador lo haga. Adems si todos somos administradores tenemos una estructura de trabajo ms horizontal. Si creas un grupo de trabajo para desarrollar la web de tu centro permite a todos los miembros de tu grupo que publiquen sus propios contenidos. Puede que alguno se equivoque o haga algn estropicio pero todo se puede arreglar y lo mejor es que todos podris arreglarlo. Hay experien- cias en algunos centros que han creado Redactores para el alumnado, puede ser interesante de cara a un blog realizado por ellos, por poner un ejemplo. Pulsamos en Crear un nuevo autor o autora y nos encontraremos con una pgi- na sencilla que nos pide los datos siguientes: Firma: Tu nombre tal y como aparecer cuando publiques un artculo, puede tener tildes y espacios. Es OBLIGATORIO Correo Electrnico: No es obligatorio pero permite que los usuarios se pongan en contacto contigo. Nos saltamos Sitio Web y tu clave PGP, esto es para usuarios avanzados. Vamos al apartado ms importante el de Login y Tipo de Autor: Login: es el nombre con el que acceder el autor al espacio privado, evita los caraceteres raros y las tildes, aunque las acepta siempre es mejor no arriesgarse en este sentido. Lo ms fcil es que sea tel nombre del autor Contrasea: que tenga ms de 5 caracteres y sea fcil de recordar, se puede crear el nombre del autor dos veces y luego que cada autor la cambie. Si alguien olvida su contrasea hay que sobreescribir con una contrasea nueva. Tipo de Autor: Redactor/a o Administrador/a. Tambin lo puedes enviar a la pa- pelera, esta ser la forma de borrar a autor. Cuando elijas Administrador/a vers que puedes restringir a una seccin concreta (pulsa en el tringulo de la derecha para desplegar esta opcin), esta medida es sobre todo se puede usar con la seccin Blogs del Modelo 1, aunque no es necesario. 18 spipedumanual de uso 4.3. Publicar un artculo Este quizs sea el apartado ms importante de este manual porque SPIPEDU funciona slo si hay contenidos, vamos a intentar ser lo ms exhaustivos posibles, pero si te atascas o haces algo mal es importante que mires la ayuda a travs de los botenes de interrogacin: Accede desde Mis Tareas o desde el Acceso Directo correspondiente a la funcin Nuevo Artculo. Este botn crear una entrada en la base de datos y le asignar un nmero nico que identifcar para siempre a tu artculo. Estas son las tres cosas que tendrs que rellenar. Si vas a escribirlo in situ, como si se tratase de un procesador de textos al uso, ponle un ttulo y dirgete a Guar- dar. Si no lo haces puedes perder toda la informacin si por casualidad la web se cae o similar. Dndole a guardar ya tendrs tu artculo creado. Ttulo: no debe ser muy largo ni muy corto, unas 7 u 8 palabras es perfecto. Si vas a usar todo en maysculas procura que todos los artculos tengan los ttulos en maysculas. Lo que elijas o lo que decida el grupo de trabajo que se cumpla, ya sea todo mayscula, o minsculas. Convenid entre todos unas mnimas normas de estilo como esta. Seccin: Por defecto elegiremos normalmente Novedades, que es donde se ubicarn los contenidos diarios que no pertenecen a los elementos estticos del centro, la seccin Nuestro Centro. Si publicas un artculo en una seccin que no es, en la web pblica vers que o no aparece o aparece en una barra que no debiera. No te preocupes todos los cambios se pueden hacer cuantas veces sea necesario. Recuerda: Contenidos Estticos en la Seccin Nues- tro Centro y Contenidos Dinmicos en la Seccin Novedades. En la seccin Enlaces slo publicaremos sitios referenciados (ver ms adelante). Epgrafe o Descripcin: Escribe una 40 palabras, piensa que se trata de una introduccin o breve resumen del artculo que sigue, es importante esto para cuando aparezca en la portada del sitio web. Quizs puedes escribirlo al fnal, cuando ya lo hayas terminado. Texto: Se trata del texto completo de la noticia que ests escribiendo. Si copias el texto de otro sitio perders el estilo (las negritas, cursivas y aparta- dos) as que te recomendamos que aprendas algunos de los recursos para ponerlos fcilmente, aunque siempre podrs usar la barra de herramientas que tienes para ello. Los atajos tipogrfcos de SPIP: Cursivas: { palabra } Negritas: {{ palabra }} Interttulo: {{{ palabra }}} Enlaces Externos: [palabra->http://] Enlaces Internos: [palabra->nmero de artculo] 19 spipedumanual de uso Si te resulta ms sencillo siempre puedes seleccionar la palabra y usar los boto- nes: Hay ms recursos o atajos tipogrfcos propios de SPIP, por ejemplo las listas de un solo nivel se hacen con guiones ( - ), pero se le pueden aadir hasta tres niveles de jerarqua utilizando asteriscos ( * ) y si usas la almohadilla (#) puedes hacer listas numeradas . - Listas - Nivel 1 -* Nivel 2 -** Nivel 3 -# Lista numerada Si quieres hacer una lnea horizontal (HR en HTML) puedes hacerla poniendo unos cuantos guiones seguidos sin espacios: Lnea Horizontal ---- . Para hacer citas de otros utiliza este cdigo <quote> Frase que queramos citar </quote> y por ltimo una que es muy sorprendente y til: Si usas la sentencia [?palabra] el servidor se conecta a la WIKIPEDIA en espaol y crea un enlace directo a su de- fnicin si existe. RECUERDA: Es importante que si vas escribiendo poco a poco uses cada cierto tiempo el botn de Guardar: Una vez que hayas terminado o dado a guardar te encontrars con una nueva pantalla que te permite seguir trabajando en tu artculo. En esta segunda panta- lla tenemos las palabras claves, el logotipo del artculo, la posibilidad de cambiar o sumar autores, la fecha de publicacin, la posibilidad de incluir documentos y si usas el Modelo 1 la inclusin en la agenda pblica de un evento relacionado con lo que escribes en ese momento. Logotipo del Artculo: Ser una imagen no superior a 150 pxeles de ancho que nos permitir ilustrar grfcamente en la portada nuestro artculo. Es importante que la imagen haga referencia al contenido del artculo: 20 spipedumanual de uso Palabras Claves, es muy importante que nos detengamos a asignar palabras claves, as podremos desarrollar una web ms transversal y dinmica. Por defecto estn creados diferentes grupos de palabras claves segn los modelos. Se tienen que crear palabras claves nuevas, lo veremos ms adelante. Para asignar pala- bras claves tienes que desplegar el tringulo negro: Repite esta accin cuantas veces sea necesario. Una sugerencia para saber si tu artculo pertenece a una palabra concreta es que te lo plantees como una pre- gunta Mi artculo es de Francs? Mi artculo es una programacin? Mi artculo es de Primaria? Mi artculo es del curso 2005 / 2006? Es un mtodo sencillo y efcaz. Ahora segn lo necesites puedes, seguir editando el artculo, aadir un documen- to, aadir imgenes o una galera de fotos o proponer tu artculo para la evalua- cin. Veamos cada una de las opciones. Aadir documentos: Se puede hacer en la misma pgina en la que estamos, es un pequeo formulario que est cerca de modifcar este artculo. Al artculo podemos incluirle todo tipo de documentos de texto, archivos PDF y archivos multimedia. Existe un lmite de 2 megas por documento y te recomendamos que uses archivos libres. Recuerda lo de Software Libre con cario y no lo estropees con algn archivo que slo puedes ver en la ltima versin de Microsoft, por poner un ejemplo corriente. Cuando subes un documento automticamente aparecer un icono en miniatura que indica qu tipo de archivo es. Ese icono lo puedes modifcar si quieres pero te recomendamos que los uses porque son muy fciles y comunes de entender. El documento lo puedes titular y ponerle una descripcin. Como se puede ver en la imagen adjunta puedes incluso poner la fecha de publicacin del documento. Es importante atender al cdigo que aparece debajo del logotipo. En nuestro ejemplo es <doc 1> ese cdigo servir para localizar el documento y sobre todo 21 spipedumanual de uso para incluirlo en nuestro texto. Si queremos que aparezca en un punto concreto del texto o si lo queremos repetir en otros artculos slo tenemos que colocar el cdigo y aparecer. Los documentos se borran directamente en el botn suprimir este documento. Puedes publicar todos los documentos que quieras. Slo tienes que repetir el proceso indicado cada vez que lo necesites. Un consejo si vas a subir muchos archivos a un mismo artculo es comprimir todos los que quieras que aparezcan, de diferentes extensiones y tipos. SPIPEDU reconocer los archivos que incluyas en un ZIP y te preguntar si quieres subirlo como ZIP o si quieres que lo descomprima. Aparecern cuadros de dilogo como el anterior uno por cada archivo. Aadir imgenes: En teora es un proceso diferente al de subir un documento, pero te dars cuenta, con la prctica, que es lo mismo. Aunque no es necesario para subir documentos o imgenes te recomendamos que guardes al menos una vez el artculo. Si entras a editar te encontrars a la izquierda, arriba, con un cuadro de dilogo similar a este: Es importante que la imagen que subas no sea superior a 400 pxeles de ancho y que sea de uno de los siguien- tes formatos: JPG, PNG, GIF. Si haces una foto con una cmara digital o escaneas un folio A4, tienen una media de 2000 pxeles de ancho. Si subes esa imagen te dars cuenta de que no aparece en el artculo o aparece ocu- pando toda la pantalla. Recuerda que tu imagen no puede pesar ms de 2Mb. Para saber lo que mide la imagen que hemos subido podemos verlo en el Cuadro de Dilogo que aparece al subir el archivo, similar al que tenemos aqu al lado. En este cuadro de dilogo encontraremos las mismas opciones que en el de subir documento. El cdigo de localizacin del archivo incluye la opcin de left, cen- ter, right, es para organizarlo dentro de tu documento, si haces doble click sobre el cdigo se incluir en el cuerpo de texto. Una cosa importante es que si vas a modifcar el ttulo o la descripcin de la imagen tienes que darle a Guardar antes de Guardar el artculo, si modifcas algo y no lo salvas antes de Guardar el artculo lo vas a perder. 22 spipedumanual de uso En las imgenes es muy til usar lo que hemos comentado antes del archivo com- primido en ZIP. Podremos hacer rpidamente una galera de fotos con todas las imgenes. Si queremos localizarlas con el cdigo tendrs el orden que quieras, sino siempre te lo har de manera automtica SPIPEDU a travs de Miniaturas que al pulsar muestra la imagen ms grande. Publicar: Una vez hemos terminado nuestro artculo tenemos que decidir si lo pu- blicamos o pedimos que nos lo publiquen. Si eres administrador/a podrs hacerlo, si eres Administrador/a Restringido slo podrs hacerlo en la seccin que tienes permisos, si eres redactor/a slo podrs proponer que tu artculo se publique y un administrador lo har por t. Para publicar atiende a este cuadro de dilogo: Que tiene las opciones siguientes en el modo administrador: - En curso de redaccin, es el estado inicial de cualquier artculo, hasta que no lo termines no lo pongas en otro estado que no sea ese. - Propuesto a la evaluacin, si quieres que tu artculo lo revise otro administra- dor o si eres redactor y quieres que algn administrador/a te lo publique. - Publicado, para hacerlo pblico en el sitio web. - A la papelera, para borrarlo de la base de datos. - Rechazado. Si un administrador no lo ve correcto y pide que lo cambie lo puede rechazar. Para ejecutar estos estados es importante que una vez lo elijas, pulses sobre el botn de validar el estado de tu artculo. Te mostramos la imagen para que veas bien cmo se hace: Una vez publicado tu artculo puedes verlo en lnea de dos maneras, usando el botn de Visitar el Sitio que est arriba a la derecha en nuestra barra de herra- mientas de Administradores o debajo del nmero de artculo aparecer un nuevo botn llamado ver en lnea. Et voil! Tenemos nuestro artculo publicado. Repite estos pasos para cada art- culo nuevo. El orden de los pasos es indiferente. En la pgina siguiente encontrars un resumen de todos los pasos, sin las imge- nes, que realizamos para las compaeras del Colegio Maestro Jos Fuentes, es un documento muy til que puedes imprimir y tener a mano delante del ordenador. 23 spipedumanual de uso Como publicar artculos en la web 1. Entrar en la web: http://www.tusitio.com y una vez dentro acceder al espacio privado http://www.tusitio.com/ecrire. Introducir vuestro login y luego vuestra con- trasea. 2. Arriba en el centro de la web, hay el dibujo de un sol en pequeito: colocarlo en Interfaz completa (esto slo hay que hacerlo la primera vez). 3. Dependiendo del contenido que vayas a crear entra en Novedades (contenido dinmico) o Nuestro Centro (contenido esttico). 4. Una vez dentro del deseado, le damos a la pgina hasta abajo del todo y selec- cionamos: Nuevo artculo pulsando una sola vez sobre ste. 5. Ya vamos a crear nuestro artculo y los pasos son: 5.1. Escribir el ttulo. 5.2. Escribir un pequeo Epgrafe (es obligatorio). Es un resumen del conteni- do del texto, y suele ser lo que sale en la web inicial antes de entrar a leer en profundidad el texto. 5.3. Escribir el texto: Introduccin, objetivos, contenidos, actividades, fotos, etc.... 5.3. Nos vamos abajo del todo y le damos a guardar. 6. Para meter fotos en el texto, una vez guardado volvemos a entrar en l, le damos a modifcar este artculo y volvemos a entrar en l. Arriba a la izquierda aparece una ventana que dice: AADIR UNA IMAGEN le dais a examinar en vuestro ordenador, la seleccionis y luego le dais a subir. 7. La Imagen a subir: recordad que deber ser modifcada, y el tamao recomen- dado es 400 pxeles de ancho. Puedes usar GIMP para modifcarlo o cualquier programa de retoque digital. 8. Una vez subis la foto, abajo os aparecer una ventana donde le colocaris el nombre a la foto, este nombre aparecer como pie de foto en el artculo. Le ponis ttulo y le dais a guardar. Una vez guardada, volvis a entrar en modifcar el artculo y copiis los cdigos de debajo de la foto que sern como estos: en la zona del texto donde queris que aparezca la foto. Volver a guardar el artculo. 9. Estos pasos se deben hacer para cada una de las fotos a subir o puedes me- terlas todas en un ZIP y subirlas de una vez. 10. IMPORTANTE: hay que ponerles las palabras claves con las que el texto est relacionado, cuantas ms mejor. Pulsar la pestaa (triangulo negro) que aparece junto a palabras claves y seleccionar las deseadas pulsando en Elegir. Cuando termines proponlo a la evaluacin de los dems y si ests muy seguro de que tu artculo es correcto ponlo en el estado PUBLICADO. Recuerda pulsar en validar. 24 spipedumanual de uso 4.4. La cach de SPIP Un punto importante en este momento es hablar de la cach de SPIPEDU. La cach es el sistema que permite servir las pginas ms rpidamente. Cada vez que publicamos un artculo o hacemos alguna modifcacin es importante que renovemos la cach, para que muestre el contenido nuevo y no el anterior. Para ello tenemos dos formas de hacerlo, la ms comn es que cuando visitemos el sitio o veamos en lnea el artculo, si no se ha modifcado nos encontraremos con una pestaa como esta: Si pulsamos sobre ella deber actualizarse pero la cach es algo que depende de muchos factores, tipo de servidor, conexin a internet, navegador que uses... as que existe una opcin ms drstica que no recomendamos usar de manera habitual. Se trata de la funcin que permite borrar la Cach en el panel de Admi- nistracin de SPIPEDU: Pulsamos en vaciar la cach de arriba y ya nuestros artculos deben aparecer correctamente. A modo de recopilacin vamos a hacer un listado de consejos y recordatorios para publicar un artculo. Te lo puedes imprimir y tenerlo siempre a mano, cuando publiques el tercer artculo ya no te har falta este documento. 25 spipedumanual de uso 4.5. Publicar contenidos multimedia Cada vez ms Internet se audiovisualiza y podemos encontrarnos con vdeos presentaciones en powerpoint o msica. En SPIPIEDU hemos activado varios plu- gins para poder incrustar archivos de audio. As mismo os explicamos brevemente cmo colgar vdeos de Youtube y similares. - Archivos MIDI: El MIDI es el acrnimo de Musical Instrument Digital Interface estos archivos se usan por dispositivos musicales electrnicos para interpretar y compartir partituras. Los archivos MIDI contienen la informacin que el ordenador interpreta y reproduce las notas. Son archivos que ocupan muy poco espacio y son ideales para ilustrar artculos con canciones. Para colocarlos en nuestra web tenemos que seguir estos sencillos pasos sobre un artculo ya creado: 1. Subir archivo como Documento Adjunto 2. Ponerle una descripcin 3. Incluir el siguiente cdigo <embXX|autostart=true|loop=true> , las XX hacen referencia al nmero automtico del documento. Cuando hayamos hecho estos pasos tendremos en nuestro navegador la msica elegida. - Archivos MP3: Es el tipo de archivo ms usado en internet para compartir msi- ca (existen otros como el OGG que tambin son vlidos para SPIPEDU), existen dos formas de colocar el audio en tu artculo ya creado: 1.- Si tienes el archivo MP3, sbelo como documento adjunto y para activar el plugin tienes que poner el siguiente cdigo: <docXX|player> y aparecer algo como esto:
que si pulsas sobre el PLAY te devuelve un player de esta manera: 2.- Si no tienes el archivo MP3 pero sabes su direccin concreta en internet tienes la opcin de vincular (no subirlo) el archivo como un documento nuevo. En el cuadro de dilogo de subir un documento si pulsas sobre el tringulo se despliega una pestaa que te permite incluir una direccin de internet. Ten en cuenta que tu direccin ha de terminar siempre en .mp3 porque tienes el enlace directo al archivo. Una vez hecho esto el proceso es idntico al del punto anterior, pones el cdigo <docXX|player> y tendrs el player que has visto arriba. Te mostramos a continuacin la imagen de cmo se vinculan los archivos mp3 que estn en otras pginas web. - Videos y Presentaciones Electrnicas: Como recordars, por defecto, SPIP tiene una limitacin de archivos de 2 megas, por eso los vdeos y las presentaciones electrnicas (tambin conocidas como Powerpoints) vamos a colocarlos desde otros servicios de vdeo y presentaciones electrnicos. Esta opcin es ms un consejo o apoyo a la edicin de contenidos que algo propio del proyecto SPIPE- DU. Para colocar archivos de vdeo, presentaciones de fotografa y otras cosas tendremos que utilizar la opcin embed que tienen estos servicios gratuitos. Una vez tengamos nuestro artculo guardado nos iremos a Youtube.com o a Dailymotion.com (para vdeos) y a Slideshare.net o Slide.com (para presen- taciones electrnicas) y cogeremos el cdigo embed y lo copiaremos en nuestro artculo. As ya tenemos el vdeo en nuestra web. Estos servicios son gratuitos as que puedes darte de alta para colocar ah tus vdeos y/o presentaciones y luego pa- sarlas a SPIPEDU. Aqu tienes de cmo aparece el cdigo en Youtube: 26 spipedumanual de uso 4.6. Publicar enlaces o sitios referenciados En SPIPEDU encontrars el nombre Sitio Referenciado y la Seccin Enlaces, si te diriges a ella o a travs de cualquier acceso directo pulsa sobre el botn que nos mostrar un cuadro de dilogo con dos opciones: Si usamos esta opcin automtica pondr todos los contenidos de nuestro enlace, pero que eso funcione bien depende de la web que queramos referenciar, si esa pgina no est bien hecha o no tiene un ttulo, descripcin que nos interese, no saldr bien la cosa. Por este motivo existe una segunda opcin que es la de poner manualmente los siguientes datos: Nombre del sitio: Es importante que sea descriptivo y nomine bien la web, no tiene sentido que sea por ejemplo dibujos infantiles, porque podrn haber ms de una web de dibujos. Este campo es obligatorio Direccin del sitio: Tiene que empezar con http:// Este campo evidentemen- te es obligatorio. En el interior de la seccin...: Siempre tiene que ser Enlaces Descripcin del sitio: Una descripcin breve para que cuando busquemos los enlaces sepamos bien a qu nos estamos refriendo. Una buena descrip- cin siempre ayudar en la bsqueda y el usuario lo agradecer. La sindicacin y su URL: es una opcin que no hemos activado, pero podramos recuperar en nuestro SPIPEDU los artculos publicados en otras web. Veamos el cuadro de dilogo al que nos hemos estado refriendo: 27 spipedumanual de uso Cuando le demos a Guardar o Aadir en la primera de las opciones nos aparece- r un nuevo cuadro de dilogo. Muy parecido al de la gestin de artculos donde podremos aadir las palabras claves, podemos modifcar lo que no nos guste, podremos publicarlo o borrarlo. Hay que elegir las palabras claves del grupo de palabras claves: Enlaces Cuando elijamos el estado en el que estar el sitio es importante que le demos a Validar. Una vez hecho este proceso lo podremos repetir cuantas veces necesite- mos publicar un enlace. Recuerda que estos enlaces se vern en la parte pblica ordenados por fechas en la barra izquierda en el Modelo 1 y en la barra derecha en el Modelo 2. 4.7.- Gestin de la agenda La agenda funciona nicamente para el modelo Profesor Juan Bautista El Viso del Alcor, su funcionamiento es muy sencillo. Cuando hayas publicado un artculo podrs agregarlo a una fecha concreta. Su uso es para marcar reuniones futuras o pasadas en el calendario. El procedimiento es el siguiente, una vez publicado tu artculo encontrars: 28 spipedumanual de uso Despliega la pestaa / tringulo y encontrars: Elige la fecha y hora concreta de la actividad, puedes poner una descripcin y una duracin, por ejemplo para marcar los periodos no lectivos o para marcar reunio- nes. Cuando pulses en Aadir tu evento se incluir en la base de datos y aparece- r marcado con un recuadro verde. 4.8. Gestionar comentarios Tambin en exclusiva para el Modelo 1, los comentarios permiten interactuar con los visitantes y usuarios de nuestra web. Aunque SPIP lo llame foro no se trata de un foro abierto en el que todos pueden plantear un tema, sino que funcionan como comentarios dentro de un artculo, la gestin de los comentarios (borrar re- peticiones o comenarios no deseados, activarlos o desactivarlos, aprobarlos...) se hace en cada artculo. Es decir podemos establecer para cada artculo diferentes sistemas de moderacin, a priori o a posteriori. No obstante existe una pgina de moderacin de todos los comentarios de la web. Vayamos por partes. - Tipos de Moderacin. La moderacin por defecto en el Modelo 1 es a pos- teriori, lo que signifca que no hay moderacin. Tenemos adems tres opciones ms, que no haya posibilidad de hacer comentarios (Sin foro), que slo pueden publicar comentarios los usarios registrados en la web (administradores o redacto- res) o que sea con moderacin a priori , es decir, que para publicar el comentario un administrador de la web tendr que validarlo. En la pgina de tu artculo tienes las diferentes opciones justo debajo del Logotipo del Artculo. Elige la que ms te convenga. - Borrar un comentario, siguiendo con la imagen de arriba vemos que aparece ah Actualidad del foro pblico: 5 contribuciones, es decir, que hay 5 comen- tarios. Pulsamos y aparecer una nueva pgina que nos permite ver todos los comentarios. Ah podremos borrar los que sean SPAM, estn repetidos o no se 29 spipedumanual de uso ajusten a las normas que hayamos establecido. Los comentarios quedarn ocul- tos pero no desaparecern de la base de datos ya que si hay algn otro usuario que considera que no debe ser borrado puede ser recuperado fcilmente. Veamos en la siguiente imagen un ejemplo de comentario borrado, el que tiene el recuadro discontinuo en rojo y un comentario pblico. Pulsando en los botones de la izquierda arriba lo validamos o lo borramos. Es posible que a veces tengis algn comentario de SPAM, en las diferentes versiones de SPIP que se van realizando se estn mejorando estos asuntos. Si os encontris un comentario con publicidad, normalmente en otro idioma, borrarlo porque es SPAM. Si queris gestionar todo el foro pblico, es decir, sin ir artculo a artculo podis entrar en Seguir y administrar los foros y aparecern todos los comentarios. El botn es este: 4.9. Gestin de blogs Los blogs slo estn disponibles en el Modelo 1. No existe ningn Blog creado priori as que vamos a explicar aqu cmo se crea un blog en muy pocos pasos. Los Blogs los puede crear cualquier Administrador dentro de la seccin BLOGS. Accedemos a la Seccin Blogs y ah pulsamos sobre Crear una Nueva Subsec- cin. Es importante no crear subsecciones ms all de Blogs, si creis un blog dentro de otro blog no existir as que la jerarqua ser Raiz del Sitio / Blogs / Nombre de vuestro blog 30 spipedumanual de uso En la imagen podis ver cmo ya existe un blog de Artculos de Opinin. En nues- tro ejemplo vamos a crear un blog nuevo de Matemticas. Para ello tendremos que indicar un ttulo y un resumen, una breve descripcin de los objetivos del Blog ya que esta descripcin estar visible en nuestra pgina de los blogs. El siguiente paso, antes de empezar a poner artculos en la subseccin Blog de Matemticas, es colocar el Logotipo del Blog. Esta ser una imagen que identifca al Blog y que aparecer en nuestra web igualmente. Guardas el ttulo y la descripcin y aparecer esto: Elegiremos una imagen de un ancho no superior a 160 pixeles y una vez subida ya lo tendremos listo para empezar a publicar artculos. Recuerda que estos art- culos colocados en la seccin de BLOGS no aparecen en la portada si no que hay que entrar a travs del men de blogs que tenemos en el barra derecha. As ms o menos ha quedado nuestro blog Matemticas con el artculo sobre Webquest Probabilidad ya publicado. La imagen de los nmeros es nuestro logotipo del blog y lo que est entre lneas verdes la descripcin. 31 spipedumanual de uso 5 - Breve introduccin al diseo y modicacin de esqueletos El trabajo de aplicacin de los sitios web SPIPEDU en el CEP de Alcal de Guadaira nos ha llevado a desarrollar esta pequea introduccin a la edicin de esqueletos. Una introduccin que realmente es breve porque no es el objetivo de SPIPEDU generar nuevos modelos. Hemos constatado que hay inters en per- sonalizar o en aadir y cambiar cosas de la parte visual, si conoces el Lenguaje HTML y CSS podrs cambiar algunas de las cosas que hay en tu modelo. Gracias al Plugin Editor de Esqueletos que est instalado en tu sitio web pue- des acceder a todos los archivos que lo confguran y editar su cdigo fuente. Es decir que te encontrars cdigo HTML, CSS, PHP y la sintaxis propia de SPIP. A travs de la edicin del sitio podris acceder a un botn que pone Editor de Es- queletos ah aparecer un listado, a la izquierda, con todos los archivos que tiene vuestro sitio web. Pulsad sobre el que queris modifcar y os aparecer el cdigo que tendris que editar manualmente o descargarlo para editarlo en un editor HTML externo. Tambin tenis la opcin, abajo a la izquierda, de cargar archivos html nuevos que hayis creado y desde ah mismo subir lo modifcado. La ventaja principal de este editor es que no tenis que depender de una cuenta FTP ya que a travs de esta interfaz podris manejar todo a vuestro gusto. En la imagen podris ver cmo hemos cargado el archivo pie.html, es el ms sencillo de editar ya que si conocis el cdigo podris ver cmo las imgenes de los logotipos ofciales estn incluidas en un listado horizontal. Si queris eliminar alguno podis borrar por ah. Recuerda que el HTML es un lenguaje de marcas y eso signifca que funciona abriendo y cerrando etiquetas <html> </html> no os olvidis nunca de abrir y cerrar las etiquetas. Es tambin recomendable que guardis una copia de seguridad del archivo antes de empezar a tocarlos, es decir, descargis el archivo pie.html y si os habis equi- vocado slo tenis que volver a subirlo y sobreescribir el archivo estropeado. Todo lo que os encontris con almohadillas o con palabras en francs sern las sentencias propias del lenguaje de SPIP, en la imagen de arriba lo encontris arri- ba #DESCRIPTIF_SITE esas sentencias son llamadas a la base de datos. Para conocer bien la sintaxis de SPIP tienes un enlace fundamental http://www.spip. net/@ en donde se explican las balizas, los criterios, los boucles, etc, que llaman a la base de datos de tus artculos. Recordad tambin que el diseo de vuestro sitio web usa CSS y hay un archivo que controla todo el diseo, tipos de letras, colores, tamaos de columnas, enla- ces etc. Ese archivo en el modelo 1 se llama profesor_juan_bautista.css y en el modelo 2 spip_style_naranja.css Si necesitis ayuda acudid a la comunidad en espaol de SPIP o consultar al- gunos manuales de HTML y de SPIP avanzado que existen en la web ofcial del proyecto www.spipedu.es spipedumanual de uso