Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

« Module:Infobox » : différence entre les versions

De Nefald
Hiob (discussion | contributions)
Page créée avec « 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}) local infoboxType = args.type or 'monde' local config = configs[infoboxType] if not config then return '<div class="error">Type d\'infobox non reconnu : ' .. (infoboxType or 'non spécifié') .. '</d... »
Balises : Modification par mobile Modification par le web mobile
 
Hiob (discussion | contributions)
m map
 
(13 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
local core = require('Module:Infobox/Core')
local core   = require('Module:Infobox/Core')
local configs = require('Module:Infobox/Configs')
local configs = require('Module:Infobox/Configs')
local getArgs = require('Module:Arguments').getArgs
local getArgs = require('Module:Arguments').getArgs
Ligne 6 : Ligne 6 :


function p.main(frame)
function p.main(frame)
     local args = getArgs(frame, {parentFirst = true})
     local args = getArgs(frame, { parentFirst = true })
      
 
     local infoboxType = args.type or 'monde'
     -- Type d'infobox (ex: "Geographie" via #invoke:Infobox|main|Geographie)
     local config = configs[infoboxType]
     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
 
    -- Charger la configuration du type
     local config = configs.load(infoboxType)
     if not config then
     if not config then
         return '<div class="error">Type d\'infobox non reconnu : ' .. (infoboxType or 'non spécifié') .. '</div>'
         return '<div class="error">Type d\'infobox inconnu : ' .. tostring(infoboxType) .. '</div>'
     end
     end
   
 
     -- Gestion spéciale pour les images de carte dans les villes
     -- Construire l'infobox
     local result = core.build(args, config)
     return core.build(args, config, frame)
   
    -- Ajouter l'image de carte pour les villes (logique spéciale)
    if infoboxType == 'ville' and args.carte then
        -- Cette logique est déjà intégrée dans les sections
    end
   
    return result
end
end


return p
return p

Dernière version du 28 octobre 2025 à 20:38

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

Voir tous les modèles d'infobox.
  • {{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 :

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.

Catégorie: Modèle d'infobox



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 })

    -- Type d'infobox (ex: "Geographie" via #invoke:Infobox|main|Geographie)
    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

    -- Charger la configuration du type
    local config = configs.load(infoboxType)
    if not config then
        return '<div class="error">Type d\'infobox inconnu : ' .. tostring(infoboxType) .. '</div>'
    end

    -- Construire l'infobox
    return core.build(args, config, frame)
end

return p
Les témoins (''cookies'') nous aident à fournir nos services. En utilisant nos services, vous acceptez notre utilisation de témoins.