InfoboxBuilder est un module Lua qui simplifie grandement la création d'infoboxes. De plus, il rend l'affichage des pages l'utilisant plus rapide que celles utilisant des infoboxes avec le traditionnel wikitexte. Plus les infoboxes sont complexes et plus l'amélioration du temps d'affichage est flagrante. Bien que n'importe quelle communauté peut tirer avantage de l'utilisation de Lua, vous devriez considérer l'utilisation de InfoboxBuilder si vos infoboxes contiennent des modèles imbriqués.
Comme il utilise Lua, un langage de programmation à part entière, InfoboxBuilder vous permet de créer des infoboxes aussi complexes que vous le souhaitez — basées sur un noyau simplifié, standardisé. Peu importe où vous êtes sur Fandom, vous reconnaitrez les « tripes » des infoboxes en Lua, mais nous ne serez pas esclave de sa simplicité. InfoboxBuilder vous apporte une façon simple de créer des infoboxes, sans perdre la possibilité de vous les approprier complètement.
De quoi ai-je besoin ?
Modifier
Une fois que Lua est activé sur votre wiki, vous pouvez y aller. InfoboxBuilder est maintenant une fonction parseur et est activé automatiquement.
Créer une infobox simple
Modifier
Si vous souhaitez créer une infobox simple, c'est très facile. Le code source de celle à droite est :
{{#infoboxbuilder: | 1:Type = Title | 1:Value = Une infobox toute simple | 2:Type = MainImage | 2:Value = [[Fichier:Moon.jpg]] | 3:Type = Header | 3:Value = FAQ | 4:Type = Line | 4:Label = Est-ce simple ? | 4:Value = Oui ça l'est ! | 5:Type = Line | 5:Label = Vais-je l'utiliser ? | 5:Value = Tout le temps ! }}
InfoboxBuilder vient avec un thème par défaut conçu pour rendre bien sur n'importe quel fond.
Syntaxe
Modifier
InfoboxBuilder utilise une nouvelle syntaxe qui se veut simple, bien que descriptive. Le motif général pour chaque argument est | [Indice]:[Clé] = [Valeur].
Chaque champ de l'infobox doit avoir un indice numérique qui définit sa place dans l'infobox et associe les arguments. Les clés basiques sont Type
et Value
. Vous pouvez utiliser les types suivants :
-
Title
: titre -
Header
: en-tête -
Line
: ligne -
Image
-
MainImage
: image principale -
Footer
: pied -
Custom
: personnalisé -
Split
: bloc sur deux colonnes avec des en-têtes optionnelles
Line
et Custom
nécessitent l'utilisation d'un argument ayant pour clé Label
:
- Pour
Line
, il définit l'en-tête de la ligne - Pour
Custom
, il défini la balise HTML que vous souhaitez utiliser comme conteneur (par exemplediv
,span
Vous pouvez aussi utiliser Label
pour définir les légendes des champs de type Image
et MainImage
.
Pour Split
, les clés suivantes sont nécessaires :
-
ValueLeft
: valeur dans la colonne de gauche -
ValueRight
: valeur dans la colonne de droite -
LabelLeft
: en-tête de la colonne de gauche (facultatif) -
LabelRight
: en-tête de la colonne de droite (facultatif)
Personnaliser une infobox
Modifier
Variables
Modifier
Une infobox toute simple | |
---|---|
![]() | |
La même infobox mais avec une légende et un thème personnalisé. | |
FAQ | |
Est-ce simple ? | Oui ça l'est ! |
Vais-je l'utiliser ? | Tout le temps ! |
Il a plusieurs façons de modifier l'apparence ou le comportement de votre infobox en utilisant des arguments variables. Ils ont tous l'indice 0. Ceux par défaut sont :
| 0:Theme = default, -- Ajoute un préfixe aux classes CSS -- (préfixe que vous vous voulez utiliser) | 0:CustomModule = , -- Définit le chemin vers un module Lua contenant des fonctions personnalisées -- (nom d'un module avec le préfixe Module:) | 0:MainImageCaption = Off, -- Active/désactive l'affichage de la légende (<code>Label</code>) pour le champ de type <code>MainImage</code> -- (Off/On) | 0:ToggleContentLongerThan = 1000 -- Rend les champs avec de grandes valeurs enroulables -- (nombre de caractères)
Pour les surcharger, placez les simplement dans la source de votre infobox avec une valeur différente :
{{#infoboxbuilder: | 0:MainImageCaption = On | 0:Theme = mon-theme | 1:Type = Title | 1:Value = Une infobox toute simple | 2:Type = MainImage | 2:Label = La même infobox mais avec une légende et un thème personnalisé. | 2:Value = [[Fichier:Moon.jpg]] | 3:Type = Header | 3:Value = FAQ | 4:Type = Line | 4:Label = Est-ce simple ? | 4:Value = Oui ça l'est ! | 5:Type = Line | 5:Label = Vais-je l'utiliser ? | 5:Value = Tout le temps ! }}
Vous pouvez aussi définir vos propres variables. Par exemple, si vous voulez utiliser le mot magique {{PAGENAME}}
ajoutez :
| 0:Pagename = {{PAGENAME}}
Le nom de l'article utilisant cette infobox sera maintenant transmis pour une utilisation ultérieure.
Style
Modifier
Tout cela n'en vaudrait pas la peine si vous ne pouviez pas appliquer des styles sur votre toute nouvelle infobox. Chaque élément de l'infobox a un nom de classe spécifique avec un préfixe indiqué dans la variable Theme
(par exemple, si le préfixe est default
un conteneur div aura la classe nommée default-infobox-container
).
Nous recommandons de mettre tout le code CSS dans MediaWiki:Common.css. Vous pouvez utiliser le {{w:fr:MediaWiki:Common.css|thème mon-thème]] pour commencer.
Infoboxes complexes avec des modules Lua personnalisés
Modifier
InfoboxBuilder | |
---|---|
![]() | |
Informations basiques | |
Nom du module | InfoboxBuilder |
Dépendances | InfoboxBuilderView; HF (toutes les dépendances nécessaires) |
Version | Beta |
InfoboxBuilder fonctionne bien pour des infoboxes simples, mais la vraie magie opère avec les infoboxes complexes qui utilisent beaucoup de logique. Le point le plus important ici est que vous pouvez inclure votre propre module Lua qui gère la logique. Mais chaque chose en son temps.
Étape 1 - Fournir les données
Modifier
Dans cet exemple, nous utiliserons ce code wikitexte :
{{LuaInfobox | ModuleName = InfoboxBuilder | ModuleImage = [[Fichier:Lua-logo-nolabel.png]] | Dependencies = InfoboxBuilderView; HF | DependenciesDesc = (toutes les dépendances nécessaires) | Version = Beta }}
Cela appelle le modèle LuaInfobox et transmet certaines informations au module InfoboxBuilder. Vous pouvez trouver le code du modèle ici.
Étape 2 - Modèle infobox
Modifier
En premier, nous créerons un modèle pour mettre en forme notre infobox. Pour être consistent avec les données de l'étape 1, appelons-le « Modèle:LuaInfobox ». Nous utiliserons aussi le thème mon-theme
de Common.css. Pour utiliser un module personnalisé, nous devons mettre son nom dans la variable CustomModule
.
{{#infoboxbuilder: | 0:Theme = mon-theme | 0:CustomModule = Module:LuaInfobox | 1:Type = Title | 1:Label = Nom du module | 1:Value = {{{ModuleName|}}} | 2:Type = MainImage | 2:Label = Logo du module ou logo de Lua | 2:Value = {{{ModuleImage|}}} | 3:Type = Header | 3:Label = Basic info | 3:Value = Informations basiques | 4:Type = Line | 4:Label = Nom du module | 4:Value = {{{ModuleName|}}} | 5:Type = Line | 5:Label = Dépendances | 5:Value = {{{Dependencies|}}} | 5:ValueDesc = {{{DependenciesDesc|}}} | 5:ValueMethod = Dependencies | 6:Type = Line | 6:Label = Version | 6:Value = {{{Version|}}} }}
Étape 3 - Modules personnalisés
Modifier
CustomModule = Module:LuaInfobox
Code du module personnalisé
Modifier
local HF = require('Module:HF') local LuaInfobox = {} function LuaInfobox.Dependencies( field, vars ) local output = "" local dependencies = HF.explode( ";", field.Value ) for i, dependency in ipairs( dependencies ) do output = output .. "[[Module:" .. dependency .. "|" .. dependency .. "]]" .. "; " end if string.sub( output, -2, -1 ) == "; " then output = string.sub( output, 1, -3 ) -- Remove last semi-colon and space end return output end return LuaInfobox
Chaque méthode récupère deux arguments — tableau de champs avec les noms des clés correspondant à celles du modèle (par exemple Type
, Label
, Value
) et un tableau similaire de variables (par exemple Theme
, Pagename
).
Comme vous pouvez le voir vous pouvez invoquer d'autres modules Lua, vous n'avez donc pas besoin de tout placer au même endroit. Faites toutefois attention, le moteur de Lua a une limite de 100 modules inclus en une fois.
Utilisation dans un modèle
Modifier
Nous devons maintenant ordonner à InfoboxBuilder d'utiliser cette méthode pour un champ Dependency
et cela se fait en ajoutant un argument ValueMethod
avec un nom de fonction :
| 5:Type = Line | 5:Value = {{{Dependencies|}}} | 5:ValueMethod = Dependencies
Il n'y aucune convention de nommage à respecter, toutefois utiliser un nom de module pour une variable principale et des noms de champ pour les fonctions vous aidera à maintenir les choses organisées. Vous pouvez aussi traiter Label
de la même façon. Ajoutez simplement la clé LabelMethod
avec le nom de la fonction que vous souhaitez utiliser.
Valeurs multiples
Modifier
Puisque chaque méthode a accès à toutes les clés groupées en un champ, vous pouvez passer plusieurs valeurs. Par exemple, nous souhaitez indiquer que toutes les dépendances sont nécessaires. Il est possible de le faire en ajoutant un nouvel argument au champ Dependencies
:
| 5:Type = Line | 5:Label = Dépendances | 5:Value = {{{Dependencies|}}} | 5:ValueDesc = {{{DependenciesDesc|}}} | 5:ValueMethod = Dependencies
et définir sa valeur dans un modèle :
| Dependencies = InfoboxBuilderView; HF | DependenciesDesc = (toutes les dépendances nécessaires)
Nous pouvons maintenant l'utiliser pour ajouter des notes complémentaires pour le champ Dependencies
function LuaInfobox.Dependencies( field, vars ) local output = "" local dependencies = HF.explode( ";", field.Value ) for i, dependency in ipairs( dependencies ) do output = output .. "[[Module:" .. dependency .. "|" .. dependency .. "]]" .. "; " end if string.sub( output, -2, -1 ) == "; " then output = string.sub( output, 1, -3 ) -- Remove last semi-colon and space end if not HF.isempty( field.ValueDesc ) then output = output .. " " .. field.ValueDesc end return output end
Plus d'aide
- Parcourez et recherchez d'autres pages d'aide sur Aide:Contenu
- Visitez le Centre des communautés pour plus d'aide
- Consultez Aide:Contacter Fandom pour savoir comment signaler des erreurs ou des points à éclaircir sur cet article
Voir aussi
Modifier
- Billet d'annonce
- Lua templating/InfoboxBuilder sur le Fandom Developers Wiki