Version 3 — Novembre 2014 — tcharlss
En 2 mots : dans un texte, une balise <embxx>
faisant référence à un fichier markdown va intégrer le texte mis en forme et tout.
Sur une idée de Suske qui a partagé une astuce pour intégrer le contenu de fichiers .txt dans le texte des articles, voyons voir comment faire la même chose mais avec des fichiers markdown, tout en bénéficiant de leur mise en forme.
L’intention L’idée , c’est de pouvoir ajouter, dans les articles documentant les plugins, des < code>README README .md</code >, md , des < code>TODO TODO .md</code > md ou des < code>CHANGELOG CHANGELOG .md</code > md externes qui soient automatiquement à jour.
Attention, il s’agit de notes en cours, et en l’état ça tient un peu de la bidouille.
Ce n’est peut-être pas la meilleur façon de faire, il y a peut-être des erreurs : n’hésitez pas à commenter et à corriger.
Il faut déjà installer le plugin markdown pour SPIP. Il est sur la zone, mais il n’est pas référencé dans les dépôts, il faut donc le récupérer par SVN ou autre : http://zone.spip.org/trac/spip-zone/browser/_plugins_/markdown
Pour l’instant le plugin Médias ne reconnaît pas l’extension .md
, par défaut il identifiera ces fichiers comme étant des .m3u
(liste de lecture MP3).
Il faut donc rajouter cette extension dans la table spip_documents_types
. C’est notamment là qu’on indique qu’il s’agit d’un type de document qu’on peut intégrer dans le texte, ce qui va nous permettre d’utiliser la balise <emb>
.
Ajoutez une ligne avec les valeurs ci-dessous :
extension | titre | descriptif | mime_type | inclus | upload | media_defaut |
---|---|---|---|---|---|---|
md | Markdown | texte/plain | embed | oui | file |
À noter également le fichier base/typedoc.php
qui liste les différents types de fichiers, mais j’ignore son utilité et il ne semble pas avoir d’incidence sur notre problème.
<emb>
pour les fichiers markdownEnfin, il ne reste plus qu’à ajouter un modèle pour que la balise <emb>
fonctionne avec les fichiers markdown.
Le squelette doit s’appeler emb_md.html
.
Il faut faire en sorte de placer le texte du fichier dans des balise <span class="base64mdblocs" title="PG1kPi4uLjwvbWQ+"></span>
pour que le texte soit parsé, donc on va utiliser le filtre |wrap{<md>}
.
Après ça, un coup de |propre
et le tour est joué.
Ce qui donne au final, en ne gardant que l’essentiel :
<BOUCLE_tous (DOCUMENTS types_documents) {id_document=#ID} {tout}
>[(#FICHIER|contenu_document{#ENV{charset,auto}}|wrap{'<md>'}|propre)]</BOUCLE_tous>
Voilà, à partir de là ça devrait marcher.
Par exemple en prenant les fichiers de tests du plugin markdown en documents joints externes :