Modul:Category handler: razlika između inačica
Stvorena nova stranica sa sadržajem: »-------------------------------------------------------------------------------- --...«. |
mNema sažetka uređivanja |
||
| Redak 1: | Redak 1: | ||
-- | -- Srednja verzija Category handlera za enciklopedija.cc | ||
-- Minimalno potrebna logika, kompatibilna s enwiki predlošcima | |||
-- Uklonjeni: demopage, category2, wrappers, fallback, subpage logika | |||
-- | |||
-- | |||
local p = {} | |||
local yesno = require('Module:Yesno') | local yesno = require('Module:Yesno') | ||
local shared = require('Module:Category handler/shared') | |||
local data = require('Module:Category handler/data') | |||
local blacklist = require('Module:Category handler/blacklist') | |||
------------------------------------------------------------------------------- | |||
-- Glavna funkcija | |||
------------------------------------------------------------------------------- | |||
-- | |||
------------------------------------------------------------------------------- | |||
function | function p.main(frame) | ||
local args = frame:getParent().args | |||
local namespace = mw.title.getCurrentTitle().namespace | |||
-- Ako je stranica na blacklisti → ne kategoriziraj | |||
if blacklist[namespace] then | |||
return '' | |||
end | |||
end | |||
-- Ako je korisnik stavio nocat=yes → ne kategoriziraj | |||
if yesno(args.nocat) then | |||
return '' | |||
end | |||
end | |||
-- Ako je korisnik stavio categories=no → ne kategoriziraj | |||
if args.categories == 'no' then | |||
return '' | |||
end | |||
end | |||
-- Odredi vrstu kategorije prema namespaceu | |||
local map = data.mappings or {} | |||
local key = map[namespace] or map.other | |||
if not key then | |||
return '' | |||
end | |||
end | |||
-- Ako je korisnik ručno postavio parametar (npr. |yes=Kategorija:X) | |||
local manual = args[key] | |||
if manual and manual ~= '' then | |||
return string.format('[[Category:%s]]', manual) | |||
end | |||
end | |||
-- Ako postoji "all" parametar → uvijek dodaj | |||
if args.all and args.all ~= '' then | |||
return string.format('[[Category:%s]]', args.all) | |||
end | |||
end | |||
-- Ako postoji "other" parametar → koristi ga | |||
if args.other and args.other ~= '' then | |||
return string.format('[[Category:%s]]', args.other) | |||
end | |||
end | |||
-- Ako ništa nije zadano → ne kategoriziraj | |||
return '' | |||
end | end | ||
return p | return p | ||
Posljednja izmjena od 27. lipanj 2026. u 11:32
Ova će dokumentacija pojasniti kako koristiti modul u drugim modulima. Za korištenje u predlošcima, molim pogledajte dokumentaciju istoimenog predloška.
Korištenje iz drugih Lua modula
Kad ne koristiti ovaj modul
Ako modul treba kategorizirati samo jednu vrstu sadržaja (npr. samo datoteke, ili samo predloške), nije poželjno koristiti ovaj modul. Takvu kategorizaciju moguće je napraviti sljedećim kodom: <syntaxhighlight lang="lua"> local title = mw.title.getCurrentTitle() -- dohvati naslov stranice if title.nsText == 'Datoteka' then -- ako je imenski prostor naslova jednak
-- uradi nešto
end </syntaxhighlight>
Ako trebate zasebno kategorizirati različite vrste sadržaja, poželjno je koristiti ovaj modul.
Imenski prostori
Modul radi s imenima imenskih prostora na HIE.
- glavni - glavni imenski prostor
- razgovor - sve razgovorne stranice (razgovor sa suradnikom, razgovor o predlošku, ...)
- datoteka, Hrvatska internetska enciklopedija, suradnik - imena ostalih imenskih prostora. Pogledajte tablicu niže za puni popis
- other - svi ostali imenski prostori koji nisu poimence navedeni
Popis imenskih prostora
- (bez prostora razgovor i other)
| Name | Namespaces |
|---|---|
| draft talk | 119 |
| education program | 446 |
| mediawiki talk | 9 |
| wikipedia talk | 5 |
| other | |
| help | 12 |
| category | 14 |
| module talk | 829 |
| user talk | 3 |
| help talk | 13 |
| module | 828 |
| file talk | 7 |
| book talk | 109 |
| template | 10 |
| user | 2 |
| template talk | 11 |
| wikipedia | 4 |
| education program talk | 447 |
| book | 108 |
| talk | 1, 3, 5, 7, 9, 11, 13, 15, 101, 109, 119, 447, 829 |
| portal talk | 101 |
| main | 0 |
| draft | 118 |
| portal | 100 |
| file | 6 |
| mediawiki | 8 |
| category talk | 15 |
Primjeri korištenja
Modul prima dva ili više parametara.
Općeniti primjer
Niže je primjer korištenja: <syntaxhighlight lang="lua"> p = {} local categoryHandler = require('Module:Category handler').main
function p.main( frame )
local rezultat = 'Ovaj je modul namijenjen za GIP i razgovore.'
local kategorija = categoryHandler{
glavni = , -- Kategorizacija u GIP-u
razgovor = , -- Kategorizacija u razgovorima
other = , -- Kategorizacija u ostalim imenskim prostorima
nocat = frame.args.nocat -- kako bi "nocat=true/false" radilo
}
kategorija = kategorija or -- izbjegava grješku ako kategorija nije zadana
return rezultat .. kategorija
end
return p </syntaxhighlight> Pojašnjenje koda:
- Uzmimo da je primjer iznad dio modula Foo. Modul Foo možemo dodati u predložak ili pojedinačne stranice pisanjem
{{#invoke:foo|main}}.
Zbog gornjeg koda predložak ili stranice s tim modulom svrstavat će se u kategoriju Kategorija:Neka kategorija1 ako su u GIP-u, u kategoriju Kategorija:Neka kategorija2 ako su na kakvoj razgovornoj stranici ili u kategoriju Kategorija:Neka kategorija3 ako se nalaze negdje drugdje.
- U pojedinačni poziv predloška ili modula možemo staviti
|nocat=trueda se gornji vid kategorizacije ne provodi zasebno za svaki predložak ili modul.
Ista kategorija za više imenskih prostora
Ako trebamo više različitih imenskih prostora svrstati u istu kategoriju, činimo to ovako: <syntaxhighlight lang="lua"> p = {} local categoryHandler = require('Module:Category handler').main
function p.main( frame )
local rezultat = 'Ovaj je modul namijenjen za GIP i razgovore.'
local kategorija = categoryHandler{
glavni = , -- Kategorizacija u GIP-u
[1] = , -- prvi neimenovani parametar dodjeljujemo kategoriji
pomoć = 1, -- imenski prostor pomoći...
suradnik = 1, -- i imenski prostor suradnika smještaju se u kategoriju navedenu pod [1]
razgovor = , -- bez kategorije na razgovornim stranicama
nocat = frame.args.nocat -- kako bi "nocat=true/false" radilo
}
kategorija = kategorija or -- izbjegava grešku ako kategorija nije zadana
return rezultat .. kategorija
end
return p
</syntaxhighlight>
-- Srednja verzija Category handlera za enciklopedija.cc
-- Minimalno potrebna logika, kompatibilna s enwiki predlošcima
-- Uklonjeni: demopage, category2, wrappers, fallback, subpage logika
local p = {}
local yesno = require('Module:Yesno')
local shared = require('Module:Category handler/shared')
local data = require('Module:Category handler/data')
local blacklist = require('Module:Category handler/blacklist')
-------------------------------------------------------------------------------
-- Glavna funkcija
-------------------------------------------------------------------------------
function p.main(frame)
local args = frame:getParent().args
local namespace = mw.title.getCurrentTitle().namespace
-- Ako je stranica na blacklisti → ne kategoriziraj
if blacklist[namespace] then
return ''
end
-- Ako je korisnik stavio nocat=yes → ne kategoriziraj
if yesno(args.nocat) then
return ''
end
-- Ako je korisnik stavio categories=no → ne kategoriziraj
if args.categories == 'no' then
return ''
end
-- Odredi vrstu kategorije prema namespaceu
local map = data.mappings or {}
local key = map[namespace] or map.other
if not key then
return ''
end
-- Ako je korisnik ručno postavio parametar (npr. |yes=Kategorija:X)
local manual = args[key]
if manual and manual ~= '' then
return string.format('[[Category:%s]]', manual)
end
-- Ako postoji "all" parametar → uvijek dodaj
if args.all and args.all ~= '' then
return string.format('[[Category:%s]]', args.all)
end
-- Ako postoji "other" parametar → koristi ga
if args.other and args.other ~= '' then
return string.format('[[Category:%s]]', args.other)
end
-- Ako ništa nije zadano → ne kategoriziraj
return ''
end
return p