Spis treści
Szablony przestrzeni nazw
Czasem pożądane jest by każda strona w określonej przestrzeni nazw bazowała na wspólnym szkielecie. Na przykład, w przestrzeni nazw address
mógłbyś mieć już przygotowaną tabelę, w której wystarczy tylko wpisać dane. Można to w prosty sposób uzyskać przy użyciu tak zwanych „szablonów przestrzeni nazw”.
Podczas tworzenia strony DokuWiki sprawdza, czy istnieją pliki szablonów i pokazuje pasujący w oknie edytora. Szablony są zatem plikami txt i powinny zawierać znaczniki wiki.
Pliki szablonów
Mogą być użyte dwa rodzaje plików szablonu:
_template.txt
, który jest wykorzystywany w aktualnej przestrzeni nazw.__template.txt
(dwa wiodące podkreślenia), który działa jak zwykłe pliki_template.txt
poza tym, że używane są we wszystkich przestrzeniach nazw poniżej (są dziedziczone).
Jednym ze sposobów utworzenia szablonu jest
- użycie wiki by zapisać stronę z zawartością jakiej chcesz użyć w szablonie w wybranej przestrzeni nazw
- użycie FTP lub WebDAV do utworzenia kopii w tym samym folderze, a następnie
- użycie wiki by usunąć oryginalny plik. 1)
Składnia
Plik zawiera tekst i standardowe znaczniki wiki.
Wzorce wymiany
Wewnatrz pliku możesz używać również pewnych wzorców wymiany by uczynić szablon trochę bardziej dynamicznym.
@ID@ | pełny ID strony |
---|---|
@NS@ | przestrzeń nazw strony |
@PAGE@ | nazwa strony (ID bez przestrzeni nazw i z podkreśleniami zastąpionymi przez spacje) |
@!PAGE@ | to samo co powyżej ale z dużą pierwszą literą |
@!!PAGE@ | to samo co powyżej ale z dużą pierwszą literą we wszystkich wyrazach |
@!PAGE!@ | to samo co powyżej ale dużymi literami |
@FILE@ | nazwa strony (ID nez przestrzeni nazw, podkreślenia pozostawione) |
@!FILE@ | to samo co powyżej ale z dużą pierwszą literą |
@!FILE!@ | to samo co powyżej ale dużymi literami |
@USER@ | ID użytkownika, który utworzył stronę |
@NAME@ | nazwa użytkownika, który utworzył stronę |
@MAIL@ | adres email użytkownika, który utworzył stronę |
@DATE@ | data i czas rozpoczęcia sesji edycji |
Ponadto możesz użyć dowolnego symbolu zastępczego strftime by wstawić datę utworzenia strony w dowolnym preferowanym formacie. by wstawić w dokumencie znak %
z szablonu, musi on tam być zapisany podwójnie.
Edycja szablonów
Nie możesz zmieniać _template.txt
przez DokuWiki – tylko ktoś, kto może edytować pliki w folderach DokuWiki (zwykle administrator używając FTP lub WebDAV). Istnieją dwie sztuczki, aby to osiągnąć, do wyboru: jedna obejmująca utworzenie na początku dowiązania symboliczne i druga obejmująca zmiany w kodzie.
Szablony edytowane z użyciem linków symbolicznych
Wykorzystując ten sposób, możesz przechowywać szablony w odpowiedniej przestrzeni nazw. Tworząc symlink można uczynić go edytowalnym. Można również uczyniś szablon nieedytowalnym nie używając linku.
- Utwórz przestrzeń nazw nazwaną „szablony”, albo podobnie.
- W tej przestrzeni nazw utwórz stronę dla każdej przestrzeni nazw jaka powinna być dostępna.
- Wykonaj instrukcje powyżej, ale utwórz _template.txt jako twardy link 2) do właściwej strony w przestrzeni nazw szablony. Masz teraz szablon Teraz dysponujesz szablonem, który może być łatwo zmieniany przy użyciu interfejsu wiki.
Użyć też można innej metody, tworząctemplate.txt
będący linkiem symbolicznym do_template.txt
, jego własnej przestrzeni nazw
(cd /var/www/html/dokuwiki/data/pages/namespace/something ; ln -s _template.txt template.txt
).
W ten sposób można edytować szablon przechodząc do dowolnej strony w przestrzeni nazw a następnie zastępując nazwę strony przez 'template' w adresie URL.
(np.http://www.mywiki.somewhere/dokuwiki/doku.php?id=namespace:something:template
)
W ten sposób można użyć softlinków, chociaż trochę inaczej :)
Dla użycia softlinków webserwer wymaga ustawienia opcji FollowSymLinks na folderze (drzewie).
Szablony edytowalne dla wszystkich użytkowników
W ten sposób wszystkie twoje szablony będą dostępne do edycji przez wszystkich mających uprawnienie do zmiany.
- Zmień domyślną nazwę szablonu na „template.txt” (lub aaa_template.txt) i mniej więcej w linii 817
inc/common.php
3). - Teraz każdy użytkownik z uprawnieniami zmiany w przestrzeni nazw może tworzyć stronę nazwaną „template” w tej przestrzeni nazw, która będzie tam służyła za szablon.
- Uwaga: Ta metoda ma zaletę, że nowe szablony będą dostępne od ręki. To może nie nastąpić w przypadku innych metod (dodawanie plików lub linków symbolicznych ręcznie w folderach DokuWiki).
Wsparcie dla @GROUPS@
Może być interesujące uzyskanie wsparcia dla słowa kluczowego @GROUPS@
rozwijanego do listy grup użytkownika tworzącego stronę (by na przykład ustawić znaczniki na stronie domowej użytkownika). Implementuje go następująca łatka.
Index: dokuwiki-2009-02-14/inc/common.php =================================================================== --- dokuwiki-2009-02-14.orig/inc/common.php 2009-11-19 11:58:41.000000000 +0100 +++ dokuwiki-2009-02-14/inc/common.php 2010-01-05 10:17:35.000000000 +0100 @@ -840,6 +840,7 @@ '@USER@', '@NAME@', '@MAIL@', + '@GROUPS@', '@DATE@', ), array( @@ -855,6 +856,7 @@ $_SERVER['REMOTE_USER'], $INFO['userinfo']['name'], $INFO['userinfo']['mail'], + implode(" ", $INFO['userinfo']['grps']), $conf['dformat'], ), $tpl);
— Olivier Mehani 2010/01/05 10:19
Sugestie
- Być może ustawienie domyślnej nazwy szablonu w konfiguracji zapobiegnie nieporządkowi w common.php, i pozwoli uniknąć wyczyszczenia poprawek przy kolejnej aktualizacji programu. Można ograniczyć dostęp do tych plików wykorzystując ACL.
- Byłoby użyteczne posiadanie szablonów do określonych nazw stron. Na przykład __index.txt mógłby być szablonem dla wszystkich stron nazywanych „index” w każdej przestrzeni nazw. Byłby bezużyteczny z jednym podkreśleniem,gdyż może być tylko jedna strona z określoną nazwą w jednej przestrzeni nazw.
- By uniknąć konfliktu nazw, pomóc mógłby inny system nazewniczy szablonów: template.tpl dla aktualnej przestrzeni nazw, template.rtpl dla przestrzeni poniżej (szablon rekurencyjny)