FANDOM


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 simpleModifier

Une infobox toute simple
Moon
FAQ
Est-ce simple ?Oui ça l'est !
Vais-je l'utiliser ?Tout le temps !

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 exemple div, 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
Moon
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
Lua-logo-nolabel
Informations basiques
Nom du moduleInfoboxBuilder
DépendancesInfoboxBuilderView; HF (toutes les dépendances nécessaires)
VersionBeta

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'aideModifier

Voir aussiModifier

Sauf mention contraire, le contenu de la communauté est disponible sous licence CC-BY-SA  .