Carnet Wiki

NouvelleBoucle

Le nouveau compilateur de Spip, intégré aux versions spip depuis la 1.8, apporte des perspectives inouïes pour le développeur et le webmestre.

Cette page est dédiée à sa documentation en attendant de lui trouver sa place définitive. Voir maintenant cette contrib de mars 2006.

| NouveauCompilo | NouvelleBalise | NouveauCritere | InterfaceEtUsages |


Comment désormais implémenter une nouvelle boucle grâce au nouveau compilo, et la nouvelle syntaxe dans spip.

Désormais avec le nouveau compilateur la balise <BOUCLEn ...> peut s’appliquer non seulement aux tables standards de SPIP (ARTICLES, RUBRIQUES, etc.) mais à toute table accessible par la connexion au serveur SQL et préalablement déclarée au traducteur PHP.

De sorte que s’il existe une table nommée matable1 ayant des champs nom et adresse, on peut écrire dans un squelette :

<BOUCLE_1(matable1)>
 #NOM<br />
 #ADRESSE
</BOUCLE_1>

En effet, on peut maintenant informer le compilateur qu’une nouvelle table doit être prise en compte dans la compilation syntaxique. Ceci est fait dans inc_serial_base.php3.

En deux temps :
-  d’abord on décrit la structure de la table et ses liens avec d’autres tables. Ceci ne la rend pas utilisable dans les boucles mais permet au compilateur de lier les informations de la bonne façon.

-  la prise en compte de ces tables se fait ensuite dans le fichier inc-index uniquement sur la base de la valeur de la variable globale $tables_principales. Pour déclarer de nouvelles boucles il faut allonger ce tableau. C’est une variable globale composé d’un tableau de tableau de 2 éléments.

Cependant, afin de faciliter la mise à jour de Spip, il est conseillé de décrire les nouvelles tables et la nouvelle syntaxe de boucle dans le fichier mes_fonctions.php3.

Attention : Les codes couleurs s’écrivent aussi avec #. Actuellement, si votre code couleur hexadécimal commence par une lettre écrite en majuscule, le compilateur va le prendre pour une balise, et si il n’existe pas de champ de ce nom il va gueuler « erreur ! ». Peut être qu’à terme, le compilateur testera si par hasard ce serait pas une couleur dans le cas où il ne trouve pas une colonne mais en attendant, pour éviter toute ambigüité, il faut écrire les codes couleurs en minuscules : #ffa532 et non #FFA532.
C’est pareil pour les ancres : par exemple, ne plus écrire #TOP, mais #top (c’est du vécu !)

Déclarer une nouvelle table dans SPIP

Prenons un exemple pipo : une table spip_machin contenant 3 colonnes : un identifiant IdMachin, numérique, un libellé Libelle, et un lien vers la table article, histoire d’avoir des trucs un peu tordus.

La suite sur : AutreTableSpip

Déclarer une nouvelle table (non spip, par ex. Spikini) dans SPIP

Ce qui est dit ci-dessus pour une table « spip_machin » est aussi vrai pour des tables non Spip, ne commençant pas par spip_, par exemple les tables ayant le préfixe Wikini_ (ou celui choisi à l’installation du wiki), tables créées lors de cette installation de Spikini.

Il suffit alors de créer un fichier mes_fonctions.php3 et de le mettre à la racine du site (ou de compléter ce fichier, s’il est déjà créé), contenant les instructions ci-dessous, pour faire reconnaître à Spip tous les champs Wikini_ et donc tout le contenu du Wiki.

Il est par exemple possible de publier un article (Spip) reprenant le contenu d’une page Wiki, donc modifiable par les lecteurs. Ce qui est une autre façon, complémentaire du mode Forum, de faire des commentaires par rapport à un article, l’avantage étant de « consolider » l’information au fur et à mesure que les échanges se poursuivent

La suite sur AutreTableNonSpip, pour le détail des instructions à insérer dans mes_fonctions.php3

Déclarer une nouvelle colonne dans une table Spip existante

Avant de se lancer dans des créations de tables, on peut commencer par tripoter les existantes, histoire de se faire la main.
Par exemple pour ajouter des dates de début et fin à un article, pour gérer un agenda :

La suite sur AutreColonnedUneTableSpip

Faire des jonctions entre les tables

Certaines tables, comme pour les mots où les documents peuvent être accédés directement depuis une autre boucle.

Par exemple, on peut utiliser directement le critère id_mot sur une boucle ARTICLES alors qu’il n’y a pas de telle colonne dans la table spip_articles.
SPIP gère automatiquement la jonction entre la table spip_articles et la table spip_mots_articles pour mettre en relation un article et les mots qui lui sont liés.

On peut facilement faire ce genre de chose pour ses tables ajoutées. Imaginons qu’on ajoute une table pour mettre des mots clef sur des auteurs. Il y faut donc faire un lien entre la table spip_mots et la table spip_auteurs. On crée donc une table qui met un id_auteur en relation avec un id_mot :

La suite sur JonctionEntreTables

Déclarer une table SPIP ou non SPIP d’un autre serveur MYSQL

Ca se passe sur la page MultiBase.

Personnaliser la requête de base

On peut personnaliser la requête par défaut sur la nouvelle table en implémentant une fonction boucle_MABOUCLE.

Voir inc-boucles.php3 et documenter/exemplifier celà.

Exemples :

-  Création de la BOUCLE(SESSIONS) (créer une nouvelle table et des nouvelles balises),
-  Accès par boucle et balises aux Articles non Publiés


voir cette discussion pour mettre la page à jour

| NouveauCompilo | NouvelleBalise | NouveauCritere | InterfaceEtUsages |

- Mise à jour :27 mai 2008 à 19h34min