MediaWiki w obrazkach/Szablony

Szablony jest to mechanizm umożliwiający półautomatyczne wstawianie treści jednej strony MediaWiki do drugiej. Głównym celem tworzenia szablonów jest uproszczenie wstawiania często powtarzających się fragmentów stron bez konieczności każdorazowego pisania od nowa pełnego kodu tych fragmentów. Dodatkowo szablony umożliwiają dokonywanie szybkich zmian na wielu stronach na raz. Zmiana szablonu powoduje bowiem automatycznie zmiany na wszystkich stronach, do których jest on dołączony.

Aby zrozumieć dobrze ten rozdział niniejszego podręcznika należy koniecznie zapoznać się wcześniej z działami: Podstawy formatowania tekstu, Linki, Wstawianie obrazków i Tabele.

Technicznie, szablon jest taką samą stroną MediaWiki jak każda inna i edytuje się je w ten sam sposób. W większości projektów szablony są wydzielone do osobnej przestrzeni nazw, która nazywa się zwykle "szablon", a w serwisach anglojęzycznych "template". Mechanizm tworzenia szablonów umożliwia jednak wstawienie każdej strony do każdej innej jako rodzaju szablonu. Można też tworzyć wielokrotnie zagłębione szablony, tzn. szablony, które wykorzystują inne szablony.

Specyficzną cechą szablonów jest możliwość stosowania w ich kodzie parametrów, przy pomocy których można dynamicznie zmieniać ich treść. Istnieje też możliwość tworzenia szablonów warunkowych - tzn. zachowujących się inaczej zależnie od podanych parametrów oraz miejsca, w którym zostały umieszczone. Tworzenie szablonów warunkowych jest jednak dość trudne i wymaga znajomości zasad działania języka PHP oraz ogólnej wprawy w programowaniu. Wykracza to poza ramy tego podręcznika i dlatego nie będzie omówione.

Wstawianie szablonów edytuj

Podstawowy wikikod edytuj

Wikikod wstawiania szablonów ma następującą postać:

{{metoda:Nazwa_szablonu|parametr1|parametr2|...itd}}
gdzie:
metoda: - może być pominięta lub może to być: subst: oraz msgnw:
Nazwa_szablonu - to tytuł strony, w której zapisany jest szablon z pominięciem przedrostka "Szablon:"
parametr(1), parametr(2)... itd - to lista kolejnych parametrów szablonu, jeśli szablon je wykorzystuje (więcej o samych parametrach można przeczytać w rozdziale na ten temat).

Tworzenie trwałego powiązania z szablonem edytuj

Poniższy kod:

{{Nazwa_szablonu}}

tworzy trwałe powiązanie z określonym szablonem.

Trwałe powiązanie powoduje wyświetlanie aktualnego tekstu szablonu przy każdym wczytaniu strony zawierającej ten wikikod.

Przykład:

Utworzyliśmy prosty szablon, który znajduje się na stronie Szablon:Przykład/MediaWikiTest i jego kod roboczy wygląda tak:

{| class="wikitable" align="center"
! Tekst szablonu
|-
| To jest przykładowy szablon
|}

czyli jest to prosta tabelka.

Następujący kod wstawiony do naszej strony:

{{Przykład/MediaWikiTest}}

utworzy trwałe powiązanie ze wcześniej napisanym szablonem, co da taki efekt:


Tekst szablonu
To jest przykładowy szablon

W kodzie naszej strony nie będzie wstawionego bezpośrednio kodu strony Szablon:Przykład/MediaWikiTest, lecz tylko odniesienie do niego, które jest wykonywane od nowa przy każdym wczytaniu naszej strony. Gdybyśmy coś zmienili na stronie Szablon:Przykład/MediaWikiTest, to wówczas nasza strona też się zmieni, mimo że jej nie edytowaliśmy. Oczywiście, jeśli wstawimy kod trwałego odniesienia do szablonu:Przykład/MediaWikiTest do pięciuset (lub dowolnej innej liczby) innych stron, to po zmianie tego szablonu nastąpi zmiana wyglądu wszystkich tych pięciuset stron!

Uwaga
Jeśli aktualnie mamy wczytaną stronę z trwałym powiązaniem z szablonem i dokonamy zmiany tego szablonu, to strona nie zmieni się natychmiast na naszym ekranie, lecz musimy ją przeładować aby zobaczyć rezultaty.

Jednokrotne wstawianie szablonu (subst:) edytuj

Kod:

{{subst:Nazwa_szablonu}}

powoduje wykonanie jednokrotnego wstawienia treści szablonu do danej strony. Po zapisaniu tej strony kod ten jest jednokrotnie "podmieniany" przez oprogramowanie treścią szablonu i nie tworzy się trwałe powiązanie między szablonem a naszą stroną.

Na przykład, jeśli wstawimy szablon Przykład/MediaWikiTest przy pomocy kodu:

{{subst:Przykład/MediaWikiTest}}

to wówczas po zapisaniu naszej strony, oprogramowanie wstawi w to miejsce treść szablonu Przykład/MediaWikiTest, czyli wcześniej pokazaną tabelkę, zaś kod: {{subst:Przykład/MediaWikiTest}} po prostu zniknie.

Wizualny efekt subst: i bez "subst:" jest pozornie taki sam - ale strona, do której został wstawiony szablon metodą "subst:" nie będzie się zmieniała, gdy później zmieni się treść samego szablonu.

Pokazywanie kodu szablonu (msgnw:) edytuj

Kod:

{{msgnw:Nazwa_szablonu}}

tworzy trwałe powiązanie z szablonem, ale w treści strony, do której został wstawiony nie jest wyświetlany wygląd szablonu, lecz jego kod. Czyli działa to tak, jabyśmy wstawili szablon objęty tagami <nowiki></nowiki>.

Przykład:

{{msgnw:Przykład/MediaWikiTest}}

da taki efekt:

<noinclude> Ten szablon jest częścią podręcznika [[MediaWiki w obrazkach]] i jest zastosowany w rozdziale [[MediaWiki w obrazkach/Szablony|Szablony]]. {{Kategoria|Szablony przykładowe podręczników}} </noinclude> {| class="wikitable" align="center" ! Tekst szablonu |- | To jest przykładowy szablon |}

Mechanizm ten jest czasami przydatny do pokazywania kodu szablonu bez konieczności przepisywania go.

Tworzenie szablonów z parametrami edytuj

Parametry szablonu stosuje się wtedy gdy, chcemy wstawiać do wielu stron fragmety, które mają mieć taki sam wygląd ogólny, ale inną treść. Treść parametrów szablonów może być zupełnie dowolna - mogą to być proste teksty, linki, a nawet obrazki i inne szablony.

Miejsce, gdzie ma pojawić się treść parametru, zaznacza się w kodzie szablonu potrójnymi nawiasami klamrowymi i liczbami określającymi numer parametru, np. {{{1}}}, {{{2}}} itd. Liczby te odnoszą się do kolejności parametrów wpisywanych w kodzie odwołania do niego. Druga możliwość to nadanie nazw parametrom, np: {{{obrazek_lewy}}}, {{{obrazek_prawy}}}, dzięki czemu można je potem w kodzie odwołania do szablony przywoływać w dowolnej kolejności.

Przykład szablonu z parametrami numerowanymi edytuj

Tworzymy szablon o nazwie Szablon:Przykład/MediaWikiTest1 o następującym kodzie roboczym:

{| class="wikitable" align="center"
! colspan=2 | Tekst szablonu
|-
! Parametr 1
! Parametr 2
|-
| {{{1}}} - miejsce gdzie ma występować treść parametru 1
| {{{2}}} - miejsce gdzie ma występować treść parametru 2
|}

który teraz trochę przetestujemy z użyciem różnych parametrów.

Kod odwołania:

{{Przykład/MediaWikiTest1|krowa|koń}}

da taki efekt:


Tekst szablonu
Parametr 1 Parametr 2
krowa koń

Teraz wstawimy do tego szablonu linki wewnętrzne:

{{Przykład/MediaWikiTest1|[[IRC]]|[[PHP]]}}

i efekt:


Tekst szablonu
Parametr 1 Parametr 2
IRC PHP

a teraz wstawimy do tej tabelki zdjęcia:

{{Przykład/MediaWikiTest1|[[Grafika:Cow portrait.jpg|thumb|center|150 px|Krowa]]|[[Grafika:Horse profile.jpg|thumb|center|150 px|Koń]]}}

i efekt:


Tekst szablonu
Parametr 1 Parametr 2
 
Krowa
 
Koń
Uwaga
W odwołaniach do szablonów z parametrami numerowanymi musimy koniecznie wpisać wszystkie wymagane parametry. Gdy jakiegoś nie wstawimy wyświetlą się nam potrójne klamry.

Przykład:

{{Przykład/MediaWikiTest1|Ups.. a gdzie drugi parametr?}}

i efekt:


Tekst szablonu
Parametr 1 Parametr 2
Ups.. a gdzie drugi parametr? {{{2}}}

Przykład z parametrami o nazwach opisowych edytuj

Dla użytkowników szablonów często wygodniejsze jest odwoływanie się do nazw parametrów, a nie ich kolejności, choć wydłuża to zarówno kod samego szablonu jak i odwołania do niego. Dotyczy to szczególnie szablonów z dużą liczbą parametrów, których kolejność trudno by było zapamiętać. Dodatkowo sama nazwa parametru - jeśli ma charakter opisowy wyjaśnia użytkownikowi, co w którym miejscu należy do szablonu wpisać. W kodzie szablonu nazwy parametrom nadaje się, wpisując je w potrójne nawiasy klamrowe zamiast kolejnych liczb. Np:

{| class="wikitable" align="center"
! colspan=2 | Tekst szablonu
|-
! Lewy obrazek
! Prawy obrazek
|-
| {{{lewy_obrazek}}} - miejsce gdzie ma występować treść parametru "lewy_obrazek"
| {{{prawy_obrazek}}} - miejsce gdzie ma występować treść parametru "prawy obrazek"
|}

Kod odwołania:

{{Przykład/MediaWikiTest2|prawy_obrazek=[[Grafika:Cow portrait.jpg|thumb|center|150 px|Krowa]]|lewy_obrazek=[[Grafika:Horse profile.jpg|thumb|center|150 px|Koń]]}}

Jak widać parametrom z nazwami nadajemy wartość poprzez podanie ich nazwy i znaku "=" i nie ma znaczenia w jakiej kolejności je podamy. Powyższy kod da taki sam efekt jak poprzednio, jednak nie trzeba pamiętać co w które miejsce wpisać, bo przypominają o tym nazwy samych parametrów.


Tekst szablonu
Lewy obrazek Prawy obrazek
 
Koń
 
Krowa

Warto na koniec zwrócić uwagę, że przy tabelarycznych szablonach z wieloma parametrami wygodnie jest je zapisać w formie z każdym odwołaniem do parametru w oddzielnej linii:

{{Przykład/MediaWikiTest2
|prawy_obrazek=[[Grafika:Cow portrait.jpg|thumb|center|150 px|Krowa]]
|lewy_obrazek=[[Grafika:Horse profile.jpg|thumb|center|150 px|Koń]]
}}

Dzięki czemu kod staje się jeszcze bardziej czytelny do użytkowników.

Zmienne systemowe MediaWiki edytuj

Oprogramowanie MediaWiki posiada wbudowane w swoją strukturę kilkadziesiąt zmiennych systemowych, które można wykorzystywać też w tekstach stron, w sposób podobny do tego jak się to robi w przypadku szablonów. Oczywiście zmienne te można też wykorzystywać w kodzie "zwykłych" szablonów, co jest zresztą często czynione.

Na przykład istnieją zmienne systemowe umożliwiające automatycznie wyświetlenie aktualnej daty, z których możemy utworzyć szablon, który wyświetli nam tę datę na stronie. Potrzebne do tego zmienne mają nazwy:

  • CURRENTDAY - aktualny dzień miesiąca
  • CURRENTMONTHNAMEGEN - aktualny miesiąc,
  • CURRENTYEAR - aktualny rok.

Wystarczy je odpowiednio użyć:

:''Dzisiaj mamy:'' '''{{CURRENTDAY}} {{CURRENTMONTHNAMEGEN}}, {{CURRENTYEAR}} r.'''

aby uzyskać taki efekt:

Dzisiaj mamy: 20 kwietnia, 2024 r.

Wybrane, przydatne zmienne systemowe[1]:

Opis Nazwa Efekt
Daty i zmienne Wiki
Nr. aktualnego miesiąca {{CURRENTMONTH}} 04
Nazwa aktualnego miesiąca {{CURRENTMONTHNAME}} kwiecień
Dopełniacz nazwy
aktualnego miesiąca
{{CURRENTMONTHNAMEGEN}} kwietnia
Skrót aktualnego miesiąca {{CURRENTMONTHABBREV}} kwi
Dzień miesiąca {{CURRENTDAY}} 20
Dzień tygodnia {{CURRENTDOW}} 6
Nazwa dnia tygodnia {{CURRENTDAYNAME}} sobota
Bieżący tydzień roku {{CURRENTWEEK}} 16
Aktualny rok {{CURRENTYEAR}} 2024
Aktualny czas {{CURRENTTIME}} 02:30
Liczba stron w tym serwisie Wiki {{NUMBEROFARTICLES}} 6880
Liczba załadowanych plików {{NUMBEROFFILES}} 932
Zmienne serwerowe
Nazwa serwisu {{SITENAME}} Wikibooks
Nazwa serwera {{SERVERNAME}} pl.wikibooks.org
Adres serwera {{SERVER}} //pl.wikibooks.org
Związane ze stroną
Nazwa strony {{PAGENAME}} MediaWiki w obrazkach/Szablony
Nazwa przestrzeni nazw {{NAMESPACE}}
Numer ostatniej edycji {{REVISIONID}} -

Szablony i kategorie czyli "noinclude" edytuj

Szablony są potężnym narzędziem do kategoryzowania stron.

Jeśli stronę szablonu przypisze się do danej kategorii, to automatycznie wszystkie strony, które będą miały wpisane wcześniej wspomniane trwałe powiązanie do tego szablonu również zostaną przypisane do tej kategorii. Umożliwia to oczywiście szybką zmianę kategorii setek stron na raz za pomocą zmienienia przypisania kategorii w jednym szablonie. Z drugiej jednak strony pozornie uniemożliwia to tworzenie osobnych kategorii przeznaczonych tylko dla szablonów.

W dużych serwisach, gdzie istnieją setki szablonów dobrze jest mieć osobne kategorie dla szablonów aby nad nimi panować i o żadnym nie zapomnieć. Z tego m.in. względu stworzono specjalny tag, umożliwiający zamieszczenie w kodzie szablonów fragmentów, które są widoczne na samych stronach tychże szablonów, ale nie są eksportowane do stron, w których te szablony są zamieszczone.

Fragmenty kodu szablonu, które nie ma być eksportowany do innych stron umieszcza się między tagami:

<noinclude></noinclude>

Przykłady zastosowania tego mechanizmu można zobaczyć na stronach używanych wcześniej szablonów: Szablon:Przykład/MediaWikiTest i Szablon:Przykład/MediaWikiTest1.


Przypisy

Źródła edytuj