Pomoc:Podstrony, aspekty techniczne
Szablon:Spis treści (pomoc)/uplinkSzablon:Clear
Używania podston na Wikiźródłach
Zasady
Używanie podstron na wiki zależy od ustawień i jest włączane na poziomie przestrzeni nazw (patrz: poradnik Przestrzeń nazw). Na polskich Wikiźródłach używane są:
- w przestrzeni głównej do tworzenia hierarchii dla niesamodzielnych części utworu
- w przestrzeni głównej tradycyjnie tworzymy również wariant prezentacji utworu jako podstronę /całość (patrz: poradnik Strony całości)
- w innych przestrzeniach do tworzenia opisów szablonów, modułów, do rezerwacji indeksów, do tworzenia eksperymentalnych (prywatnych) modułów i szablonów
Najważniejsza i charakterystyczna dla Wikiźródeł jest koncepcja samodzielności utworu (patrz: poradnik Samodzielność części tekstu).
Najważniejsze uwagi
Z punktu widzenia redagowania Wikiźródeł najważniejszy jest powyższy podrozdział Zasady oraz aspekt W praktyce.
Zalety podstron
- Główną zaletą tworzenia podstron w przestrzeni głównej jest utrzymywanie jasnej hierarchii w ramach części utworu, utrzymywanie wszystkich części razem.
- Tworzenie automatycznych linków ułatwiających nawigację między częściami.
- Umożliwia osobom z odpowiednimi uprawnieniami (movesubpages) – na polskich Wikiźródłach administratorzy – zmianę nazwy strony wraz z podstronami
Wady
- Zajmuje znak ukośnika
- Utrudnia korzystanie ze stron dyskusji
Nawigacja
Automatyczna nawigacja
Na górze podstrony tworzone są automatyczne linki prowadzące do (pod)strony bezpośrednio powyżej w hierarchii.
Linki przy pomocy ../
W obrębie podwójnych nawiasów kwadratowych (a więc w normalnej składni wiki linków) można używać w celu linkowania względnego (względem strony na której się kod znajduje) następujących symboli:
- ../ – dla poziomu powyżej
- /Szablon:ParametrPomoc – dla poziomu niżej o nazwie Szablon:ParametrPomoc
W niektórych sytuacja dodatkowy ukośnik na końcu powoduje wyświetlanie się jedynie ostatniego segmentu nazwy.
Bardziej rozbudowany przykład:
Samodzielnie konstrukcje typu /Rozdział I czy ../Księga I nie tworzą linków, mogą być w tym celu ujęte (jak to pokazano) w nawiasy kwadratowe. Samodzielnie ../ itp. są zwykłym tekstem. Nazwy stron można uzyskać przy pomocy {{#rel2abs:Szablon:ParametrPomoc}}, gdzie Szablon:ParametrPomoc to konstrukcja jak wyżej. Stosuje się wtedy:
- ./ – dla obecnego poziomu
- ../ – dla poziomu powyżej
- /Szablon:ParametrPomoc – dla poziomu niżej o nazwie Szablon:ParametrPomoc
Należy jeszcze dodać, że ewentualne ukośniki w nazwie strony (gdy są częścią nazwy ale nie tworzą hierarchii np. System operacyjny OS/2 ) mogą zaburzyć nawigację przy pomocy skrótów typu ../.
Użycie magicznych słów
Definicje
Magiczne słowa {{NAMESPACE}}, {{ROOTPAGENAME}}, {{BASEPAGENAME}}, {{SUBPAGENAME}}, {{PAGENAME}}, {{FULLPAGENAME}} mają nieco inną logikę, choć w pewnych wypadkach mogą mieć podobne działanie. Nie ujęte w nawiasy kwadratowe dają po prostu tekst, w połączeniu z nawiasami mogą być częścią funkcjonującego linku.
Jak widać powyżej konstrukcje oparte na ../ pozwalają na nawigację względem danej (pod)strony w górę lub dół hierarchii o określoną liczbę stopni. Podobnie działa jedynie {{BASEPAGENAME}}. Inne zwracają część nazwy (pod)strony i tak:
| Magiczne słowo | Opis działania |
|---|---|
| {{NAMESPACE}} | nazwę przestrzeni, w której się znajduje dana (pod)strona |
| {{PAGENAME}} | nazwę podstrony, ale bez nazwy przestrzeni, w której się znajduje dana (pod)strona W przypadku stron w przestrzeni głównej jest to zarazem pełna nazwa (pod)strony |
| {{FULLPAGENAME}} | nazwę podstrony, wraz z nazwą przestrzeni, w której się znajduje dana (pod)strona W przypadku stron w przestrzeni głównej jest to to samo co {{PAGENAME}}, zaś w przypadku ogólnym odpowiada konstrukcji: {{NAMESPACE}}:{{PAGENAME}} |
| {{ROOTPAGENAME}} | najgłębsza część nazwy (pod)strony, ale bez nazwy przestrzeni, w której się znajduje dana (pod)strona |
| {{BASEPAGENAME}} | nazwa (pod)strony, w hierarchii bezpośrednio „nad” daną podstroną, ale bez nazwy przestrzeni, w której się znajduje dana (pod)strona Można (zwłaszcza w przypadku innych przestrzeni niż przestrzeń główna zastosować konstrukcję {{NAMESPACE}}:{{BASEPAGENAME}} |
| {{SUBPAGENAME}} | nazwa ostatniego członu nazwy (pod)strony. Z reguły nie daje funkcjonalnego (a przynajmniej sensownego) linku. Może być stosowana na przykład do odróżniania stron /całość od innych. |
Szablon:CentrujStart
W przypadkach „zdegenerowanych” (nazwa dwu‑ lub jednoczłonowa) mamy:
Dla stron w przestrzeni głównej {{NAMESPACE}} zwraca pusty tekst, zaś {{PAGENAME}} = {{FULLPAGENAME}}. W innych przypadkach można to prześledzić na poniższym schemacie:
Przykłady
| Strona | {{NAMESPACE}} | {{PAGENAME}} | {{FULLPAGENAME}} | {{ROOTPAGENAME}} | {{BASEPAGENAME}} | {{SUBPAGENAME}} |
|---|---|---|---|---|---|---|
| Daleka wyprawa | Daleka wyprawa | Daleka wyprawa | Daleka wyprawa | Daleka wyprawa | Daleka wyprawa | |
| Daleka wyprawa/Księga I | Daleka wyprawa/Księga I | Daleka wyprawa/Księga I | Daleka wyprawa | Daleka wyprawa | Księga I | |
| Daleka wyprawa/Księga I/Część pierwsza | Daleka wyprawa/Księga I/Część pierwsza | Daleka wyprawa/Księga I/Część pierwsza | Daleka wyprawa | Daleka wyprawa/Księga I | Część pierwsza | |
| Pomoc:Xxx | Pomoc | Xxx | Pomoc:Xxx | Xxx | Xxx | Xxx |
| Pomoc:Xxx/Yyy | Pomoc | Xxx/Yyy | Pomoc:Xxx/Yyy | Xxx | Xxx | Yyy |
| Pomoc:Xxx/Yyy/Vvv | Pomoc | Xxx/Yyy/Vvv | Pomoc:Xxx/Yyy/Vvv | Xxx | Xxx/Yyy | Vvv |
| Pomoc:Xxx/Yyy/Vvv/Qqq | Pomoc | Xxx/Yyy/Vvv/Qqq | Pomoc:Xxx/Yyy/Vvv/Qqq | Xxx | Xxx/Yyy/Vvv | Qqq |
Analiza innej strony niż bieżąca
Wstawienie w słowach magicznych po dwukropku nazwy strony powoduje efektywnie analizę nazwy np. {{BASEPAGENAME:Pomoc:Xxx/Yyy/Vvv/Qqq}}→Xxx/Yyy/Vvv.
Można to również wykorzystać, by wyodrębnić na przykład przedostatni człon nazwy strony {{SUBPAGENAME:{{BASEPAGENAME}}}}. Ten kod wywołany na stronie Daleka wyprawa/Księga I/Część pierwsza da nam Księga I.
Użycie funkcji parsera #titleparts
Użycie funkcji parsera #titleparts umożliwia najpełniejszą kontrolę kosztem czytelności kodu.
Funkcja dzieli nazwę strony na segmenty kierując się ukośnikami zwraca fragment nazwy zgodnie ze schematem:
{{#titleparts:Szablon:ParametrPomoc|Szablon:ParametrPomoc|Szablon:ParametrPomoc}}
Jeśli Szablon:ParametrPomoc nie jest określona, to przyjmuje wartość domyślną 0, co jest interpretowane jako wszystkie wskazane. Jeśli Szablon:ParametrPomoc nie jest określony lub jest równy 0, to przyjmowana jest wartość 1.
Przykłady:
| Kod | Efekt |
|---|---|
| {{#titleparts: Szablon:F* }} | Pomoc:Xxx/Yyy/Vvv/Qqq |
| {{#titleparts: Szablon:F*/Yyy/Vvv/Qqq | 1 }} | Pomoc:XxxSzablon:TabSzablon:F*) |
| {{#titleparts: Szablon:F*/Vvv/Qqq | 2 }} | Pomoc:Xxx/Yyy |
| {{#titleparts: Pomoc:Xxx/Szablon:F*/Qqq | 2 | 2 }} | Yyy/Vvv |
| {{#titleparts: Pomoc:Xxx/Szablon:F* | | 2 }} | Yyy/Vvv/Qqq |
| {{#titleparts: Pomoc:Xxx/Yyy/Vvv/Qqq | | 5 }} |
Oba parametry numeryczne mogą mieć również wartość ujemną. Negatywna wartość Szablon:ParametrPomoc mówiąc obrazowo obcina segmenty końcowe. Negatywną wartość Szablon:ParametrPomoc należy interpretować jako wartość liczoną od końca Szablon:ParametrPomoc.
| Kod | Efekt |
|---|---|
| {{#titleparts: Szablon:F*/Qqq | -1 }} | Pomoc:Xxx/Yyy/VvvSzablon:TabSzablon:F*)}} |
| {{#titleparts: Pomoc:Xxx/Yyy/Vvv/Qqq | -4 }} | Szablon:TabSzablon:F* |
| {{#titleparts: Pomoc:Xxx/Yyy/Vvv/Qqq | -5 }} | Szablon:TabSzablon:F* |
| {{#titleparts: Pomoc:Xxx/Szablon:F*/Qqq | -1 | 2 }} | Yyy/VvvSzablon:TabSzablon:F* |
| {{#titleparts: Pomoc:Xxx/Yyy/Szablon:F*/Qqq | -1 | -2 }} | VvvSzablon:TabSzablon:F* |
| {{#titleparts: Szablon:F*/Vvv/Qqq | -2 }} | Pomoc:Xxx/YyySzablon:TabSzablon:F* |
| {{#titleparts: Pomoc:Xxx/Yyy/Szablon:F* | 0 | -2 }} | Vvv/QqqSzablon:TabSzablon:F* |
| {{#titleparts: Pomoc:Xxx/Yyy/Vvv/Szablon:F* | 0 | -1 }} {{#titleparts: Pomoc:Xxx/Yyy/Vvv/Szablon:F* | 1 | -1 }} |
QqqSzablon:TabSzablon:F* Szablon:F* |
By użyć tej konstrukcji tak, by analizowana była nazwa strony, na której funkcja #titleparts jest wywoływana należy użyć konstrukcji {{#titleparts:{{FULLPAGENAME}}...}}.
W praktyce
Linkowanie między częściami utworu, włączanie do właściwej kategorii
Jak wspomniano powyżej, podstrony służą do tworzenia hierarchii w ramach utworu. Nazwy utworów na Wikiźródłach zmieniają się stosunkowo często – np. dodawane jest w nawiasie nazwisko autora, rok wydania. Dla zachowania konsystencji po zmianie nazwy wskazane jest używanie względnych nazw (linków) w utworach podzielonych na podstrony:
- w szablonie Szablon:S/Szablon:S w polu |Tytuł= na przykład [[{{ROOTPAGENAME}}|Szablon:ParametrPomoc]]
- w szablonie Szablon:S/Szablon:S w polu |Poprzedni= {{ROOTPAGENAME}}/Szablon:ParametrPomoc lub gdy to możliwe szablonu zawierającego podobną funkcjonalność Szablon:S
- w szablonie Szablon:S/Szablon:S w polu |Następny= {{ROOTPAGENAME}}/Szablon:ParametrPomoc lub gdy to możliwe szablonu zawierającego podobną funkcjonalność Szablon:S
- w szablonie Szablon:S/Szablon:S w polu |inne= {{całość|{{ROOTPAGENAME}}/całość|epub=i}}
- w spisie treści tworzonym bezpośrednio na stronie głównej
- w kategorii np. [[Kategoria:{{ROOTPAGENAME}}|C03]] lub ewentualnie: [[Kategoria:{{ROOTPAGENAME}}|CSzablon:S]]
Zastosowanie w szablonie Szablon:S w polu |Rozdział= (gdy powinno być to pole wypełnione) {{SUBPAGENAME}} może również nieco ułatwić tworzenie kolejnych podstron.
Nie należy jednak wstawiać bezrefleksyjnie takich konstrukcji gdy nazwy nie powinny być trwale powiązane (na przykład nazwa pliku lub kategorii na commons), które podlegają zasadom niezależnym od Wikiźródeł a dodatkowo utrudniają korzystanie na przykład z automatycznie tworzonych galerii.
Szablon {{Tfi}}
Zaletą tworzenia odnośników względnych jest przede wszystkim możliwość zmiany nazwy stron wraz z podstronami.[1] W przypadku, gdy chcemy odczytać tytuł tekstu głównego, który jest tworzony na podstawie indeksu można użyć szablonu Szablon:S.
Gdy części tekstu są samodzielne (np. zbiory nowel) szablon ten może być użyty w szablonie Szablon:S/Szablon:S w polu Pochodzenie oraz dla dołączenia do właściwej kategorii.
Innym zastosowaniem będzie tworzenie odnośników w spisie treści tworzonym w tekście (w przestrzeni Strona:).
Inne przydatne konstrukcje
Przykłady
- test czy kod jest na stronie /całość
{{#ifeq:{{SUBPAGENAME}}|całość|Szablon:ParametrPomoc|Szablon:ParametrPomoc}} - test czy kod jest na stronie głównej czy podstronie lub głębiej na pod-pod...-stronie
{{#ifeq:{{ROOTPAGENAME}}|{{PAGENAME}}|Szablon:ParametrPomoc|Szablon:ParametrPomoc}} - test czy kod jest na stronie głównej lub podstronie czy też głębiej na pod-pod...-stronie
{{#ifeq:{{ROOTPAGENAME}}|{{BASEPAGENAME}}|Szablon:ParametrPomoc|Szablon:ParametrPomoc}} - test czy kod jest na stronie głównej, na stronie całości bezpośrednio pod stroną główną, czy na jakiejś podstronie
{{#switch: {{PAGENAME}} |{{ROOTPAGENAME}}=Szablon:ParametrPomoc|{{ROOTPAGENAME}}/całość=Szablon:ParametrPomoc |Szablon:ParametrPomoc}}
- test czy kod jest na stronie głównej lub na głównej stronie całości, czy na jakiejś podstronie
{{#switch: {{PAGENAME}} |{{ROOTPAGENAME}}|{{ROOTPAGENAME}}/całość=Szablon:ParametrPomoc |Szablon:ParametrPomoc}}- na przykład:
| okładka = {{#switch: {{PAGENAME}} |{{ROOTPAGENAME}}|{{ROOTPAGENAME}}/całość=Wiktor Hugo - Katedra Notre-Dame w Paryżu T.II.djvu | }}| strona z okładką = {{#switch: {{PAGENAME}} |{{ROOTPAGENAME}}|{{ROOTPAGENAME}}/całość=1 | }}
- na przykład:
- tworzenie stron całości dla tomów
{{całość|{{PAGENAME}}/całość|epub=i|{{lcfirst:{{SUBPAGENAME}}}}|Cały}}– umieszczony na stronie Szablon:ParametrPomoc w szablonie Szablon:S/Szablon:S w polu |inne= utworzy link do odpowiedniej strony całości z widocznym tekstem Szablon:F* a ten sam kod na stronie Szablon:ParametrPomoc oczywiście do strony całości trzeciego tomu z tekstem Szablon:F*.- lcfirst zamienia tu pierwszą literę na małą
- inne przydatne funkcje z tej grupy to ucfirst (pierwsza litera na wielką), lc (wszystkie litery na małe), uc (wszystkie litery na wielkie)
- sprawdzenie czy istnieje strona /całość
{{#ifexist:{{PAGENAME}}/całość|Szablon:ParametrPomoc|Szablon:ParametrPomoc}} - pierwsza i druga (lub tylko pierwsza, jeśli drugiej nie ma) część nazwy:
{{#titleparts:{{PAGENAME}}|2|1}}
- wyekstrahować pierwszą część nazwy (ROOTPAGENAME) i usunąć fragment w nawiasie (wraz z poprzedzającą spacją)
{{#invoke:string|replace|{{ROOTPAGENAME}}| %b()||plain=false}}np.: Szablon:TabSzablon:TabSzablon:TabZakopane (Hoesick, 1900) → Zakopane - zazwyczaj synonim powyższego:
{{#invoke:string|replace|{{ROOTPAGENAME}}| %(.*||plain=false}}np.: Szablon:TabSzablon:TabSzablon:TabZakopane (Hoesick, 1900) → Zakopane - pierwsza litera tytułu (strony głównej) {{padleft:|1|{{ROOTPAGENAME}}}}
- pierwsza litera nazwy rozdziału (ostatniego członu nazwy) {{padleft:|1|{{SUBPAGENAME}}}}
- część nazwy strony po ostatniej spacji
{{#invoke:string|replace|{{PAGENAME}}|.* ([^ ]*)$|%1|plain=false}}np.: Szablon:TabSzablon:TabSzablon:TabZakopane (Hoesick, 1900)/Rozdział XIII → XIII - druga, trzecia część nazwy strony po usunięciu tekstu przed pierwszą spacją:
{{#invoke:string|replace|{{#titleparts:{{PAGENAME}}|1|Szablon:ParametrPomoc}}|[^ ]* (.*)$|%1|plain=false}}np.: Szablon:TabSzablon:TabSzablon:TabZakopane (Hoesick, 1900)/Tom IV/Rozdział dwudziesty siódmy → IV{{#invoke:string|replace|{{#titleparts:{{PAGENAME}}|1|Szablon:ParametrPomoc}}|[^ ]* (.*)$|%1|plain=false}}np.: Szablon:TabSzablon:TabSzablon:TabZakopane (Hoesick, 1900)/Tom IV/Rozdział dwudziesty siódmy → dwudziesty siódmy
Bardziej skomplikowane przykłady
Dla hierarchii trzyrzędowej:
Kod: {{#ifeq:{{SUBPAGENAME}}|całość||{{#invoke:string|replace|{{#titleparts:{{PAGENAME}}|1|3}}|[^ ]* (.*)$|%1|plain=false}}}}
na stronie: Zakopane (Hoesick, 1900) → ø
na stronie: Zakopane (Hoesick, 1900)/Tom IV → ø
na stronie: Zakopane (Hoesick, 1900)/Tom IV/Rozdział dwudziesty siódmy → dwudziesty siódmy
na stronie: Zakopane (Hoesick, 1900)/całość → ø
na stronie: Zakopane (Hoesick, 1900)/Tom IV/całość → ø
Kod: {{#ifeq:{{SUBPAGENAME}}|całość||{{#invoke:string|replace|{{#titleparts:{{PAGENAME}}|1|2}}|[^ ]* (.*)$|%1|plain=false}}}}
na stronie: Zakopane (Hoesick, 1900) → ø
na stronie: Zakopane (Hoesick, 1900)/Tom IV → IV
na stronie: Zakopane (Hoesick, 1900)/Tom IV/Rozdział dwudziesty siódmy → IV
na stronie: Zakopane (Hoesick, 1900)/całość → ø
na stronie: Zakopane (Hoesick, 1900)/Tom IV/całość → IV
Dla hierarchii dwurzędowej:
Kod: {{#ifeq:{{SUBPAGENAME}}|całość||{{#invoke:string|replace|{{#titleparts:{{PAGENAME}}|1|2}}|[^ ]* (.*)$|%1|plain=false}}}}
na stronie: Zakopane (Hoesick, 1900) → ø
na stronie: Zakopane (Hoesick, 1900)/Rozdział 6 → 6
na stronie: Zakopane (Hoesick, 1900)/całość → ø
Osobne strony całości dla tomów Szablon:F
Uwagi stylistyczne
Należy unikać pisania kodu w sposób trudny do zrozumienia.
Należy preferować konstrukcje bardziej uniwersalne.
- ↑ Dodatkowymi, mniej istotnymi zaletami jest pewne uproszczenie kodu i większa odporność na literówki.