MediaWiki w obrazkach/Szablony

Z Wikibooks, biblioteki wolnych podręczników.

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.

Spis treści

[edytuj] Wstawianie szablonów

[edytuj] Podstawowy wikikod

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).

[edytuj] Tworzenie trwałego powiązania z szablonem

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.

[edytuj] Jednokrotne wstawianie szablonu (subst:)

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.

[edytuj] Pokazywanie kodu szablonu (msgnw:)

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.

[edytuj] Tworzenie szablonów z parametrami

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.

Przykład:

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ę potestujemy 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 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}}}

[edytuj] Zmienne systemowe MediaWiki

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: 15 listopada, 2009 r.

Wybrane, przydatne zmienne systemowe[1]:

Opis Nazwa Efekt
Daty i zmienne Wiki
Nr. aktualnego miesiąca {{CURRENTMONTH}} 11
Nazwa aktualnego miesiąca {{CURRENTMONTHNAME}} listopad
Dopełniacz nazwy
aktualnego miesiąca
{{CURRENTMONTHNAMEGEN}} listopada
Skrót aktualnego miesiąca {{CURRENTMONTHABBREV}} lis
Dzień miesiąca {{CURRENTDAY}} 15
Dzień tygodnia {{CURRENTDOW}} 0
Nazwa dnia tygodnia {{CURRENTDAYNAME}} niedziela
Bieżący tydzień roku {{CURRENTWEEK}} 46
Aktualny rok {{CURRENTYEAR}} 2009
Aktualny czas {{CURRENTTIME}} 09:43
Liczba stron w tym serwisie Wiki {{NUMBEROFARTICLES}} 4721
Liczba załadowanych plików {{NUMBEROFFILES}} 693
Zmienne serwerowe
Nazwa serwisu {{SITENAME}} Wikibooks
Nazwa serwera {{SERVERNAME}} pl.wikibooks.org
Adres serwera {{SERVER}} http://pl.wikibooks.org
Związane ze stroną
Nazwa strony {{PAGENAME}} MediaWiki w obrazkach/Szablony
Nazwa przestrzeni nazw {{NAMESPACE}}
Numer ostatniej edycji {{REVISIONID}} 70871

[edytuj] Szablony i kategorie czyli "noinclude"

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.


[edytuj] Źródła