WvdS.DokuWiki.Flat Template
Predloga: flat · Različica: 1.2.0 (razširitve WvdS) · Imenski prostor: lib/tpl/flat/ · Izvirnik: beemoon contact@beemoon.fr · Razširitve: Wolfgang van der Stille Wolfgang.van.der.Stille@gmail.com (The White Knight Labs) · Licenca: GPL 2
Predloga Flat v naši različici: razširitve, ki gradijo na tujem izvirniku, in za kaj se tu še uporablja.
Opredelitev
Predloga Flat je minimalistična, odzivna predloga za DokuWiki z obsežnimi razširitvami WvdS za večjezičnost, preklopnik jezika, nastavljive stranske vrstice, sistem logotipa z izrisom base64, postavitev, prilagojeno mobilnim napravam, in tesno povezavo z vtičniki WvdS.
Spremembe glede na izvirnik
| Komponenta | Izvirnik | WvdS |
|---|---|---|
| customFlat.css | 3,4 KB (176 vrstic) | 52 KB (~2000 vrstic) |
| main.php | 2,9 KB (69 vrstic) | 13 KB (~240 vrstic) |
| Pisave | Google Fonts CDN | sistemske pisave (brez povezave) |
| jQuery | Google CDN | krajevno (jquery.min.js) |
| Nove datoteke | - | lang_helper.php, widgets.php, accessibility.css, logo.css, color-palette.css |
Primeri uporabe
- Večjezična dokumentacija – samodejni preklopnik jezika in zaznavanje jezika
- Zbirke znanja – pregledna navigacija z zložljivimi meniji
- Mobilna uporaba – kompaktna glava (96px) z menijem »hamburger«
- Projektna dokumentacija – hierarhična zgradba stranske vrstice
- Podjetniški wikiji – profesionalna, prilagodljiva podoba
- Boljša zmogljivost – slike, vdelane kot base64, krajevne pisave
Funkcije
Razširitve WvdS
| Funkcija | Opis |
|---|---|
| Preklopnik jezika | vgrajena menjava jezika z ikonami zastav |
| Samodejna preusmeritev | preusmeritev glede na jezik brskalnika |
| Dvojna stranska vrstica | nastavljiva zgornja in spodnja stranska vrstica |
| Zložljivi meni | navigacija, ki jo je mogoče zložiti |
| Večjezična besedila | podpora za obliko de:X|en:Y |
| Sistem logotipa | prilagodljiv logotip z izrisom base64 prek wkimage |
| Stanje kazala | stanje kazala vsebine se shrani v piškotek |
| Povezava z vtičniki | tesno sodelovanje z vtičniki WvdS |
Prilagoditev za mobilne naprave (NOVO)
| Funkcija | Opis |
|---|---|
| Kompaktna glava | 96px (tablica) / 80px (pametni telefon) z enakimi razmiki |
| Meni »hamburger« | prekrivni pas namesto zamika za 300px, zapre se ob kliku na sidro |
| Pomik do sidra | odmik za glavo prepreči, da bi sidro pristalo pod glavo |
| Preprečitev temnega načina | color-scheme: only light vsili svetlo podobo |
| Prijazno za dotik | dotična območja gumbov velikosti 44×44px |
Razširitve oblikovanja (NOVO)
| Področje | Opis |
|---|---|
| Prijava/registracija | kartica z oranžnim poudarkom KRITIS |
| Skrbniški meni | posodobljena podoba z različico v slogu konzole |
| Splošne nastavitve | boljša berljivost, barvna shema KRITIS |
| Vtičnik Discussion | komentarji v slogu Apple/Microsoft |
| Kazalo vsebine | pripeto, s sodobno senco |
| Noga | temna pisava na svetli podlagi |
Nastavitve
Preklopnik jezika
| Nastavitev | Vrsta | Privzeto | Opis |
|---|---|---|---|
enableLangSwitcher | vklop/izklop | izklop | vklopi preklopnik jezika |
languages | besedilo | de,en | razpoložljivi jeziki (ločeni z vejico) |
langPosition | število | 0 | položaj jezika v imenskem prostoru (0 = prva raven) |
defaultLanguage | besedilo | de | privzeti jezik, kadar ni drugega |
enableAutoRedirect je odstranjen: samodejne preusmeritve zdaj upravlja vtičnik WvdS.DokuWiki.Cond Plugin.
Na svojih straneh uporabite {{wk:redirect target="{lang}:start"}}.
Stranska vrstica
| Nastavitev | Vrsta | Privzeto | Opis |
|---|---|---|---|
topSidebar | besedilo | sidebar | stran zgornje stranske vrstice |
bottomSidebar | besedilo | sidebar1 | stran spodnje stranske vrstice |
topSidebarTitle | besedilo | (prazno) | naslov zgornje stranske vrstice |
bottomSidebarTitle | besedilo | (prazno) | naslov spodnje stranske vrstice |
adminSidebarTitle | besedilo | (prazno) | naslov skrbniške stranske vrstice |
enableAccordion | vklop/izklop | izklop | zlaganje stranske vrstice |
Postavitev (NOVO)
| Nastavitev | Vrsta | Privzeto | Opis |
|---|---|---|---|
siteWidth | število | 75 | širina strani |
siteWidthUnit | izbira | % | enota (%, px, em, rem) |
sidebarWidth | število | 300 | širina stranske vrstice |
sidebarWidthUnit | izbira | px | enota (px, %, em, rem) |
Logotip in naslov
| Nastavitev | Vrsta | Privzeto | Opis |
|---|---|---|---|
showTitle | vklop/izklop | vklop | prikaže naslov wikija |
showLogo | vklop/izklop | izklop | prikaže logotip |
logoSource | izbira | template | vir logotipa: template, wiki, url |
logoPath | besedilo | (prazno) | pot glede na vir (ime datoteke, wiki:pot ali URL) |
logoContainerSize | število | 300 | velikost vsebnika v slikovnih pikah (kvadrat) |
logoFit | izbira | contain | prilagoditev slike: contain, cover, fill, scale-down, none |
logoPosition | izbira | center | položaj v vsebniku: center, top, bottom itd. |
logoMaxWidth | število | 300 | največja širina pri pomanjšanju za optimizacijo slike |
logoQuality | število | 90 | kakovost slike (10–100) |
Kazalo vsebine
| Nastavitev | Vrsta | Privzeto | Opis |
|---|---|---|---|
| piškotek kazala | samodejno | - | stanje (razprto/zloženo) se shrani v piškotek dw_toc_state (1 leto) |
Noga
| Nastavitev | Vrsta | Privzeto | Opis |
|---|---|---|---|
footerText | besedilo | (prazno) | besedilo v nogi (podpira obliko de:X|en:Y) |
Podrobnosti mobilne postavitve
Mere glave
Tablica (< 1200px): ├── višina glave: 96px ├── logotip max-height: 60px ├── gumbi: 44×44px (hamburger levo, zobnik desno) ├── razmik gumbov: 26px zgoraj/spodaj (navpično sredinsko) └── scroll-padding-top: 110px Pametni telefon (< 480px): ├── višina glave: 80px ├── logotip max-height: 50px ├── scroll-padding-top: 95px └── navigacija: manjša pisava
Vedenje menija »hamburger«
1. Zaprto (privzeto): └── vidna je le vrstica glave (logotip + gumbi) 2. Odprto (po dotiku gumba hamburger): ├── #secondary se razširi na 100vh ├── prikaže se navigacija (navpični seznam) ├── prikažejo se gradniki stranske vrstice └── drsnik, če vsebina ne gre na zaslon 3. Zapiranje: ├── dotik gumba hamburger └── dotik povezave na sidro (samodejno)
Preprečitev temnega načina
Predloga na vseh napravah vsili svetli način:
/* Meta oznaka v <head> */ <meta name="color-scheme" content="only light" /> /* Deklaracija CSS */ :root, html, body, * { color-scheme: only light !important; }
Primeri
Primer 1: večjezične nastavitve
Zahteva: wiki v nemščini, angleščini in slovenščini.
conf/local.php:
$conf['tpl']['flat']['enableLangSwitcher'] = 1; $conf['tpl']['flat']['languages'] = 'de,en,sl'; $conf['tpl']['flat']['langPosition'] = 0; $conf['tpl']['flat']['defaultLanguage'] = 'de';
Rezultat:
- Preklopnik jezika ponudi DE/EN/SL.
- Jezik se prepozna iz
de:seite,en:page,sl:stran. - Samodejno preusmeritev na ustrezni jezik zagotovi vtičnik
wvdscond(glejte opombo pri nastavitvah).
Primer 2: zgradba stranske vrstice
Zahteva: glavni meni zgoraj, zložljiva navigacija spodaj.
Zgradba datotek:
data/pages/
├── sidebar.txt → glavni meni
├── sidebar1.txt → prazna datoteka (nadomestek)
├── de/
│ └── sidebar1.txt → {{wk:snippet>go_back}}
│ {{wk:acmenu dynamic="2"}}
├── de/crypto/
│ └── sidebar1.txt → {{wk:snippet>go_back}}
│ {{wk:acmenu dynamic="1"}}
└── en/
└── sidebar1.txt → {{wk:snippet>go_back}}
{{wk:acmenu dynamic="2"}}
sidebar.txt (koren):
~~NOCACHE~~
{{wk:snippet>main_menu}}
de/sidebar1.txt:
~~NOCACHE~~
{{wk:snippet>go_back}}
{{wk:acmenu dynamic="2"}}
Primer 3: večjezična noga
Zahteva: besedilo noge v različnih jezikih.
Nastavitev:
footerText = de:© 2025 Meine Firma - Alle Rechte vorbehalten|en:© 2025 My Company - All rights reserved|sl:© 2025 Moje podjetje - Vse pravice pridržane
Rezultat:
- Nemške strani: »© 2025 Meine Firma - Alle Rechte vorbehalten«
- Angleške strani: »© 2025 My Company - All rights reserved«
- Slovenske strani: »© 2025 Moje podjetje - Vse pravice pridržane«
Primer 4: nastavitev logotipa
Zahteva: logotip iz predstavnostnih datotek wikija z optimalnim prikazom.
Skrbniške nastavitve:
showLogo = 1 logoSource = wiki logoPath = wiki:logo.png logoContainerSize = 300 logoFit = contain logoPosition = center logoMaxWidth = 300 logoQuality = 90
Rezultat:
- Logotip se izriše kot slika, vdelana v obliki base64 (prek wkimage).
- Za logotip ni dodatne zahteve HTTP.
- Slika se pomanjša na največ 300px in postavi na sredino vsebnika 300x300px.
object-fit: containzagotovi, da je vidna vsa slika.
Druga možnost: logotip iz mape predloge:
showLogo = 1 logoSource = template logoPath = logo.png // je v lib/tpl/flat/images/logo.png
Druga možnost: zunanji logotip:
showLogo = 1 logoSource = url logoPath = https://example.com/logo.png
Delovanje
Logika preklopnika jezika
1. Analiza imenskega prostora └── izlušči jezik na položaju langPosition └── primer: de:crypto:openssl → "de" 2. Menjava jezika └── zamenja jezikovni del v imenskem prostoru └── de:crypto:openssl → en:crypto:openssl 3. Preverjanje strani └── preveri, ali ciljna stran obstaja └── če ne: preusmeritev na začetno stran jezika
Iskanje stranske vrstice
1. V imenskem prostoru └── išče sidebar/sidebar1 v trenutnem imenskem prostoru 2. Nadrejeni imenski prostor └── išče navzgor po nadrejenih imenskih prostorih 3. Koren kot zadnja možnost └── uporabi korensko stransko vrstico, če ne najde ničesar
Samodejna preusmeritev
1. Zazna jezik brskalnika └── razčleni glavo Accept-Language 2. Je jezik na voljo? ├── da: preusmeritev v imenski prostor jezika └── ne: preusmeritev na defaultLanguage
Povezava z vtičniki WvdS
Predloga tesno sodeluje z vtičniki WvdS:
wki18n (internacionalizacija)
// V datotekah predloge
$helper = plugin_load('helper', 'wki18n');
$lang = $helper->detectLanguage();
$text = $helper->get('menu_home');
Uporaba:
- lokalizacija besedil v nogi
- prevajanje napisov v meniju
- razčlenjevanje vrednosti nastavitev
wvdslang je nadomestil wki18n.
Preusmeritve zdaj obravnava wvdscond.
wksnippet
sidebar.txt:
{{wk:snippet>main_menu}}
Uporaba:
- menijske zgradbe za večkratno uporabo
- izseki HTML v stranskih vrsticah
- skupni elementi v več imenskih prostorih
wkacmenu
sidebar1.txt:
{{wk:acmenu dynamic="2"}}
Uporaba:
- zložljiva navigacija v stranskih vrsticah
- dinamično prepoznavanje imenskega prostora
- samodejno odpiranje in zapiranje
Prilagoditve CSS
Razredi, ki jih je mogoče preglasiti
| Razred | Opis |
|---|---|
.dokuwiki | glavni vsebnik |
.wrapper | ovoj vsebine |
#secondary | vsebnik stranske vrstice (na mobilnih napravah glava) |
.sidebar-offcanvas | gradniki stranske vrstice |
.toggle-sidebar | gumb hamburger |
.toggle-navigation | gumb z zobnikom |
.lang-switcher | vsebnik preklopnika jezika |
.logo-container | ovoj logotipa |
.site-info | območje noge |
Lastni slogi
Za prilagoditve ustvarite conf/userstyle.css:
/* Prilagoditev preklopnika jezika */ .lang-switcher { position: fixed; top: 10px; right: 10px; } /* Širina stranske vrstice */ .sidebar { width: 280px; } /* Oblikovanje noge */ .footer { background: #333; color: #fff; padding: 20px; }
Obravnava napak
| Primer | Vedenje |
|---|---|
| jezik ni nastavljen | prikaže vse jezike iz languages |
| ciljna stran ne obstaja | preusmeritev na začetno stran jezika |
| stranske vrstice ni | uporabi korensko stransko vrstico |
| vtičnik ni nameščen | predloga deluje brez razširitev |
| predpomnilnik CSS | po posodobitvi: ?purge=true ali Skrbništvo → purgecss |
Dobre prakse
- v vseh stranskih vrsticah z dinamično vsebino
- langPosition nastavite pravilno glede na zgradbo imenskih prostorov
- sidebar1.txt ustvarite v vsakem jezikovnem imenskem prostoru
- wksnippet uporabljajte za menijske elemente, ki se ponavljajo
- Nadomestni jezik vedno nastavite
- Predpomnilnik CSS izpraznite po posodobitvi predloge (
?purge=true)
Opombe k različicam
| Različica | Datum | Spremembe |
|---|---|---|
| 1.2.0 | 2026-01-28 | kompaktna mobilna glava (96px/80px), preprečitev temnega načina, oblikovanje prijave, popravek pomika do sidra |
| 1.1.0 | 2026-01-08 | sistem logotipa s povezavo z wkimage, piškotek za stanje kazala |
| 1.0.0 | 2025-01-06 | dodane razširitve WvdS |
Glejte tudi
- WvdS Internationalization (i18n) – internacionalizacija (prevodi)
- WvdS.DokuWiki.Cond Plugin – pogojna vsebina in preusmeritve
- Snippet – izseki HTML za večkratno uporabo
- wkacmenu – zložljivi meni
Tehnična referenca
Zgradba datotek (WvdS v primerjavi z izvirnikom)
lib/tpl/flat/
├── main.php → glavna predloga (razširjena: jezikovna preusmeritev, CSS postavitve, mobilna glava)
├── detail.php → pogled podrobnosti predstavnostne datoteke
├── mediamanager.php → upravitelj predstavnostnih datotek
├── lang_helper.php → [NOVO] prevodi glede na imenski prostor
├── widgets.php → [NOVO] gradnika Recent Pages/Comments
├── conf/
│ ├── default.php → privzete nastavitve (razširjene)
│ └── metadata.php → metapodatki nastavitev (razširjeni)
├── lang/
│ ├── de/ → nemški prevodi (razširjeni)
│ ├── en/ → angleški prevodi (razširjeni)
│ ├── sl/ → [NOVO] slovenski prevodi
│ ├── it/ → [NOVO] italijanski prevodi
│ └── hr/ → [NOVO] hrvaški prevodi
├── css/
│ ├── customFlat.css → glavni slogi (52KB, ~2000 vrstic)
│ ├── accessibility.css → [NOVO] dostopnost, preprečitev temnega načina
│ ├── logo.css → [NOVO] slogi logotipa
│ └── color-palette.css → [NOVO] barvna paleta KRITIS
├── assets/js/
│ └── jquery.min.js → [NOVO] krajevni jQuery (brez povezave)
└── images/
└── logo.png → logotip predloge
Področja v customFlat.css
| Vrstice | Področje |
|---|---|
| 1-108 | osnovni slogi (stran, povezave, orodja strani) |
| 109-254 | Splošne nastavitve (barve KRITIS) |
| 255-454 | pripeto kazalo vsebine |
| 455-605 | preklopnik jezika, acmenu, gradniki |
| 606-1141 | oblikovanje vtičnika Discussion |
| 1142-1591 | skrbniški meni, slogi vstopne strani |
| 1592-1599 | preglasitev row-offcanvas (mobilno) |
| 1601-1613 | odmik pri pomiku do sidra |
| 1615-1690 | popravki kontrasta na mobilnih napravah (stranska vrstica, noga, gumbi) |
| 1692-1717 | velikost logotipa na mobilnih napravah |
| 1719-1729 | preprečitev temnega načina |
| 1731-1787 | skrivanje izbirnika jezika na mobilnih napravah |
| 1788-2010 | oblikovanje prijave, registracije in ponovnega pošiljanja gesla |
Funkcije predloge
| Funkcija | Opis |
|---|---|
tpl_getLang() | vrne trenutni jezik |
tpl_getLangNs() | prevod glede na imenski prostor |
tpl_parseMultilang() | razčleni obliko de:X|en:Y |
tpl_renderLogo() | izriše logotip s podporo za base64 |
tpl_langSwitcher() | izriše HTML preklopnika jezika |
tpl_sidebar($which) | izriše navedeno stransko vrstico |
tpl_footer() | izriše nogo z večjezičnim besedilom |
Točke za priklop (hooks)
| Točka | Opis |
|---|---|
TPL_METAHEADER_OUTPUT | spreminjanje metapodatkov v glavi |
TPL_ACT_RENDER | izris dejanja |
TPL_CONTENT_DISPLAY | prikaz vsebine |
<wk:audit stack=„doku“ title=„Flat Template“>
<wk:include ref="code:qualitaet" critical="true">[x][x][x][x]</wk:include> <wk:include ref="stacks:dokuwiki-tpl">[x][x][x][x][x]</wk:include> <wk:include ref="sicherheit:kritis" critical="true">[x][x][x][-][-]</wk:include>
</wk:audit>
DISCUSSION