# Syntaxe SPIP

### Syntaxe SPIP
---

SPIP possède son propre système de templates : **boucles**, **critères**, **balises**, **filtres**.
Ce langage est très lisible et orienté contenu.

#### Les boucles

Les **boucles** permettent d’interroger les objets éditoriaux (articles, rubriques, auteurs…).

Syntaxe générale :

```html
<BOUCLE_nom(TABLE){critères}>
  … contenu affiché pour chaque résultat …
</BOUCLE_nom>
```

Exemple : afficher les 5 derniers articles d’une rubrique :

```html
<BOUCLE_articles(ARTICLES){id_rubrique}{par date}{inverse}{0,5}>
  <h2>#TITRE</h2>
  <p>#INTRODUCTION</p>
</BOUCLE_articles>
```

##### Les critères de boucles

Ce sont les éléments entre `{}` dans une boucle.
Ils servent à filtrer, classer ou limiter les résultats.
Ils correspondent à des éléments de requête SQL (ex: {par date} => ORDER BY date)

Exemples utiles :

| Critère                                | Rôle                               |
| -------------------------------------- | ---------------------------------- |
| `{id_rubrique}`                        | Filtre par rubrique courante       |
| `{par date}`                           | Tri par date ASC                   |
| `{par date}{inverse}` ou `{!par date}` | Tri par date DESC                  |
| `{0,10}`                               | Limiter aux 10 premiers résultats  |
| `{doublons}`                           | Exclure des éléments déjà affichés |

#### Les balises

Les **balises** correspondent généralement à une colonne d'une table si l'on est dans une boucle, elles peuvent aussi correspondre à des fonctions PHP déclarées sous la forme de `function balise_XXXX_dist()` généralement dans le fichier monplugin_fonctions.php.

Exemples :

```
#TITRE
#TEXTE
#DATE
#URL_ARTICLE
#LOGO_ARTICLE
```

Dans une boucle sur `ARTICLES`, `#TITRE` correspond au titre de l’article courant et `#LOGO_ARTICLE` exécute une fonction qui récupère le document identifié comme logo de cet article et renvoie une balise html `<img>`.

#### Les filtres

Les **filtres** correspondent également à des fonctions PHP que l'on applique sur des balises avec ou sans argument.

Syntaxe : `#BALISE|filtre{argument}`

Exemples :

```html
#TITRE|strtolower #TEXTE|couper{200} #DATE|affdate
```