Mall:If pagename/dok

Från Wikipedia


Det här är metamallen {{if pagename}}. Den hjälper andra mallar att upptäcka vilken sida de är på, med hjälp av mönstermatchning på sidnamn.

Se även den utökade versionen: {{if pagename multi}}. Den kan återanvända samma input på flera matchande mönster.

Användning[redigera wikitext]

Denna mall tar en eller flera parametrar. De flesta av de parametrar har inte fasta namn, utan de är en del av mönstermatchning. Så här:

{{if pagename
| /doc = Doc page text
| other = Other pages text
}}

Om mallen befinner sig på "Mall:Exempel/dok", kommer koden ovan returnera det här:

Doc page text

Om den befinner sig på någon annan sida än en /dok-undersida kommer den returnera det här:

Other pages text

Här är en beskrivning av hela mönstermatchningen:

{{if pagename
<!-- Match on full pagename -->
| User:Example/test = Text for "User:Example/test".
| User:Example = Text for "User:Example".
| User talk:Example = Text for "User talk:Example".

<!-- Match on full basepage name, when on a basepage or its subpages -->
| User:Example/+ = Matches "User:Example" and "User:Example/test".

<!-- Match on pagename, when on a basepage -->
| Example = Matches "User:Example", "User talk:Example", "Template:Example" 
            and so on, but not "User:Example/something".

<!-- Match on full basepage name, when on a subpage -->
| User:Example/* = Matches "User:Example/something", but not "User:Example".
| User talk:Example/* = Matches "User talk:Example/something".

<!-- Match on basepage name, when on a subpage -->
| Example/* = Matches "User:Example/something" and "User talk:Example/something".

<!-- Match on subpage name -->
| /something = Any pagename that ends in "/something".
| /doc = Any pagename that ends in "/doc".

<!-- Match on partial subpage name (case-insensitive) -->
| /some* = Any subpage name beginning with "/some" or "/Some".
| /arch* = Matches "User talk:Example/Archive 1".

<!-- Default fallbacks -->
| basepage = Text for any basepage.
| subpage = Text for any subpage.
| other = Text for any page.
}}

Matchningen går från toppen till botten, och returnerar den första parametern som matchar. "Uppifrån och ned" betyder den ordning som visas ovan, inte den ordning du råkar mata in parametrarna.

Det finns ingen gräns för hur många parametrar som du kan använda, utöver vad servrarna och Mediawiki-systemet kan hantera.

De flesta av matchningarna är skiftlägeskänsliga. Exempelvis "/test" matchar "Användare:Exempel/test" men inte "Användare:Exempel/Test".

Matchning på partiella undersidor med namn som "/some*" har vissa begränsningar, se sitt eget avsnitt nedan.

Om ett tomt (men definierad) parameter matchar, stoppas matchningen och mallen returnerar en tom sträng. Det är med flit och kan användas så här:

{{if pagename
| /doc =
| /sandbox = Sandbox text
| other = Other pages text
}}

Koden ovan kommer inte att renderan någonting när på en /dok-undersida. Men när på en /sandbox-sida returnerar den detta:

Sandbox text

Och när på någon annan sida returnerar den detta:

Other pages text

Partiella undersidsnamn[redigera wikitext]

Den här mallen kan också matcha partiella undersidsnamn. Så här:

{{if pagename
| /archiv* = Archive page text
| other = Other pages text
}}

Om på "Användare:Exempel/Arkiv 1" kommer koden ovan returnera detta:

Archive page text

Parameternamnet "/some*" måste vara gemener. Den matchar dock undersidsnamn i både versaler och gemener, t.ex. "Användare:Exempel/NågonTing" och "Användare:Exempel/någonting".

Den partiella matchningen stöderr endast matchning på 4, 6 och 8 tecken. Således om man använder "/some*", "/someth*" och "/somethin*" fungear det men om man använder "/som*" eller "/somet*" fungerar det inte.

Längre mönster matchar först, alltså om både "/somethin*" och "/some*" är definierade, och den aktuella sidan är "Användare:Exempel/Någonting", då kommer datan från "/somethin*" användas.

"Sid"-parametern[redigera wikitext]

För testning och som demonstration kan denna mall ta en parameter som heter sida. Så här:

{{if pagename
| /test = Test pages text
| other = Other pages text
| page = Template:Example/test
}}

Oavsett på vilken typ av sida koden ovan används ger den detta:

Test pages text

Sid-parametern gör att denna mall beter sig precis som på den sidan. Sidnamnet behöver inte vara en befintlig sida.

Om sid-parametern är tom eller odefinierad, bestämmer namnet på den aktuella sidan resultatet.

Du kan göra så att din mall också förstår sid-parameternn. Det innebär att du kan demonstrera de olika utseendena av din mall i dokumentationen för din mall. Gör sedan så här:

{{if pagename
| /test = Test pages text
| other = Other pages text
| page = {{{page|}}}
}}

Namnrymd-matchning[redigera wikitext]

Den här mallen har inte namnrymd-matchning. Om du behöver det kan du sedan kombinera denna mall med en av namnrymdsdetektions-mallarna som {{annan mall}}. Så här:

{{mall annan
| {{if pagename
  | /doc = Template doc page text.
  }}
| <!-- Other space, do nothing -->
}}

Om koden ovan på "Användare:Exempel/dok" inte returnerar någonting. Men om den på "Mall:Exempel/dok" kommer den returnera detta:

Template doc page text.

Tekniska detaljer[redigera wikitext]

Denna mall upptäcker undersidor, även när de används i namnrymden som inte har Mediawiki undersidsfunktion aktiverad. Alltså fungerar den här mallen på samma sätt i alla namnrymder.