Pomoć:Kako napraviti skupni predložak sa preload parametrima

U ovoj kuharici se objašnjava kako napraviti predložak i odgovarajući lua modul za stvaranje predložaka s poveznicama na niz stranica pri čemu se crvene poveznice stvaraju s dodatnim parametrima koje omogućavaju da se tek otvorena stranica stvari s gotovim tipskim člankom.

Stvaranje tipskog članka uredi

Prvi korak je stvaranje tipskog članka, primjer: Wikipedija:Tipski članci/Naselje u Sloveniji

Pri tome uzmete neki primjer članka i sve promjenjive dijelove zamijenite sa parametrima $1 .. $n. Ako želite da sam tipski članak izgleda uredno, možete dodati:

<noinclude>dio wiki koda koji će se vidjeti samo u tipskom članku</noinclude> i
<includeonly>dio wiki koda koji se neće vidjeti u tipskom članku, ali će biti uključen kod stvaranja konkretnog članka</includeonly>
{{Infookvir naselje u Sloveniji
| ime = $1

| širina-stupnjevi = <noinclude>46</noinclude>
| širina-minute = <noinclude>18</noinclude>
| dužina-stupnjevi = <noinclude>14</noinclude>
| dužina-minute  = <noinclude>56</noinclude>

| pokrajina = [[$2|$3]]
| regija = [[$4 (regija)|$4]]
| općina = <includeonly>[[$5|$6]]</includeonly><noinclude>[[Općina Nazarje|Nazarje]]</noinclude>

| površina_ukupna =
| visina = 

| stan_2002 = 
| poštanski_broj =
}}
'''<includeonly>$1</includeonly><noinclude>Dobletina</noinclude>''' je naselje u [[Slovenija|slovenskoj]] općini <includeonly>[[$5|$6]]</includeonly><noinclude>[[Općina Nazarje|Nazarje]]</noinclude> ([[Slovenske pokrajine|pokrajina]] [[$2|$3]], [[Statističke regije Slovenije|statistička regija]] [[$4 (regija)|$4]]). 

Stvaranje predloška koji poziva Lua modul uredi

Primjer je {{Wp/Naselje u Sloveniji}}. Predložak ne radi ništa drugo osim što prenosi parametre na lua modul. Evo wiki koda:

<includeonly>{{#Invoke:Wp/Naselje u Sloveniji|main}}</includeonly><noinclude>
{{Lua|Wp/Naselje u Sloveniji}}
[[Kategorija:Wikipedijini predlošci]]</noinclude>

Sve što u predlošku treba napraviti je pozvati istoimeni lua modul (točnije njegovu funkciju "main"), ovako: {{#Invoke:Wp/Naselje u Sloveniji|main}}. Nema posebnog razloga zašto bi se modul zvao isto kao i predložak, osim što je tako preglednije.

Ostatak u ovom primjeru je:

  • {{Lua|Wp/Naselje u Sloveniji}} - dokumentiranje činjenice da koristimo ovaj modul. Ovo je potrebno da saznamo gdje se modul koristi. Za razliku od predložaka, korištenje modula se ne može otkriti pomoću Posebno:Što_vodi_ovamo, pa se ovim umjetno stvara poveznica na modul što pomaže otkriti gdje je modul korišten.
  • [[Kategorija:Wikipedijini predlošci]] - kategoriziranje, vjerojatno će kasnije biti promijenjena kategorija, kada bude još ovakvih predložaka

Stvaranje Lua modula uredi

Treći korak je stvaranje Lua modula koji će stvoriti pojedinačne "pametne" poveznice na članke. Primjer: Modul:Wp/Naselje u Sloveniji

Fiskni dio #1 uredi

local p = {}

local list = require("Module:List")
local wpPreload = require('Module:WpPreload')

function p.main(frame)

Stvaranje varijabli iz parametara predloška uredi

Kad se određeni predložak poziva s parametrima, npr

{{wp/Naselje u Sloveniji|Bistra (Črna na Koroškem, Slovenija)|Bistra|Koruška (Slovenija)|Koruška|Koruška|Općina Črna na Koroškem|Črna na Koroškem}}

isti ti paramteri su dostupni i u Lua modulu. Za početak, sve te parametre prebacimo u varijable sa smislenim imenima da bi kod bio razumljiviji:

    local naseljeLink = mw.getCurrentFrame():getParent().args[1]
    local naselje = mw.getCurrentFrame():getParent().args[2]
    local pokrajinaLink = mw.getCurrentFrame():getParent().args[3]
    local pokrajina = mw.getCurrentFrame():getParent().args[4]
    local regija = mw.getCurrentFrame():getParent().args[5]
    local opcinaLink = mw.getCurrentFrame():getParent().args[6]
    local opcina = mw.getCurrentFrame():getParent().args[7]

Zatim se treba pozvati funkcija wpPreload.napraviWp(), a prije toga je potrebno stvoriti array args. Vrijednosti pojedinog elementa args moraju odgovarati parametrima $1 .. $n kako su korišteni u tipskom članku. Za stvaranje args su korištene sve varijable osim naseljelink, ova varijabla ide zasebno u pozivu wpPreload.napraviWp(). Evo kako kreiramo array args (na kraju pojedinog retka je isječak iz tipskog članka:

    
    local args = {}
    args[1] = mw.uri.encode(naselje)        -- => '''$1''' je naselje u [[Slovenija|slovenskoj]] općini
    args[2] = mw.uri.encode(pokrajinaLink)  -- => [[Slovenske pokrajine|pokrajina]] [[$2|$3]]
    args[3] = mw.uri.encode(pokrajina)      -- => [[Slovenske pokrajine|pokrajina]] [[$2|$3]]
    args[4] = mw.uri.encode(regija)         -- => [[$4 (regija)|$4]]
    args[5] = mw.uri.encode(opcinaLink)     -- => u [[Slovenija|slovenskoj]] općini [[$5|$6]]
    args[6] = mw.uri.encode(opcina)         -- => u [[Slovenija|slovenskoj]] općini [[$5|$6]]
		

Zatim pozivamo wpPreload.napraviWp() sa sljedećim parametrima:

  • frame (fiksno)
  • naseljeLink (fiksno)
  • naselje (fiksno)
  • tipski članak - kopirajte njegovu adresu zajedno sa svim donjim crtama
  • args(fiksno)
  • predloženi sažetak
	local wikiCode = wpPreload.napraviWp(frame, naseljeLink, naselje, 'Tipski_članci/Naselje_u_Sloveniji', args, 'Stvoren novi članak')

Fiskni dio #3 uredi

	return wikiCode
end
return p

Stvaranje skupnog predloška uredi

Na kraju je potrebno napraviti skupni predložak u kojem će biti "pametne" crvene wikipoveznice (koji će nakon stvaranja stranica postati najobičnije plave).

Predložak će se iz skupnog predloška pozivati ovako:

{{wp/Naselje u Sloveniji|Bistra (Črna na Koroškem, Slovenija)|Bistra|Koruška (Slovenija)|Koruška|Koruška|Općina Črna na Koroškem|Črna na Koroškem}}

Pri tome su prva 2 parametra (|Bistra (Črna na Koroškem, Slovenija)|Bistra|) nužna jer se radi o naslovu i tekstu wikipoveznice, bez njih ne možemo ni stvoriti poveznice, a ostali ovise o tome kakav smo tipski članak napravili.

Evo primjer predloška {{Črna na Koroškem}}:

{{Navigacija
| naziv  = Črna na Koroškem
| naslov = [[Općina Črna na Koroškem|Naselja u sastavu Općine Črna na Koroškem]]
| slika  = 
| popis1 = <!--
-->{{wp/Naselje u Sloveniji|Bistra (Črna na Koroškem, Slovenija)|Bistra|Koruška (Slovenija)|Koruška|Koruška|Općina Črna na Koroškem|Črna na Koroškem}} • <!--
-->{{wp/Naselje u Sloveniji|Črna na Koroškem|Črna na Koroškem|Koruška (Slovenija)|Koruška|Koruška|Općina Črna na Koroškem|Črna na Koroškem}} • <!--
-->{{wp/Naselje u Sloveniji|Javorje (Črna na Koroškem, Slovenija)|Javorje|Koruška (Slovenija)|Koruška|Koruška|Općina Črna na Koroškem|Črna na Koroškem}} • <!--
-->{{wp/Naselje u Sloveniji|Jazbina (Črna na Koroškem, Slovenija)|Jazbina|Koruška (Slovenija)|Koruška|Koruška|Općina Črna na Koroškem|Črna na Koroškem}} • <!--
-->{{wp/Naselje u Sloveniji|Koprivna (Črna na Koroškem, Slovenija)|Koprivna|Koruška (Slovenija)|Koruška|Koruška|Općina Črna na Koroškem|Črna na Koroškem}} • <!--
-->{{wp/Naselje u Sloveniji|Ludranski Vrh|Ludranski Vrh|Koruška (Slovenija)|Koruška|Koruška|Općina Črna na Koroškem|Črna na Koroškem}} • <!--
-->{{wp/Naselje u Sloveniji|Podpeca|Podpeca|Koruška (Slovenija)|Koruška|Koruška|Općina Črna na Koroškem|Črna na Koroškem}} • <!--
-->{{wp/Naselje u Sloveniji|Topla (Črna na Koroškem, Slovenija)|Topla|Koruška (Slovenija)|Koruška|Koruška|Općina Črna na Koroškem|Črna na Koroškem}} • <!--
-->{{wp/Naselje u Sloveniji|Žerjav (Črna na Koroškem, Slovenija)|Žerjav|Koruška (Slovenija)|Koruška|Koruška|Općina Črna na Koroškem|Črna na Koroškem}}
}}<noinclude>
[[Kategorija:Skupni predlošci naselja po općinama u Sloveniji]]
</noinclude>

Radi se o običnom skupnom navigacijskom predlošku, a jedina razlika je što su obične wikipoveznice zamijenjene sa pozivom {{wp/Naselje u Sloveniji}}