Moduly jsou speciálníšablony používající místo wikikódu programovací jazykLua. Poskytují tak oproti běžným šablonám základní programovacístrukturované příkazy, ale také mnohopřidaných a pokročilých funkcí zMediaWiki rozšířeníScribunto.
Jak psaní modulů, tak volání modulů je pokročilejší oproti běžným šablonám. Moduly jsou psány s ohledem nainterwiki využití, jsou tedy převážněv angličtině. Zároveň běžně zajišťujímnoho funkcí najednou, stránka jednoho modulu dokáže to, co desítky různých šablon. Z toho důvodu se moduly používajípouze uvnitř šablon a pokročilých stránek wiki,nikdy ne přímove článcích.
Modul se do šablony vloží pomocíkouzelné funkce{{#invoke:}}. Volání modulu pak vypadá takto:{{#invoke: název modulu| název funkce v modulu| parametry}}. Stejně jako u šablon se vyplnínázev modulu a parametry (pojmenované i nepojmenované). Navíc proti šablonám je tu ještěnázev funkce. Tam je potřeba vyplnit, která z funkcí v modulu se zavolá. Alternativní zápis šablonyopakovat zobrazující tři vykřičníky (!!!) pomocí funkcerep moduluString by tedy vypadal takto:
{{#invoke: string| rep| !| 3}}Protože se opakování nějakého textu může hodit i při psaní článků, máme zde kromě modulu i šablonu. Pro její kratší a srozumitelnější zápis je docela dobré používat všude právě šablonu. Jsou ale funkce modulů, které přímo ve článcích běžně nevyužijeme, například funkce moduluWikidata. Protože tyto funkce mimo šablony nemají smysl, není potřeba pro ně vytvářet ještě šablonu.
Vytvoření modulu je také složitější než vytvoření šablony. Pro začátek je potřeba mít nějakézáklady programování a naučit se orientovat se v jazyceLua. Také není na škodu mít přehled vespeciálních funkcích rozšíření Scribunto.
K přípravě modulu lze využít pískovištěModul:Test, společně s dalšími pískovišti (Šablona:Test,Wikipedie:Pískoviště, ...), viznápověda. Kromě toho může mít každý modul jako u šablon i vlastní pískoviště na své podstránce a navíc může mít i tzv. testovací podmodul na podstránce/testcases. Zde jsou umístěny testovací funkce využívající jeden z modulůScribuntoUnit neboUnitTests a vypisující výsledek testu při zavolání (běžně volané ve svojí diskusní stránce). Oproti šablonám tak lze moduly důkladně otestovat, aniž by bylo potřeba modul někde na pískovišti použít.
Základem modulu je takzvaná tabulka funkcí (f),angl.package (p). Ta obsahuje všechny funkce modulu. Každá funkce poté vezme tzv.kontext obsahující různé užitečné informace (parametry nadšablony, parametry modulu, jméno aktuální stránky, jméno modulu, atd.), zpracuje jej podle sebe a vrátí výsledek, který se vypíše. Jednoduchý modul tak vypadá např. takto:
localf={}functionf.prvniParametr(kontext)returnkontext.args[1]endreturnfFunkceprvniParametr v tomto případě vrátí (vypíše) první parametr. Volání{{#invoke:můjModul|prvniParametr|text k vypsání}} tedy zobrazí„text k vypsání“.