« Module:Infobox » : différence entre les versions
Autres actions
m A protégé « Module:Infobox » ([Modifier=Autoriser uniquement les administrateurs] (infini) [Renommer=Autoriser uniquement les administrateurs] (infini)) [protection en cascade] Balises : Modification par mobile Modification par le web mobile |
Preprocess Balises : Modification par mobile Modification par le web mobile |
||
(11 versions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 8 : | Ligne 8 : | ||
local args = getArgs(frame, {parentFirst = true}) | local args = getArgs(frame, {parentFirst = true}) | ||
local infoboxType = args.type or ' | -- Récupérer le type d'infobox depuis les arguments du frame | ||
local config = configs | local infoboxType = frame.args[1] or frame.args.type | ||
if not infoboxType or infoboxType == '' then | |||
return '<div class="error">Type d\'infobox requis</div>' | |||
end | |||
-- Récupérer la configuration | |||
local config = configs.load(infoboxType) | |||
if not config then | if not config then | ||
return '<div class="error">Type d\'infobox | return '<div class="error">Type d\'infobox inconnu : ' .. infoboxType .. '</div>' | ||
end | end | ||
return | -- Construire l'infobox en passant le frame pour le preprocessing | ||
return core.build(args, config, frame) | |||
end | end | ||
return p | return p |
Dernière version du 25 septembre 2025 à 21:09
Description
Le système d'infobox modulaire permet de créer et gérer facilement différents types d'infobox sur le wiki. Chaque type d'infobox est configuré dans un module séparé pour faciliter la maintenance.
Infobox disponibles
- Infobox Monde - Pour les mondes Minecraft
- Infobox Localité - Pour les localités (villages, villes, cités...)
- Infobox Grade - Pour les grades (Architecte, scribe, Ménestrel ...)
- Infobox Organisation - Pour toute forme d'organisation sociales (Guildes, Ordres, Factions, Tribus ...)
Utilisation
Pour utiliser une infobox existante
Utilisez directement le modèle correspondant :
{{Infobox Monde | nom = Monde Principal | seed = 12345 | difficulte = Normale }}
Création d'une nouvelle infobox
Étape 1 : Créer la configuration
Créez une sous-page dans :
Module:Infobox/Configs/<NomType>
avec cette structure :
local config = { titre = function(args) return args.nom or '{{PAGENAME}}' end, image = function(args) if args.image then return { nom = args.image, taille = args.tailleimage or "250px", legende = args.legende } end return nil end, sections = { { titre = 'Informations Générales', champs = { { cle = 'type', label = 'Type' }, { cle = 'fondation', label = 'Fondation' }, { cle = 'destruction', label = 'Destruction' }, { cle = 'fondateur', label = 'Fondateur(s)' }, { cle = 'symbole', label = 'Symbole' }, { cle = 'statut', label = 'Statut' }, { cle = 'x', label = 'Coordonnée X' }, -- Ces champs seront remplacés automatiquement { cle = 'y', label = 'Coordonnée Y' }, -- par l'affichage "Coordonnées" groupé { cle = 'z', label = 'Coordonnée Z' } } }, { titre = 'Organisation Interne', champs = { { cle = 'dirigeant', label = 'Dirigeant' }, { cle = 'population', label = 'Population' }, { cle = 'culte', label = 'Culte' }, { cle = 'organisation_rattachee', label = 'Organisation rattachée' }, { cle = 'gouvernement', label = 'Type de gouvernement' }, { cle = 'quartiers', label = 'Quartiers' } } }, { titre = 'Économie et Société', champs = { { cle = 'activite', label = 'Activité' }, { cle = 'ressources', label = 'Ressources' }, { cle = 'monnaie', label = 'Monnaie' }, { cle = 'commerce', label = 'Commerce' }, { cle = 'culture', label = 'Culture' }, { cle = 'langues', label = 'Langues' } } }, { titre = 'Géographie', champs = { { cle = 'monde', label = 'Monde' }, { cle = 'climat', label = 'Climat' }, { cle = 'biome', label = 'Biome' }, { cle = 'relief', label = 'Relief' }, { cle = 'superficie', label = 'Superficie' }, { cle = 'cours_eau', label = 'Cours d\'eau' }, { cle = 'batiments', label = 'Bâtiments notables' } } } } } return config
Étape 2 : Créer le modèle
Créez :
{{Modèle:Infobox_Organisation}}
avec ce contenu :
<includeonly><templatestyles src="Infobox/styles.css" />{{#invoke:Infobox|main|Localite | nom = {{{nom|{{{1|}}}}}} | soustitre = {{{soustitre|}}} | image = {{{image|}}} | tailleimage = {{{tailleimage|}}} | legende = {{{legende|}}} | type = {{{type|}}} | fondation = {{{fondation|}}} | destruction = {{{destruction|}}} | fondateur = {{{fondateur|}}} | symbole = {{{symbole|}}} | statut = {{{statut|}}} | monde = {{{monde|}}} | x = {{{x|}}} | y = {{{y|}}} | z = {{{z|}}} | dirigeant = {{{dirigeant|}}} | population = {{{population|}}} | culte = {{{culte|}}} | organisation_rattachee = {{{organisation_rattachee|}}} | activite = {{{activite|}}} | ressources = {{{ressources|}}} }}</includeonly><noinclude> {{Documentation}} </noinclude>
Étape 4 : Purger les caches
Purgez ces pages pour forcer MediaWiki à recharger les configurations :
* Modèle:Infobox <NomType>
Structure technique
Le système est composé de :
- Module:Infobox - Module principal de génération
- Module:Infobox/Core - Logique de rendu HTML
- Module:Infobox/Configs - Gestionnaire des configurations
- Module:Infobox/Configs/TypeX - Configuration de chaque type
Dépannage
Erreur "Configuration non trouvée"
1. Vérifiez que la sous-page de configuration existe 2. Vérifiez que le nom est ajouté dans configList 3. Purgez les caches des modules
L'infobox ne s'affiche pas
1. Purgez le cache du modèle 2. Vérifiez la syntaxe de la configuration 3. Vérifiez que le nom du type correspond exactement
Catégories
Les infobox sont automatiquement catégorisées dans Catégorie:Pages avec infobox NomType.
local core = require('Module:Infobox/Core')
local configs = require('Module:Infobox/Configs')
local getArgs = require('Module:Arguments').getArgs
local p = {}
function p.main(frame)
local args = getArgs(frame, {parentFirst = true})
-- Récupérer le type d'infobox depuis les arguments du frame
local infoboxType = frame.args[1] or frame.args.type
if not infoboxType or infoboxType == '' then
return '<div class="error">Type d\'infobox requis</div>'
end
-- Récupérer la configuration
local config = configs.load(infoboxType)
if not config then
return '<div class="error">Type d\'infobox inconnu : ' .. infoboxType .. '</div>'
end
-- Construire l'infobox en passant le frame pour le preprocessing
return core.build(args, config, frame)
end
return p