Overview

Artifact ID: 47b6c8eb15fdb35229b6f33824687d433b2d4e4b
Page Name:Squelettes
Date: 2019-07-01 10:09:53
Original User: bohwaz
Mimetype:text/x-markdown
Parent: 6d14247f85d105de963a9ff7127593b827c76b0c
Content

Les squelettes dans Garradin

ATTENTION Cette page est encore à l'état de brouillon !

Dans Garradin le site public de l'association est affiché via des squelettes. Ce sont des fichiers HTML qui permettent de choisir les données affichées sur le site. Ils sont semblables aux squelettes de SPIP.

Une bonne introduction à la logique des boucles et balises SPIP est disponible dans la documentation SPIP.

Cependant certaines différences existent, notamment au niveau des types de boucles et de leurs critères, et certaines fonctions avancées du langage SPIP ne sont pas prises en charge (voir la fin de cette page).

Mes squelettes sont un langage de programmation qui permet d'afficher les pages du wiki marquées comme "visible sur le site public".

Exemples

Boucle simple

La boucle suivante affiche les titres des 10 derniers articles (= pages wiki qui n'ont pas de sous-pages) :

<BOUCLE_derniers(ARTICLES){par date}{inverse}{0,10}>
	<article>
		<h1><a href="#URL">#TITRE</a></h1>
	</article>
</BOUCLE_derniers>

La boucle est composée d'un tag ouvrant <BOUCLE_ suivi du nom la boucle (ici c'est derniers), puis du type de la boucle (ARTICLES) et des critères. Ici il y a trois critères :

  • par date indique de trier les résultats par date
  • inverse indique d'inverser l'ordre de tri (et donc ici ça sera par date anté-chronologique : de l'article le plus récent au plus ancien)
  • 0,10 : ne renvoyer que 10 articles, en commençant par le premier (qui est donc le 0 en informatique

Voir plus bas pour la liste complète des critères et types de boucles disponibles.

Dans le contenu de la boucle on retrouve des balises qui sont en majuscules et commencent par un signe hash :

  • #URL renvoie l'adresse absolue de l'article (par exemple http://monasso.tld/Kermesse-du-23-juillet)
  • #TITRE affiche le titre de l'article

Voir plus bas la liste des balises disponibles selon le type de boucle.

Enfin à la fin il faut refermer la boucle par un tag fermant contenant le nom de la boucle : </BOUCLE_derniers>.

Il ne peut y avoir qu'une seule boucle avec le même nom dans un même squelette (donc il ne peut pas y avoir deux boucles avec le même nom !).

Utilisation de filtres

Il est possible d'ajouter des filtres aux balises. En reprenant l'exemple du dessus on arrive à :

<BOUCLE_derniers(ARTICLES){par date}{inverse}{0,10}>
	<article>
		<h1><a href="#URL">#TITRE</a></h1>
		<h5>Posté : [(#DATE_CREATION|date_intelligente)]</h5>
		<p>[(#TEXTE|supprimer_skriv|couper{200})]</p>
	</article>
</BOUCLE_derniers>

On a rajouté deux lignes et deux balises. On peut voir qu'on a entouré les balises de parenthèses et de crochets et qu'on y a ajouté après un signe pipe un ou plusieurs filtres. Ces filtres modifient le contenu renvoyé par la balise.

Dans le premier cas, le filtre date_intelligente renverra la date relative à la date du jour, par exemple hier, ou mardi 5 juin si la date de l'article date de plusieurs jours.

Dans le second cas on applique deux filtres :

  • supprimer_skriv supprime le formatage SkrivML du contenu du texte
  • couper coupe le texte au nombre de caractères passé en premier paramètre

Contenu conditionnel

Si on souhaite afficher un message pour les visiteurs anglophones, on peut utiliser :

[(#LANGUE_VISITEUR|=={fr})
<p>
    Welcome to our non-profit organization website!
</p>
]

Guide de référence

Les boucles

Note : les boucles ne peuvent renvoyer que des pages wiki identifiées comme apparaissant sur le site public. Les pages privées ne peuvent apparaître sur le site public.

Boucles de type ARTICLES, RUBRIQUES et PAGES

  • ARTICLES renvoie les pages wiki publiques n'ayant pas de page "enfant".
  • RUBRIQUES renvoie les pages wiki publiques ayant au moins une autre page "enfant".
  • PAGES renvoie toutes les pages wiki quelque soit leur position hiérarchique.
Critères

Il est possible de filtrer ou ordonner les résultats retournés par une boucle à l'aide des critères suivants :

  • id
  • uri
  • titre
  • date_creation
  • date (alias de date_creation)
  • date_modification
  • parent
  • rubrique (alias de parent)
  • revision
  • texte
  • age
  • recherche
  • points (uniquement disponible pour ordonner les résultats de recherche)

Boucles de type DOCUMENTS, IMAGES et FICHIERS

  • DOCUMENTS renvoie tous les documents quel que soit leur type.
  • IMAGES renvoie tous les documents de type image.
  • FICHIERS renvoie tous les documents qui ne sont pas de type image.
Critères
  • id
  • nom
  • type
  • date
  • image (booléen)
  • hash (somme de contrôle SHA1)
  • taille (en octets)
  • parent (ID de la page associée au document)
  • rubrique (alias de parent)
  • article (alias de parent)
  • page (alias de parent)
  • sauf_mention = n'inclure que les documents qui ne sont pas mentionnés dans le texte de la page parente

Les balises

  • #TITRE
  • #TEXTE
  • #DATE_CREATION (ou #DATE, synonyme)
  • #DATE_MODIFICATION
  • #URI = adresse relative de la page (par exemple Kermesse-du-23-juillet)
  • #URL = adresse absolue de la page (par exemple https://monsite.tld/Kermesse-du-23-juillet)
  • #ID = Numéro de page
  • #PARENT = Numéro de page parente
  • #RUBRIQUE = Numéro de rubrique (alias de #PARENT)

Les balises générales

#LANGUE_VISITEUR

Donne la langue principale du visiteur.

Les filtres

choixsiegal

Ce filtre permet d'afficher un contenu alternatif.

Différences connues avec la syntaxe SPIP

Boucles

  • La syntaxe raccourcie n'est pas reconnue (par exemple <BOUCLE_a(ARTICLES) />#TOTAL_BOUCLE</B_a> ne fonctionnera pas, il faut utiliser <BOUCLE_a(ARTICLES) />#TOTAL_BOUCLE</BOUCLE_a>)

Balises

Les fonctions suivantes ne sont pas supportées par Garradin pour le moment :

  • La balise #ENV n'est pas gérée
  • La double étoile #BALISE** n'est pas pris en compte, seulement #BALISE* (voir la doc SPIP)
  • Les paramètres des balises dynamiques ne sont pas supportés (par exemple #ENV{lang,fr})
  • Les balises non-ambigües ne sont pas supportées (par exemple #_rubriques:TITRE)
  • Il n'est pas possible d'imbriquer des balises étendues dans les arguments des filtres d'une balise. Exemple : [(#LANGUE_VISITEUR|!={fr}|et{#LANGUE_VISITEUR|!={ro}})