MediaWiki w obrazkach/Szablony

Z Wikibooks, biblioteki wolnych podręczników.
Przejdź do nawigacji Przejdź do wyszukiwania

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: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:

{{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: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: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: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 MediaWikiTest przy pomocy kodu:

{{subst:MediaWikiTest}}

to wówczas po zapisaniu naszej strony, oprogramowanie wstawi w to miejsce treść szablonu MediaWikiTest, czyli wcześniej pokazaną tabelkę, zaś kod: {{subst: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: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]] </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: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:

{{MediaWikiTest1|krowa|koń}}

da taki efekt:


Tekst szablonu
Parametr 1 Parametr 2
krowa koń

Teraz wstawimy do tego szablonu linki wewnętrzne:

{{MediaWikiTest1|[[IRC]]|[[PHP]]}}

i efekt:


Tekst szablonu
Parametr 1 Parametr 2
IRC PHP

a teraz wstawimy do tej tabelki zdjęcia:

{{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:

{{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:

{{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:

{{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: 21 września, 2019 r.

Wybrane, przydatne zmienne systemowe[1]:

Opis Nazwa Efekt
Daty i zmienne Wiki
Nr. aktualnego miesiąca {{CURRENTMONTH}} 09
Nazwa aktualnego miesiąca {{CURRENTMONTHNAME}} wrzesień
Dopełniacz nazwy
aktualnego miesiąca
{{CURRENTMONTHNAMEGEN}} września
Skrót aktualnego miesiąca {{CURRENTMONTHABBREV}} wrz
Dzień miesiąca {{CURRENTDAY}} 21
Dzień tygodnia {{CURRENTDOW}} 6
Nazwa dnia tygodnia {{CURRENTDAYNAME}} sobota
Bieżący tydzień roku {{CURRENTWEEK}} 38
Aktualny rok {{CURRENTYEAR}} 2019
Aktualny czas {{CURRENTTIME}} 07:28
Liczba stron w tym serwisie Wiki {{NUMBEROFARTICLES}} 5517
Liczba załadowanych plików {{NUMBEROFFILES}} 922
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:MediaWikiTest i Szablon:MediaWikiTest1.


Przypisy

Źródła[edytuj]