Manual:HTML templates/fr

A partir de, MediaWiki peut générer du contenu HTML à partir de modèles Mustache sur le serveur et sur le client. Le modèle d'analyse syntaxique côté serveur est implémenté en PHP via la classe TemplateParser, qui agit comme un conteneur de la bibliothèque lightncandy. Les modèles côté client sont pris en charge par les modules ResourceLoader de   et par la bibliothèque mustache.js.

Créer des modèles
To use HTML templates in your code, first create a Mustache template file with a .mustache file extension, for example, MyWidget.mustache. Templates should contain as little programming logic as possible so that they are easily readable and provide proper separation of concerns. If your template is part of the core MediaWiki software, put it in core's  directory. If it is part of an extension, you should create a dedicated templates directory within your extension's directory to hold it. Templates should follow the Mustache-5 specification.

Classe TemplateParser (côté serveur)
Cette classe recherche les fichiers des modèles, les lit, les compile en code PHP, et développe les balises en utilisant les données transmises afin de générer la sortie HTML. MediaWiki compile les modèles selon les besoins, et utilise le cache pour les y stocker s'il est disponible (voir la mise en cache ci-dessous). Ceci évite aux développeurs de compiler les modèles en fichiers PHP pendant le développement ou comme une étape du build, ou au serveur de les écrire dans l'arborescence des fichiers pendant les opérations.

Pour utiliser, créez d'abord une nouvelle instance de la classe :

Si vos modèles Mustache ne sont pas dans includes/templates du coeur, vous devez fournir le chemin de leur emplacement, dans le premier paramètre du constructeur (en relatif, soit par rapport à la racine de MediaWiki, soit par rapport au répertoire du fichier qui les appelle, avec __DIR__) :

Ensuite, vous analysez les modèles en HTML en appelant la fonction. Le premier paramètre pour cela est le nom de votre modèle (la partie du nom de fichier avant .mustache). Le second paramètre est un tableau contenant les valeurs utilisées par les balises Mustache de votre modèle. Par exemple,

Ceci remplace toutes les instances des balises  et   du modèle Mustache "MyWidget" par les valeurs fournies, et retourne le HTML résultant. (le  imprime simplement le HTML généré dans le contexte de sortie courant).

Comme exemple de modélisation HTML, voir tel qu'utilisé par.

Mise en cache
TemplateParser essaie de mettre en cache le modèle PHP compilé. Il préfère utiliser  (voir ), et se replie sur   (un cache d'objet général comme Memcached ou Redis, voir ).

Eléments partiels
Le cache est basé sur des clés faites à partir d'un hachage du contenu de fichier, donc si vous modifiez un fichier de modèle, le modèle compilé sera mis à jour (vous devrez éventuellement vider le cache wiki de l'interface utilisateur en utilisant ). Néanmoins, cela ne remarque pas les modifications des modèles "partiels" que vous incluez avec  (bogue T113095). Donc si vous modifiez un partiel, vous devez faire des modifications cosmétiques sur les modèles parents qui l'incluent, ou redamarrer votre cache.

mw.template (côté client)
Pour utiliser un modèle Mustache du côté client, ajoutez le d'abord à votre définition de module :

La définition du modèle ci-dessus est faite de deux parties, un chemin de fichier et un alias optionnel. L'alias doit être suffixé avec le nom du langage de modélisation (par exemple ' ') si bien qu'il connaît le compilateur à utiliser. ResourceLoader dessert automatiquement les modules Javascript  pris en charge, donc vous n'avez rien à spécifier dans. Une fois que vous avez ajouté le modèle à votre module, vous pouvez le récupérer par JavaScript en utilisant :

Pour générer le modèle et les données sous format HTML, appelez la fonction compilée  du modèle.

Elements partiels
Les éléments partiels sont aussi pris en charge du côté client. Voir https://mustache.github.io/mustache.5.html#Partials pour plus d'informations.

Voir aussi

 * Requests for comment/HTML templating library