- Inicio >
- RECURSOS Educativos >
- Software >
- SPIP >
- Sección Avanzada sobre SPIP

Sección Avanzada sobre SPIP
Artículos de esta sección
Avanzando con SPIP - Índice
Avanzando con SPIP - Índice
1) Instalación de plugins en SPIP 1.9
2) Intercambio de variables entre SPIP y PHP
3) La base de datos de SPIP
4) SPIP Add-ons
5) Esqueleto para descargar
La base de datos de spip
Como sabemos SPIP usa una base de datos MySQL para guardar los distintos artículos, secciones, autores, etc. La base de datos tiene una serie de tablas con nombres del tipo spip_articles, spip_auteurs, etc.
Disponemos de información sobre algunos de los campos en los artículos de spip.net:
La structure de la base de données
Estructura de la base de datos
El artículo original (en francés) se encuentra desactualizado (y por tanto la traducción), no obstante y aunque no están todos los campos, en los anteriores artículos se explica para qué sirven los principales campos.
Además se puede ver un esquema general de la base de datos en:
doc.spip.org (observa el fichero pdf).
Si tienes servidor propio, o bien aceso al servidor donde está alojada tu base de datos de spip, puedes consultarla usando sentencias de MySQL o mediante el programa PhpMyAdmin. Para más información mira los artículos: Instalando MySQL y PHPMyAdmin.
Si no recuerdas el nombre de tu base de datos, puedes obtenerlo (además de la contraseña) del fichero: ecrire/inc_connect.php.Si NO tienes servidor propio o no puedes acceder mediante mysql a tu base de datos, aquí tienes la estructura de la base en una instalación de spip versión 1.91:
En primer lugar veamos las tablas disponibles:
mysql> show tables;
Tables_in_spip191 spip_ajax_fonc spip_articles spip_auteurs spip_auteurs_articles spip_auteurs_messages spip_auteurs_rubriques spip_breves spip_caches spip_documents spip_documents_articles spip_documents_breves spip_documents_rubriques spip_forum spip_groupes_mots spip_index spip_index_dico spip_messages spip_meta spip_mots spip_mots_articles spip_mots_breves spip_mots_documents spip_mots_forum spip_mots_rubriques spip_mots_syndic spip_ortho_cache spip_ortho_dico spip_petitions spip_recherches spip_referers spip_referers_articles spip_rubriques spip_signatures spip_syndic spip_syndic_articles spip_test spip_types_documents spip_types_tables spip_versions spip_versions_fragments spip_visites spip_visites_articles 42 rows in set (0.00 sec)
Veamos ahora la estructura de algunas de las tablas:
mysql> describe spip_articles;
Field Type Null Key Default Extra id_article bigint(21) PRI NULL auto_increment surtitre text titre text soustitre text id_rubrique bigint(21) MUL 0 descriptif text chapo mediumtext texte longblob ps mediumtext date datetime 0000-00-00 00:00:00 statut varchar(10) MUL 0 id_secteur bigint(21) MUL 0 maj timestamp(14) YES NULL export varchar(10) YES oui date_redac datetime 0000-00-00 00:00:00 visites int(11) 0 referers int(11) 0 popularite double 0 accepter_forum char(3) date_modif datetime MUL 0000-00-00 00:00:00 lang varchar(10) MUL langue_choisie char(3) YES non id_trad bigint(21) MUL 0 extra longblob YES NULL idx enum(’’,’1’,’non’,’oui’,’idx’) MUL id_version int(10) unsigned 0 nom_site tinytext url_site varchar(255) MUL url_propre varchar(255) MUL 29 rows in set (0.00 sec)
mysql> describe spip_auteurs;
Field Type Null Key Default Extra id_auteur bigint(21) PRI NULL auto_increment nom text bio text email tinytext nom_site tinytext url_site text login varchar(255) binary MUL pass tinytext low_sec tinytext statut varchar(255) MUL maj timestamp(14) YES NULL pgp blob htpass tinyblob en_ligne datetime MUL 0000-00-00 00:00:00 imessage char(3) messagerie char(3) alea_actuel tinytext alea_futur tinytext prefs tinytext cookie_oubli tinytext source varchar(10) spip lang varchar(10) MUL idx enum(’’,’1’,’non’,’oui’,’idx’) MUL url_propre varchar(255) MUL extra longblob YES NULL 25 rows in set (0.00 sec)
mysql> describe spip_breves;
Field Type Null Key Default Extra id_breve bigint(21) PRI NULL auto_increment date_heure datetime 0000-00-00 00:00:00 titre text texte longblob lien_titre text lien_url text statut varchar(6) id_rubrique bigint(21) MUL 0 lang varchar(10) langue_choisie char(3) YES non maj timestamp(14) YES NULL idx enum(’’,’1’,’non’,’oui’,’idx’) MUL extra longblob YES NULL url_propre varchar(255) MUL 14 rows in set (0.00 sec)
mysql> describe spip_documents;
Field Type Null Key Default Extra id_document bigint(21) PRI NULL auto_increment id_vignette bigint(21) MUL 0 id_type bigint(21) MUL 0 titre text date datetime 0000-00-00 00:00:00 descriptif text fichier varchar(255) taille int(11) 0 largeur int(11) 0 hauteur int(11) 0 mode enum(’vignette’,’document’) MUL vignette distant char(3) YES non idx enum(’’,’1’,’non’,’oui’,’idx’) maj timestamp(14) YES NULL 14 rows in set (0.00 sec)
mysql> describe spip_forum;
Field Type Null Key Default Extra id_forum bigint(21) PRI NULL auto_increment id_parent bigint(21) MUL 0 id_thread bigint(21) 0 id_rubrique bigint(21) MUL 0 id_article bigint(21) MUL 0 id_breve bigint(21) MUL 0 date_heure datetime 0000-00-00 00:00:00 titre text texte mediumtext auteur text email_auteur text nom_site text url_site text statut varchar(8) MUL idx enum(’’,’1’,’non’,’oui’,’idx’) MUL ip varchar(16) YES NULL maj timestamp(14) YES NULL id_auteur bigint(20) 0 id_message bigint(21) MUL 0 id_syndic bigint(21) MUL 0 20 rows in set (0.00 sec)
mysql> describe spip_mots;
Field Type Null Key Default Extra id_mot bigint(21) PRI NULL auto_increment titre text descriptif text texte longblob id_groupe bigint(21) 0 type text extra longblob YES NULL idx enum(’’,’1’,’non’,’oui’,’idx’) MUL url_propre varchar(255) MUL maj timestamp(14) YES NULL 10 rows in set (0.00 sec)
mysql> describe spip_rubriques;
Field Type Null Key Default Extra id_rubrique bigint(21) PRI NULL auto_increment id_parent bigint(21) MUL 0 titre text descriptif text texte longblob id_secteur bigint(21) 0 maj timestamp(14) YES NULL export varchar(10) YES oui id_import bigint(20) YES 0 statut varchar(10) date datetime 0000-00-00 00:00:00 lang varchar(10) MUL langue_choisie char(3) YES non idx enum(’’,’1’,’non’,’oui’,’idx’) MUL extra longblob YES NULL url_propre varchar(255) MUL statut_tmp varchar(10) date_tmp datetime 0000-00-00 00:00:00 18 rows in set (0.00 sec)
Existen algunas tablas que se usan como unión entre otras. Por ejemplo la tabla spip_auteurs_articles relaciona autores con artículos
mysql> describe spip_auteurs_articles;
Field Type Null Key Default Extra id_auteur bigint(21) PRI 0 id_article bigint(21) PRI 0 2 rows in set (0.00 sec)
Intercambio de variables entre SPIP y PHP
Pasar variables PHP a SPIP
Una de las ventajas (para mí la principal) de spip respecto a otros cms es su sitema de caché que evita generar las páginas dinámicamente a cada petición de un usuario, lo que le da una mayor (con diferencia) velocidad de carga de páginas.
Sin embargo esto presenta algunos problemas a los administradores de web con spip, sobre todo cuando quieren aplicar sus conocimientos de php e insertar variables php dentro de bucles.Cuando hacemos la primera vez:
<?php
$var = "valor";
?>
<BOUCLE_articulos(ARTICLES) {id_rubrique} {criterio=<?php echo $var; ?>}>
#TITRE
</BOUCLE_articulos>Vemos que no funciona. El motivo es que:
SPIP calcula primero los boucles, balizas y demas y después el código php
Con lo cual no filtrará por
criterio="valor"
sino que filtrará por
criterio="<?php echo $var; ?>"
por tanto no ejecutará el código php.La única forma de pasarle variables php a SPIP es mediante los métodos _GET y _POST, es decir mediante la url o mediante campos (que pueden ser también ocultos) de formularios.
SPIP recogeá esas variables con la baliza #ENVEjemplo:
En una determinada sección queremos que el usuario pueda ver sólo los artículos de un determinado mes (a elegir por el usuario).
Supongamos que es la sección 5, entonces la url será (spip 1.9.x):
http://miservidor.org/spip.php?rubrique5
En el código tendremos algo así:
Seleccione mes <br>
<ul>
<li><a href="#URL_RUBRIQUE&mes=1">Enero</a></li>
<li><a href="#URL_RUBRIQUE&mes=2">Febrero</a></li>
...
<li><a href="#URL_RUBRIQUE&mes=12">Diciembre</a></li>
</ul>Le estamos pasando la variable ’mes’.
Ahora recogemos con SPIP esa variable: en el mismo fichero anterior tendremos:<BOUCLE_articulos(ARTICLES) {id_rubrique} {mois=#ENV{mes}}>
#TITRE
</BOUCLE_articulos>Si hacemos clic sobre Enero (mes=1) el criterio que tomará SPIP será {mois=1}
Pasar variables de SPIP a PHP
Esta parte es mucho más fácil:
<?php
$mi_var = '#BALIZA';
?>Pasar variables de SPIP a SPIP
A partir de SPIP 1.9.1 podemos enviar variables con la baliza #SET y recogerlas con la baliza #GET
La sintaxis es:
#SET{variable,valor}
#GET{variable}Ejemplo:
<B_articulos>
#SET{art_total, #TOTAL_BOUCLE}
<BOUCLE_articulos(ARTICLES) {id_rubrique} {par date} {inverse}>
#TITRE
</BOUCLE_articulos>
</B_articulos>
...
más código
...
En la actual sección, compuesta de #GET{art_toal} artículos bla bla bla ...Explicación:
Con la baliza #TOTAL_BOUCLE obtenemos el total de elementos de un bucle, pero tenemos que ponerla dentro del bucle, NO la podemos usar fuera del bucle.Con #SET{art_total, #TOTAL_BOUCLE} asignamos a la variable ’art_total’ el valor #TOTAL_BOUCLE
Con #GET{art_total} rescatamos el valor de la variable ’art_total’
En el ejemplo anterior quizás no veamos la importancia de #SET y #GET pues se podía haber pasado el #TOTAL_BOUCLE a una variable PHP y después usarla con PHP. Pero .. ¿y si después necesitamos usarla en otro bucle de spip? podríamos hacerlo pasándola por url y recogiéndola con #ENV (pero necesitaríamos recargar la página).
CONCLUSIÓN FINAL
Como aplicación de lo aprendido y como prueba de que se entiende el funcionamiento de spip, el intercambio de variables entre spip y php y las nuevas balizas #SET y #GET</html< dejo al lector que intente resolver el siguiente problema (yo lo he resuelto usando parte de lo explicado, pero quizás tu solución sea mejor):
Se trata de que en una web con spip (en la portada por ejemplo) necesitas obtener el número de artículos de cada mes (pongamos sólo del año 2006).
El resultado que visualizaría el visitante sería algo así:
Artículos del año 2006
Enero: 5
Febrero: 6
...
Agosto: 9
Septiembre: 4
Octubre: 0
Noviembre: 0
Diciembre: 0Instalación de plugins en SPIP 1.9
Los Plugins son pequeños programas añadidos a un programa principal para aportarle alguna nueva funcionalidad.
Con la versión 1.9 de SPIP llegaron los plugins (no los había en versiones anteriores) y ya tenemos una gran cantidad para elegir (muchos de ellos en una versión estable). La filosofía no es instalar todos los que veamos, sino sólo aquel (aquellos) que necesitemos.La instalación de plugins en spip es muy sencilla:
Creamos una carpeta llamada /plugins en la raíz de nuestro sitio
Descargarnos el plugin a instalar, que suele venir en un fichero comprimido
Descomprimimos el fichero y dará lugar a una sóla carpeta que contiene ficheros y subcarpetas
Copiamos la carpeta obtenida dentro de /plugins
Entramos en el espacio privado y veremos una nueva opción: Gestión de los plugins dentro del menú Configuración del sitio
Activamos los plugins que necesitemos
Ejemplo: plugins recherche_extendue_1_9
Vamos a instalar el plugins recherche_extendue_1_9 que, entre otras cosas, nos permitirá forzar una indexación muy útil cuando hemos actualizado desde una versión anterior (y como suele ser habitual hemos perdido las búsquedas).
El caso más habitual es, como dije antes, cuando acabamos de actualizar a la versión 1.9 final (válido también si actualizamos desde una beta de la 1.9). Los pasos a seguir son:
Descargar el plugin de http://zone.spip.org/files/spip-zone/
Descomprimimos el fichero recherche_extendue_1_9.zip y la carpeta resultante (/recherche_extendue_1_9) la ponemos dentro de /plugins
Vaciamos la cache (Opción dentro del menú Configuración del sitio) en el espacio privado. Esta opción es imprescindible trás una actualización y es uno de los motivos frecuentes por el que algunos usuarios no consiguen recuperar sus búsquedas
Activamos el plugin con Gestión de los plugins dentro del menú Configuración del sitio
Entramos en el menú del plugin Gestion de l’indexation
Observamos el menú que aparece
Purgamos las tablas de indexación y Reseteamos los parámetros de indexación (las dos últimas opciones del menú: hay que realizar ambas)
El motor de búsqueda debe quedar vacío
Vuelve a vaciar la caché, aunque ya lo hiciste antes. Es por si has hecho alguna búsqueda probando y ha quedado almacenada
Retorna al menú del plugin y comprueba que el motor de búsqueda sigue vacío (si ves algo que no es cero vuelve a purgar las tablas). Ten en cuenta que tu sitio puede estar siendo visitado en esos momentos por otras personas (o le pueden quedar operaciones por hacer al spip_cron)
Ahora comenzamos la indexación pulsando sobre Forcer l’indexation du site
Si tienes muchos artículos no basta con pulsar una sóla vez, mira si el motor de búsqueda está lleno.
Puedes acelerar la indexación eligiendo pasos más grandes (aunque creo que debiera ser mejor poco a poco). Para ello fíjate en la url (cuando haces clic en Forzar indexación):
http://misitio.es/ecrire/?exec=admin_index&forcer_indexation=20
Puedes ponerle, en lugar de 20, 40, 80, etc.Cuando el motor esté totalmente lleno, puedes comprobar el vocabulario indexado (Voir le vocabulire index) y verás una tabla con todas tus palabras indexadas ordenadas por puntuación.
Ahora ya puedes ir al espacio público y probar las búsquedas
2006 - 2023 ► Matemáticas IES
©Daniel López Avellaneda, licenciado en Ciencias Matemáticas (Contactar)
Mapa del sitio
|
RSS 2.0
|
Privacidad
|
Cookies