Pomoc:Podstrony, aspekty techniczne
Uwaga! Strona jest w trakcie opracowywania. Niektóre informacje mogą być niepełne, a linki mogą kierować do nieistniejących stron. Strona w opracowaniu zgodnie z ustaleniami w Skryptorium. |
Używania podston na Wikiźródłach
edytujZasady
edytujUż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
edytujZ punktu widzenia redagowania Wikiźródeł najważniejszy jest powyższy podrozdział Zasady oraz aspekt W praktyce.
Zalety podstron
edytuj- 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
edytuj- Zajmuje znak ukośnika
- Utrudnia korzystanie ze stron dyskusji
Nawigacja
edytujAutomatyczna nawigacja
edytujNa górze podstrony tworzone są automatyczne linki prowadzące do (pod)strony bezpośrednio powyżej w hierarchii.
Linki przy pomocy ../
edytujW 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
- / foo – dla poziomu niżej o nazwie foo
W niektórych sytuacja dodatkowy ukośnik na końcu powoduje wyświetlanie się jedynie ostatniego segmentu nazwy.
Bardziej rozbudowany przykład:
By utworzyć na stronie poniżej link do strony Daleka wyprawa/Księga II/Część pierwsza | Można użyć poniższego kodu |
---|---|
Wyprawa | [[/Księga II/Część pierwsza]] |
„ /Księga I | [[../Księga II/Część pierwsza]] |
„„ /Część pierwsza | [[../../Księga II/Część pierwsza]] |
„„„ /Rozdział 1 | [[../../../Księga II/Część pierwsza]] |
„„„ „ /Sekcja i | [[../../../../Księga II/Część pierwsza]] |
„„„ „ /Sekcja ii | [[../../../../Księga II/Część pierwsza]] |
„„„ /Rozdział 2 | [[../../../Księga II/Część pierwsza]] |
„„„ „ /Sekcja i | [[../../../../Księga II/Część pierwsza]] |
„„„ „ /Sekcja ii | [[../../../../Księga II/Część pierwsza]] |
„„ /Część druga | [[../../Księga II/Część pierwsza]] |
„„„ /Rozdział 1 | [[../../../Księga II/Część pierwsza]] |
„„„ „ /Sekcja i | [[../../../../Księga II/Część pierwsza]] |
„„„ „ /Sekcja ii | [[../../../../Księga II/Część pierwsza]] |
„„„ /Rozdział 2 | [[../../../Księga II/Część pierwsza]] |
„„„ „ /Sekcja i | [[../../../../Księga II/Część pierwsza]] |
„„„ „ /Sekcja ii | [[../../../../Księga II/Część pierwsza]] |
„ /Księga II | [[/Część pierwsza]] |
„„ /Część pierwsza | — |
„„„ /Rozdział 1 | [[../]] |
„„„ „ /Sekcja i | [[../../]] |
„„„ „ /Sekcja ii | [[../../]] |
„„„ /Rozdział 2 | [[../]] |
„„„ „ /Sekcja i | [[../../]] |
„„„ „ /Sekcja ii | [[../../]] |
„„ /Część druga | [[../Część pierwsza]] |
„„„ /Rozdział 1 | [[../../Część pierwsza]] |
„„„ „ /Sekcja i | [[../../../Część pierwsza]] |
„„„ „ /Sekcja ii | [[../../../Część pierwsza]] |
„„„ /Rozdział 2 | [[../../Część pierwsza]] |
„„„ „ /Sekcja i | [[../../../Część pierwsza]] |
„„„ „ /Sekcja ii | [[../../../Część pierwsza]] |
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: ścieżka }}, gdzie ścieżka to konstrukcja jak wyżej. Stosuje się wtedy:
- ./ – dla obecnego poziomu
- ../ – dla poziomu powyżej
- / foo – dla poziomu niżej o nazwie foo
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
edytujDefinicje
edytujMagiczne 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. |
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
edytujStrona | {{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
edytujWstawienie 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
edytujUż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: nazwa strony | liczba segmentów | pierwszy segment }}
Jeśli liczba segmentów nie jest określona, to przyjmuje wartość domyślną 0, co jest interpretowane jako wszystkie wskazane. Jeśli pierwszy segment nie jest określony lub jest równy 0, to przyjmowana jest wartość 1.
Przykłady:
Kod | Efekt |
---|---|
{{#titleparts: Pomoc:Xxx/Yyy/Vvv/Qqq }} | Pomoc:Xxx/Yyy/Vvv/Qqq |
{{#titleparts: Pomoc:Xxx/Yyy/Vvv/Qqq | 1 }} | Pomoc:Xxx (dla przestrzeni głównej podobnie do {{ROOTPAGENAME}} dla innych przestrzeni {{NAMESPACE}}:{{ROOTPAGENAME}}) |
{{#titleparts: Pomoc:Xxx/Yyy/Vvv/Qqq | 2 }} | Pomoc:Xxx/Yyy |
{{#titleparts: Pomoc:Xxx/Yyy/Vvv/Qqq | 2 | 2 }} | Yyy/Vvv |
{{#titleparts: Pomoc:Xxx/Yyy/Vvv/Qqq | | 2 }} | Yyy/Vvv/Qqq |
{{#titleparts: Pomoc:Xxx/Yyy/Vvv/Qqq | | 5 }} |
Oba parametry numeryczne mogą mieć również wartość ujemną. Negatywna wartość liczba segmentów mówiąc obrazowo obcina segmenty końcowe. Negatywną wartość pierwszy segment należy interpretować jako wartość liczoną od końca nazwa strony .
Kod | Efekt |
---|---|
{{#titleparts: Pomoc:Xxx/Yyy/Vvv/Qqq | -1 }} | Pomoc:Xxx/Yyy/Vvv (zwraca nazwę strony bezpośrednio nad daną stroną, dla przestrzeni głównej podobnie do {{BASEPAGENAME}} dla innych przestrzeni {{NAMESPACE}}:{{BASEPAGENAME}})}} |
{{#titleparts: Pomoc:Xxx/Yyy/Vvv/Qqq | -4 }} | obcina wszystkie cztery segmenty z wyniku. |
{{#titleparts: Pomoc:Xxx/Yyy/Vvv/Qqq | -5 }} | obcina wszystkie segmenty z wyniku. |
{{#titleparts: Pomoc:Xxx/Yyy/Vvv/Qqq | -1 | 2 }} | Yyy/Vvv (obcina jeden segment od prawej, potem zwraca od drugiego segmentu) |
{{#titleparts: Pomoc:Xxx/Yyy/Vvv/Qqq | -1 | -2 }} | Vvv (zaczyna od drugiego segmentu od prawej, obcina jeden segment od prawej) |
{{#titleparts: Pomoc:Xxx/Yyy/Vvv/Qqq | -2 }} | Pomoc:Xxx/Yyy (zaczyna od początku, obcina dwa segmenty od prawej) |
{{#titleparts: Pomoc:Xxx/Yyy/Vvv/Qqq | 0 | -2 }} | Vvv/Qqq (zaczyna od drugiego segmentu od prawej, zwraca wszystkie segmenty) |
{{#titleparts: Pomoc:Xxx/Yyy/Vvv/Qqq | 0 | -1 }} {{#titleparts: Pomoc:Xxx/Yyy/Vvv/Qqq | 1 | -1 }} |
Qqq (zwraca ostatni segment, podobnie do {{SUBPAGENAME}}) jednak dla {{#titleparts: Pomoc:Xxx}} zwraca Pomoc:Xxx |
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
edytujLinkowanie między częściami utworu, włączanie do właściwej kategorii
edytujJak 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 {{Dane tekstu}}/{{Dane tekstu2}} w polu |Tytuł= na przykład [[{{ROOTPAGENAME}}| Ciekawa książka ]]
- w szablonie {{Dane tekstu}}/{{Dane tekstu2}} w polu |Poprzedni= {{ROOTPAGENAME}}/ Rozdział II lub gdy to możliwe szablonu zawierającego podobną funkcjonalność {{PoprzedniU}}
- w szablonie {{Dane tekstu}}/{{Dane tekstu2}} w polu |Następny= {{ROOTPAGENAME}}/ Rozdział IV lub gdy to możliwe szablonu zawierającego podobną funkcjonalność {{NastępnyU}}
- w szablonie {{Dane tekstu}}/{{Dane tekstu2}} 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}}|C{{BieżącyU|2}}]]
Zastosowanie w szablonie {{Dane tekstu}} 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}}
edytujZaletą 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 {{Tfi}}.
Gdy części tekstu są samodzielne (np. zbiory nowel) szablon ten może być użyty w szablonie {{Dane tekstu}}/{{Dane tekstu2}} 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
edytujPrzykłady
edytuj- test czy kod jest na stronie /całość
{{#ifeq:{{SUBPAGENAME}}|całość| pierwsza możliwość | druga możliwość }}
- test czy kod jest na stronie głównej czy podstronie lub głębiej na pod-pod...-stronie
{{#ifeq:{{ROOTPAGENAME}}|{{PAGENAME}}| strona główna | jakaś podstrona }}
- test czy kod jest na stronie głównej lub podstronie czy też głębiej na pod-pod...-stronie
{{#ifeq:{{ROOTPAGENAME}}|{{BASEPAGENAME}}| strona główna lub podstrona | głębszy poziom }}
- 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}}= strona główna |{{ROOTPAGENAME}}/całość= strona całości bezpośrednio pod stroną główną | inne przypadki }}
- 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ść= strona główna lub całości bezpośrednio pod stroną główną | inne przypadki }}
- 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 Ciekawa książka/Tom I w szablonie {{Dane tekstu}}/{{Dane tekstu2}} w polu |inne= utworzy link do odpowiedniej strony całości z widocznym tekstem Cały tom I a ten sam kod na stronie Ciekawa książka/Tom III oczywiście do strony całości trzeciego tomu z tekstem Cały tom III.- 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ść| istnieje | nie istnieje }}
- 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.: Zakopane (Hoesick, 1900) → Zakopane - zazwyczaj synonim powyższego:
{{#invoke:string|replace|{{ROOTPAGENAME}}| %(.*||plain=false}}
np.: Zakopane (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.: Zakopane (Hoesick, 1900)/Rozdział XIII → XIII - druga, trzecia część nazwy strony po usunięciu tekstu przed pierwszą spacją:
{{#invoke:string|replace|{{#titleparts:{{PAGENAME}}|1| 2 }}|[^ ]* (.*)$|%1|plain=false}}
np.: Zakopane (Hoesick, 1900)/Tom IV/Rozdział dwudziesty siódmy → IV{{#invoke:string|replace|{{#titleparts:{{PAGENAME}}|1| 3 }}|[^ ]* (.*)$|%1|plain=false}}
np.: Zakopane (Hoesick, 1900)/Tom IV/Rozdział dwudziesty siódmy → dwudziesty siódmy
Bardziej skomplikowane przykłady
edytujDla 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
| inne={{#switch:{{PAGENAME}} <!-- -->|{{ROOTPAGENAME}}/całość={{epub}} <!-- -->|{{ROOTPAGENAME}}/{{SUBPAGENAME}}={{całość|{{PAGENAME}}/całość|epub=nie|{{lcfirst:{{SUBPAGENAME}}}}|Cały}}<br>{{całość|{{ROOTPAGENAME}}/całość|epub=i}} <!-- -->|{{BASEPAGENAME}}/całość={{epub}}<br>{{całość|{{ROOTPAGENAME}}/całość|epub=i}} <!-- -->|{{całość|{{ROOTPAGENAME}}/całość|epub=i}} }}
Uwagi stylistyczne
edytujNależ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.