Rappelons (Utiliser les modèles) qu’un modèle est un squelette appelable directement
à partir du texte présent dans la base de données, afin d’obtenir un placement précis du fragment HTML décrit par le squelette. Pour le placement des pièces jointes, il en existe essentiellement deux,
doc
(pour référencer le document) et emb
(pour l’incruster). L’incrustation offre le plus de possibilités.
Le modèle emb
délègue à présent le travail à cinq modèles nommés par le nom du groupe MIME du document concerné :
text, image, audio, video, application
.
Ces modèles sont utilisables directement (par exemple <audio44|center>
est équivalent à
<emb44|center>
si le document relève du groupe audio)
et il est d’ailleurs plus efficace de le faire, le modèle emb
n’étant plus là qu’en cas de doute sur le groupe du document. L’utilisation directe a aussi l’avantage de forcer
l’incrustation selon le modèle choisi, même si le document est officiellement d’un autre groupe. Cela permet de
contourner certaines incongruités de la classification MIME :
beaucoup de documents purement textuels y sont officiellement
une application
, par exemple le XHTML qui est pourtant un sous-ensemble du HTML, qui appartient au groupe text
.
Le modèle text
Le modèle text
incruste le contenu d’un document textuel dans un article,
en appliquant au préalable si elle existe une fonction
filtre_
T où T
est un nom
déduit du type MIME du document. Cette déduction consiste
à remplacer dans le nom du type tous les caractères non alphanumériques par un souligné. Ainsi, pour le type text/txt
le modèle cherchera s’il existe la fonction filtre_text_txt
.
La fonction filtre_text_txt
est fournie d’avance par SPIP,
et elle est utilisée par défaut pour les documents du groupe text
. Elle remplace les chevrons dans le corps du document par les entités HTML correspondantes, et l’entoure par une balise pre
, ce qui permet de présenter le contenu du document
directement.
Est fournie également la fonction filtre_text_csv
, destinée aux documents text/csv
. Le RFC4180 étant très diversement suivi par les tableurs, cette fonction compte le nombre de tabulation, de virgule et de points-virgule dans le document et considère que le plus fréquent des trois est le séparateur utilisé. Elle le remplace par les raccourcis SPIP appropriés, ce qui fournit une table HTML correspondant à celle fournie par le tableur. L’usage des guillemets pour introduire le séparateur lui-même ou un saut de ligne est traité correctement (par une entité HTML et une balise br
respectivement). Le saut de ligne final optionnel est également bien géré.
Si la première ligne n’a que sa première colonne de remplie, elle fournira la balise caption
de la table. La seconde ligne (ou la première sinon) sera vue comme le nom des colonnes, et sera donc typographiée avec des balises th
. Le format CSV n’ayant pas prévu d’indication d’encodage, il faut s’assurer que celui du document est le même que celui du site avant d’utiliser ce filtre, SPIP ne pouvant savoir si un ré-encodage est nécessaire.
Enfin, il existe filtre_text_html
, destinée aux documents text/html
. Elle incruste le corps du document (donc ce qui est délimité par la balise body
). Ce corps sera toutefois expurgé de ses scripts, par mesure de sécurité. Les balises style
éventuellement présentes dans l’en-tête, seront regroupées en une seule au début de l’incrustation. Les feuilles de styles
référencées dans l’en-tête par des balises link
de type
text/css
seront recherchées sur le WEB et leur contenu s’ajoutera à la balise style
mentionnée ci-dessus.
Toutefois cela ne sera possible que pour les feuilles dont l’URL est absolue (autrement dit complète).
A cette condition seulement SPIP pourra présenter le document de manière équivalente à l’originale, et sous réserve que les balises img
présentes dans le document possèdent elles aussi des URLs absolues.
Le modèle audio
Le modèle audio
permet d’incruster le contenu d’un document audio dans un article, sous la forme d’une balise object
. Comme le précédent, ce modèle cherche s’il existe une fonction filtre_
T où T est le nom du type après substitution des caractères non alpha-numériques par des soulignés.
Mais il l’applique alors sur l’ID du document. Le résultat de cette fonction est inséré dans la balise object
, ce qui permet en particulier de préciser les balises param
souvent spécifiques au type audio concerné.
De plus, les couples passés comme argument du modèle (syntaxe nom=val
) sont eux aussi convertis en balise
param
.
Le modèle image
Le modèle image
est une petite extension du raccourci
img
, présent de longue date dans SPIP. Il en diffère seulement en produisant une balise
object
plutôt qu’une balise
img
lorsque cette balise ne gère pas
le type MIME du document concerné. Pour de tels types, il se comporte donc comme le modèle audio
, à cette différence que les couples passés en arguments seront traités comme attributs de la balise object
. Il est donc à choisir en particulier pour
l’incrustation de documents de type SVG, lequel relève officiellement du groupe
application
.
Le modèle video
Le modèle video
incruste le document en l’entourant d’un panneau de contrôle permettant de la faire défiler.
Le modèle application
Ce modèle correspondant au groupe fourre-tout de la spécification MIME, il n’a pas de description synthétique bien claire. Il évoluera certainement beaucoup avec le temps.
Utilisation
Comme pour les autres modèles, on écrit par exemple
<text67>
pour appliquer le modèle text
au document numéro 67, et donc voir son contenu directement dans la page.
Ces modèles sont également implicitement utilisés par
le squelette article
standard de SPIP lorsque l’article a un corps vide et possède un seul document joint.
Ce squelette se comporte alors comme si le texte de l’article était réduit à
<embN>
, où N
est le numéro du document, ce qui a pour effet de présenter le corps du document comme contenu de l’article.
Pour afficher sur un site la mise en page opérée par un tableur,
il suffit donc de créer un article et d’y joindre la version csv
de ce type de document, sans aucune manipulation supplémentaire.
De même si l’on veut mettre en ligne une vidéo ou un fichier audio.
On peut aussi facilement passer sous SPIP un site HTML statique en associant chacune de ses pages à un article vide : si les URLs de leurs feuilles de style et de leurs images sont complètes, SPIP les laissera conduire la mise en page.