Hjälp:Mallar
En mall, tidigare kallad meddelandevariabel, är ett hjälpmedel för att infoga standardiserade textavsnitt, figurer, tabeller eller annat som man vill ska se ut på ett likartat sätt på många sidor. Mallen är en stomme och i varje artikel anropas den med en enkel text. Därmed slipper man skriva in hela standardtexten på varje sida.
Allmänt
redigeraEn mall är en speciell artikel (i Kategori:mallar) som innehåller en stomme till en standardiserad text, ruta och liknande som del av en artikel. Mallar kan användas på många olika sätt, allt från att sätta in några ord eller en länk till utförliga "rutor". I teorin går de även att använda mallar till avancerade programfunktioner; detta är de dock inte avsedda för, och Wikimedias utvecklare brukar avråda från det.
Mallar kan vara helt statiska och ge exakt samma resultat överallt, eller dynamiska med en gemensam stomme och vissa delar som varierar, antingen automatiskt (till exempel använder dagens datum eller sidans namn) eller via styrning i anropet (så kallade anropsparametrar, se nedan).
Typer av mallar
redigeraStandardmeddelanden
redigeraDenna boksida är en s.k. stubb, alltså bara påbörjad. Hjälp Wikibooks genom att skriva mer! |
Denna mall finns i mallartikeln Mall:stub. Flera liknande finns här.
Navigationsrutor
redigeraför att underlätta hopp mellan kapitel i en bok eller böcker i en serie, skapas lätt med en mall, till exempel läroböckerna Fysik A och Fysik B använder Mall:Fysik A-B Sidhuvud.
Mallar för användares diskussionssidor
redigeraDenna typ av mallar är förmodligen den mest kontroversiella, då många användare ogillar att få opersonliga mall-meddelanden istället för text som användaren formulerat själv. Vanligast är nog klottermallarna, eftersom det ofta inte känns meningsfullt att lägga ner tid på personligt utformade meddelanden till klottrare. Därnäst kommer förmodligen välkommenmallarna, som ger mer eller mindre nytillkomna användare en introduktion till några nyttiga sidor att läsa.
Namnstandard för mallar
redigeraMallar är normalt artiklar i namnrymden Mall. En sådan mall är alltså en sida med namn på formen
- Mall:mall-namn
Sidor som används som mallar kan dock i princip heta vad som helst och ligga i andra namnrymder (med vissa, små nackdelar).
Precis som för andra typer av sidor skiljer mallarna på stora och små bokstäver i sidtiteln, förutom i första bokstaven, och blanksteg är ekvivalent med understeck ( _ ).
Grafisk utformning av mallar
redigeraBilder i mallar
redigeraEn mall kan innehålla en eller flera bilder, om det gör mallen lättare att förstå. Ett par riktlinjer för bilder i mallar:
- Bilden måste vara fri från upphovsrätt. Till exempel ska inte företagslogotyper användas i mallar.
- Bilden bör vara stor nog för att det ska synas vad den föreställer, men inte så stor att den stör mallens layout.
- Det är ofta en fördel att välja enkla, entydiga och etablerade piktogram, som flaggor, vägmärken, stiliserade vardagsföremål och liknande.
Exempel finns att se i Kategori:Stubbmallar.
Inkludering av mallar = anrop
redigeraFör att anropa en mall i en artikel skriver man helt enkelt
- {{mall-namn}}
som är en förkortning av det fullständiga skrivsättet:
- {{Mall:mall-namn}}
någonstans i artikeln. Normalt utelämnar man namnrymden Mall:, den kommer kommer automatiskt att läggas till vid sökningen efter den angivna mallen. Om det inte finns någon sida med namnet Mall:mall-namn så fungerar det som [[Mall:mall-namn]] d.v.s. en länk till redigeringssidan för mallen.
Mallar kan i sin tur anropa andra mallar, men rekursion, att låta en mall anropa sig själv är inte tillåtet. Risken är stor att det blir oändlig rundgång. Alltså. En mall får inte direkt eller indirekt anropa sig själv eller en överordnad mall.
Om man vill använda mallar som inte ligger i namnrymden Mall: måste man ange en annan namnrymd eller skriva ett inledande : (kolon) före namnet om det är en mallartikel som ligger i artikel-namnrymden (den "vanliga" huvud-namnrymden).
Ett exempel på det första sättet är om man vill inkludera den beskrivande texten för en bild. Man skriver då:
- {{Bild:bild-namn}}
För att använda en helt vanlig artikel som mall skriver man
- {{:artikel-namn}}
Parametrar = styrmedel
redigeraEn mall kan innehålla variabel text genom att man definierar parametrar i mallens text och sedan tilldelar dessa parametrar värden när man anropar mallen på någon sida. Parametrar kan antingen vara namngivna eller numrerade.
I mallen
redigeraanger man en parameter med 3-dubbla klamrar, så här:
- {{{parameter-namn}}} (för namngivna parametrar) eller
- {{{1}}}, {{{2}}} etc. (för numrerade parametrar)
För parametrar som utelämnats i anropet kan default-värden (skönsvärden) anges, så här:
- {{{parameternamn|defaultvärde}}}
- {{{land|Sverige}}} -- om parametern "land" inte har angivits, så används värdet "Sverige"
- {{{dödsår|}}} -- om parametern "dödsår" inte har angivits (eftersom personen fortfarande lever), så utelämnas detta helt
Det finns ytterligare två rätt avancerade sätt att hantera utelämnade värden. Dels med villkorssatser som i mall:Ortsfakta, dels med CSS-klasser (cascading style sheets) som i en del gamla mallar. Metoden som använder villkorssatser är nyare och bättre och bör därför användas i nya mallar.
Här är ett exempel (från mallen Ortsfakta) på hur värden kan utelämnas ur faktarutor. Denna mall gör faktarutan i form av en tabell. Inom tabellraden används villkorskonstruktionen {{#if: som avslutas med ett extra }} på sista raden. Detta är alltså i sig ett mallanrop där första parametern är ett villkor, nämligen värdet av ortsparametern täthet, med blankt defaultvärde ({{{täthet|}}}). Andra parametern är det värde som bara ska infogas om villkorsvärdet är definierat. Eftersom vi befinner oss inne i ett mallanrop används !-mallen för att återge de |-tecken som krävs för konstruktionen av tabellcellerna.
|- style="vertical-align:top;" {{#if:{{{täthet|}}}| {{!}} '''Folktäthet'''<sup>({{{täthetår|}}})</sup> {{!}} {{{täthet}}}}}
Avsnittet nedan är ett exempel på hur hiddenstrucures fungerar. Det är taget ur en gammal version av mallen Filmfakta, som ställer upp en liten tabell med en tabellrad för varje parameter. Tabellraden inleds med |- och därefter följer attribut för tabellraden. Om parametern "land" har ett värde, till exempel "Norge", så blir tabellradens attribut class="hiddenStructureNorge", en CSS-klass som är odefinierad och därför blir synlig. Men om "land" har utelämnats blir i stället attributet class="hiddenStructure" som är definierad till att vara osynlig i den färdiga webbsidan. Alltså döljs hela tabellraden om mallanropet inte anger något land.
|- class="hiddenStructure{{{land|}}}" ! style="text-align: left; vertical-align: top;" | Produktionsland | {{{land}}}
Namnet på en använd bild eller namnet på en annan mall bör inte bero på parametervärden. Däremot är det tillåtet att låta sådana namn bero på variabler (till exempel {{PAGENAME}} eller {{CURRENTYEAR}}). Obs att variabler omges av bara två klamrar.
Av tekniska skäl kan ett parameternamn inte innehålla vertikalstrecket: | eftersom detta tecken används för att avskilja parametrarna vid "anropet" (se nedan).
I anropet
redigeratill mallen ger man parametrarna deras värden genom att skriva
- {{mall-namn|parameternamn1=värde1|parameternamn2=värde2}} (för namngivna parametrar, valfri ordningsföljd)
- {{mall-namn|värde1|värde2}} (för numrerade parametrar, ordningsföljden avgör !)
Exempel
redigeraMallen som heter "fdag" ser ut så här:
Idag är det den {{{CURRENTDAY}}} {{{CURRENTMONTHNAME}}} och {{{namn}}} fyller {{{1}}} år
anropas {{fdag|namn=Fredrik|15}}
resulterar i Idag är det den 21 december och Fredrik fyller 15 år
Statisk kopia av mall
redigeraEn av fördelarna med mallar är att ändringar i mallen direkt visas på alla de sidor som använder mallen. Om man inte vill ha denna effekt skriver man ordet subst (engelskans substitute=ersätt) framför mallens namn
- {{subst:mall-namn}}
Då kopieras mallens innehåll till den plats där den anropas när man sparar artikelsidan (se "Gör så här" nedan). Det blir alltså inte längre ett anrop till mallen utan en statisk ("engångs"-) kopia. Allt som mallen är gjord för visas, men förändringar i mallen som görs senare kan inte påverka artikeln. Tekniken kan även användas om man vill göra modifieringar för att passa en viss artikel utan att påverka alla andra artiklar som använder mallen. Se vidare Wikipedia:Substitution.
Om man vill kopiera in innehållet i en mall utan att dess wiki-kod utförs så skriver man
- {{msgnw:mall-namn}}
Då hämtas mallens text och omges med <nowiki>-markeringar så att mallens text visas helt utan tolkning.
OBS att båda dessa kopieringar fungerar enbart om mallen ligger i namnrymden "mall" - inte om mallen ligger bland vanliga artiklar.
Gör så här:
- Skriv in anrop enligt ovan (med sina dubbla klamrar)
- Spara artikeln (det räcker inte med förhandsvisning !)
- Starta redigering igen. Då finns hela mallens innehåll inkopierat i artikeln där anropskoden tidigare stod.
Att hitta existerande mallar
redigeraAlla mallar läggs i Kategori:Mallar eller dess underkategorier så där kan man leta. För att leta i en strukturerad lista går man till Wikibooks:Lista över mallar eller någon av dess undersidor.
Om Du själv skapar en mall så kom ihåg att ge den Kategori:Mallar och att lägga in den på lämpligt ställe i listan. Så slipper andra att uppfinna "ditt" hjul igen.
Att ändra i existerande mallar
redigeraEtt par små varningar är här på sin plats.
- Mallar har oftast en avancerad syntax (programspråk) så man måste kunna en del för att få det rätt.
- Kolla hur många sidor som använder mallen innan du ändrar något. Det kan bli mycket jobb att kolla att den nya varianten fungerar i alla dessa.
- Om det inte fungerade kan man återställa till senast fungerande version i mallens historik.