Modul:Category handler

Izvor: Hrvatska internetska enciklopedija
Inačica 787317 od 27. lipanj 2026. u 11:32 koju je unio WikiSysop (razgovor | doprinosi)
(razl) ←Starija inačica | vidi trenutačnu inačicu (razl) | Novija inačica→ (razl)
Prijeđi na navigaciju Prijeđi na pretraživanje
Dokumentacija modula
Modul sadrži implementaciju predloška {{Category handler}}.

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=true da 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