Pomoc:Podstrony, aspekty techniczne

Używania podston na Wikiźródłach edytuj

Zasady edytuj

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ść
  • 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 edytuj

Z 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 edytuj

Automatyczna nawigacja edytuj

Na górze podstrony tworzone są automatyczne linki prowadzące do (pod)strony bezpośrednio powyżej w hierarchii.

Linki przy pomocy ../ edytuj

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
  • /‏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]]
Daleka wyprawa/Księga I [[../Księga II/Część pierwsza]]
Daleka wyprawaKsięga III/Część pierwsza [[../../Księga II/Część pierwsza]]
Daleka wyprawaKsięga III/Część pierwsza/Rozdział 1 [[../../../Księga II/Część pierwsza]]
Daleka wyprawaKsięga III/Część pierwsza/Rozdał 1/Sekcja i [[../../../../Księga II/Część pierwsza]]
Daleka wyprawaKsięga III/Część pierwsza/Rozdał 1/Sekcja ii [[../../../../Księga II/Część pierwsza]]
Daleka wyprawaKsięga III/Część pierwsza/Rozdział 2 [[../../../Księga II/Część pierwsza]]
Daleka wyprawaKsięga III/Część pierwsza/Rozdał 1/Sekcja i [[../../../../Księga II/Część pierwsza]]
Daleka wyprawaKsięga III/Część pierwsza/Rozdał 1/Sekcja ii [[../../../../Księga II/Część pierwsza]]
Daleka wyprawaKsięga III/Część druga [[../../Księga II/Część pierwsza]]
Daleka wyprawaKsięga III/Częśćierwsza/Rozdział 1 [[../../../Księga II/Część pierwsza]]
Daleka wyprawaKsięga III/Częśćierwsza/Rozdał 1/Sekcja i [[../../../../Księga II/Część pierwsza]]
Daleka wyprawaKsięga III/Częśćierwsza/Rozdał 1/Sekcja ii [[../../../../Księga II/Część pierwsza]]
Daleka wyprawaKsięga III/Częśćierwsza/Rozdział 2 [[../../../Księga II/Część pierwsza]]
Daleka wyprawaKsięga III/Częśćierwsza/Rozdał 1/Sekcja i [[../../../../Księga II/Część pierwsza]]
Daleka wyprawaKsięga III/Częśćierwsza/Rozdał 1/Sekcja ii [[../../../../Księga II/Część pierwsza]]
Daleka wyprawa/Księga II [[/Część pierwsza]]
Daleka wyprawaKsięga III/Część pierwsza
Daleka wyprawaKsięga III/Część pierwsza/Rozdział 1 [[../]]
Daleka wyprawaKsięga III/Część pierwsza/Rozdał 1/Sekcja i [[../../]]
Daleka wyprawaKsięga III/Część pierwsza/Rozdał 1/Sekcja ii [[../../]]
Daleka wyprawaKsięga III/Część pierwsza/Rozdział 2 [[../]]
Daleka wyprawaKsięga III/Część pierwsza/Rozdał 1/Sekcja i [[../../]]
Daleka wyprawaKsięga III/Część pierwsza/Rozdał 1/Sekcja ii [[../../]]
Daleka wyprawaKsięga III/Część druga [[../Część pierwsza]]
Daleka wyprawaKsięga III/Częśćierwsza/Rozdział 1 [[../../Część pierwsza]]
Daleka wyprawaKsięga III/Częśćierwsza/Rozdał 1/Sekcja i [[../../../Część pierwsza]]
Daleka wyprawaKsięga III/Częśćierwsza/Rozdał 1/Sekcja ii [[../../../Część pierwsza]]
Daleka wyprawaKsięga III/Częśćierwsza/Rozdział 2 [[../../Część pierwsza]]
Daleka wyprawaKsięga III/Częśćierwsza/Rozdał 1/Sekcja i [[../../../Część pierwsza]]
Daleka wyprawaKsięga III/Częśćierwsza/Rozdał 1/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 ../.

Podanie parametru ‏nazwa strony‏: {{#rel2abs:‏ścieżka‏|‏nazwa strony‏}} umożliwia analizę innej strony niż ta, na której kod jest wywoływany.

Użycie magicznych słów edytuj

Definicje edytuj

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.



 

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 edytuj

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 edytuj

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 edytuj

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

Linkowanie między częściami utworu, włączanie do właściwej kategorii edytuj

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 {{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}} edytuj

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 {{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 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‏}}
  • 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‏}}
  • 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 edytuj

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ść → ø

Uwagi stylistyczne edytuj

Należy unikać pisania kodu w sposób trudny do zrozumienia.
Należy preferować konstrukcje bardziej uniwersalne.





  1. Dodatkowymi, mniej istotnymi zaletami jest pewne uproszczenie kodu i większa odporność na literówki.