Snippet
Snippet v stran vstavi ponovno uporabne gradnike HTML – z oznako {{wk:snippet>kljuc}}, neodvisno od nastavitve htmlok. Izsek se opredeli enkrat in vstavi povsod, kjer ga potrebujete. Paket je namenjen avtorjem, ki ponavljajočih se blokov nočejo prepisovati, in upraviteljem, ki skrbijo za zbirko izsekov.
Prvi koraki
Hitri začetek: ustvarjanje in vstavljanje izseka – najkrajša pot do prvega rezultata, v treh korakih.
Ustvarite izsek → Vstavite oznako na stran → Preverite rezultat
Pogosta opravila
| Kaj želite | Za koga | Kje to naredite | Navodilo |
|---|---|---|---|
| vstaviti izsek | avtorji | oznaka {{wk:snippet>kljuc}} | Sintaksa |
| ustvariti ali spremeniti izsek | upravitelji | Skrbništvo > Izseki | Definicija izsekov |
| izsek napolniti z vrednostmi | avtorji | parametri oznake | Primeri |
| razumeti, zakaj je HTML tu dovoljen | upravitelji | – | Varnost |
| ugotoviti, zakaj izsek ostane prazen | avtorji | – | Obravnava napak |
| uporabiti izsek iz drugega paketa | razvijalci | – | Povezava z drugimi paketi |
| spremeniti nastavitev | upravitelji | Splošne nastavitve | Konfiguracija |
Definicija
Vtičnik wksnippet omogoča ponovno uporabne gradnike HTML (izseke), ki se upravljajo na enem mestu. Je varna alternativa nastavitvi htmlok in omogoča, da HTML združite z večjezičnimi prevodi.
Primeri uporabe
- Navigacijski meniji – glavni meni in navigacija v stranski vrstici, upravljana na enem mestu
- Ponavljajoči se elementi – noge, glave, gumbi
- Lokalizirane komponente – HTML z vgrajeno večjezičnostjo
- Bloki, podobni pripomočkom – povezave na družbena omrežja, okvirji s stiki
- Razširitve predloge – zahtevnejše strukture HTML na straneh wikija
Sintaksa
{{wk:snippet>key}}
Parametri
| Parameter | Vrsta | Opis |
|---|---|---|
| key | string | Ime datoteke izseka (brez končnice .html) |
php | dodatek |php | neobvezno: v izseku izvede kodo PHP – samo pod pogoji iz razdelka Konfiguracija |
Definicija izsekov
Shranjevanje v datotekah
Vsak izsek je samostojna datoteka HTML. Paket bere dve mapi:
Izseki spletnega mesta: <savedir>/wksnippet/ – sem piše skrbniški zaslon. Mapa je ob data/pages, zato je v isti varnostni kopiji in preživi vsako ponovno namestitev vtičnika.
Priloženi izseki: lib/plugins/wksnippet/snippets/ – privzeti izseki, ki pridejo z vtičnikom; samo za branje, ob vsaki namestitvi se zamenjajo.
Oblika datoteke: {key}.html. Če ima izsek spletnega mesta isti ključ kot priložen izsek, velja izsek spletnega mesta; ko ga izbrišete, spet velja priloženi.
<savedir>/wksnippet/ ├── main_menu.html ├── contact_box.html └── footer.html lib/plugins/wksnippet/snippets/ ├── alert_box.html ├── breadcrumb_separator.html ├── go_back.html └── social_links.html
Pravila
| Pravilo | Opis |
|---|---|
| Ime datoteke | Ustreza ključu izseka (npr. main_menu.html → {{wk:snippet>main_menu}}) |
| Vsebina | Celotna koda HTML v datoteki |
| Več vrstic | Mogoče je poljubno število vrstic |
| wki18n | Oznake ... se obdelajo |
| HTML | Dovoljen je celoten HTML |
Dovoljena vsebina
| Vrsta vsebine | Primer |
|---|---|
| Oznake HTML | <div>, <nav>, <ul> itd. |
| Razredi CSS | class="my-class" |
| Vgrajeni slogi | style="color: red;" |
| JavaScript | onclick="..." (previdno) |
| Font Awesome | <i class="fa fa-home"></i> |
| Oznake wki18n | Home |
| Vgrajeni prevodi | de:Text|en:Text |
Konfiguracija
Skrbniške nastavitve
Prek Skrbništvo → Splošne nastavitve → wksnippet:
| Nastavitev | Vrsta | Privzeto | Opis |
|---|---|---|---|
allowPhp | vklop/izklop | izklopljeno | Dovoli kodo PHP v izsekih (varnostno tveganje!) |
Koda PHP v izseku se izvede samo, kadar so hkrati izpolnjeni trije pogoji: oznaka ima dodatek |php ({{wk:snippet>key|php}}), allowPhp je vklopljen in nastavitev DokuWikija phpok je vklopljena. allowPhp izvajanje dovoli za ta vtičnik, phpok za ves wiki; nobeno od obeh stikal ne nadomesti drugega. Če kateri od pogojev manjka, se vsebina izpiše nespremenjena in koda PHP se ne izvede.
Skrbniški zaslon
Prek Skrbništvo → Izseki izseke upravljate neposredno:
| Funkcija | Opis |
|---|---|
| Seznam izsekov | Prikaže vse razpoložljive izseke s predogledom |
| Urejanje izseka | Vsebino HTML spremenite v deljenem urejevalniku: levo je izvorna koda z barvanjem sintakse HTML, desno izrisani predogled, ki ga je mogoče urejati – gradnik htmlSplitEditor() iz wkfluentui (pogodba). Pogled lahko preklopite (izvorna koda | deljeno | predogled), izbira pa se zapomni za vsakega uporabnika. Brez JavaScripta ostane navadno besedilno polje. |
| Nov izsek | Ustvari nov ključ izseka |
| Brisanje izseka | Odstrani datoteko izseka (s potrditvijo) |
V predogledu je vsaka nadomestna oznaka ({{wk:lang>…}},
{{wk:image>…}}) prikazana kot nedeljiva značka s celotno oznako v
opisu orodja – shrani se bajt za bajtom nespremenjena. Bloka <style>
in <script> v izseku učinkujeta samo znotraj predogleda
(iframe v peskovniku, brez izvajanja skriptov), ne na skrbniški strani.
Urejanje v predogledu izvorno kodo zapiše nazaj na novo oblikovano; en
sam Ctrl+Z v polju z izvorno kodo to razveljavi. Če delate samo na levi,
se oblika datoteke ne spremeni.
Primer izseka (main_menu.html)
Datoteka: <savedir>/wksnippet/main_menu.html
<nav class="main-menu"> <ul class="menu-list"> <li class="menu-item"><a href="?id=start">Home</a></li> <li class="menu-item"><a href="?id=docs">Project Documentation</a></li> <li class="menu-item"><a href="?id=contact">Contact</a></li> </ul> </nav>
Primer izseka (go_back.html)
Datoteka: lib/plugins/wksnippet/snippets/go_back.html
<div class="go-back"> <i class="fa fa-arrow-left"></i> <a href="javascript:history.back()">Go Back</a> </div>
Primeri
Primer 1: glavni meni v stranski vrstici
Zahteva: osrednji navigacijski meni za vse strani.
Datoteka izseka: <savedir>/wksnippet/main_menu.html
<nav class="main-menu"> <ul> <li><a href="?id=start">Home</a></li> <li><a href="?id=sl:docs:start">Project Documentation</a></li> </ul> </nav>
Uporaba v sidebar.txt:
~~NOCACHE~~
{{wk:snippet>main_menu}}
Rezultat:
- Meni se pojavi na vseh straneh
- Prevodi se uporabijo samodejno
- Spremembe naredite na skrbniškem zaslonu ali neposredno v datoteki
Primer 2: povezava nazaj z ikono
Zahteva: enotna povezava nazaj v podrejenih imenskih prostorih.
Datoteka izseka: <savedir>/wksnippet/go_back.html (nadomesti priloženi izsek z istim ključem)
<div class="go-back" style="margin-bottom: 1em;"> <i class="fa fa-arrow-left" style="margin-right: 0.5em;"></i> <a href="javascript:history.back()">de:Zurück|en:Back|sl:Nazaj</a> </div>
Uporaba v sidebar1.txt:
~~NOCACHE~~
{{wk:snippet>go_back}}
{{wk:acmenu}}
Primer 3: okvir s stiki
Zahteva: ponovno uporabni podatki za stik.
Datoteka izseka: <savedir>/wksnippet/contact_box.html
<div class="contact-box"> <h4>de:Kontakt|en:Contact|sl:Kontakt</h4> <p> <i class="fa fa-envelope"></i> info@example.com<br> <i class="fa fa-phone"></i> +49 123 456789 </p> </div>
Uporaba:
{{wk:snippet>contact_box}}
Primer 4: večjezična noga
Zahteva: noga z letnico in lokaliziranimi povezavami.
Datoteka izseka: <savedir>/wksnippet/footer.html
<footer class="site-footer"> <div class="footer-content"> <p>© 2026 conf:title</p> <nav class="footer-links"> <a href="?id=kolofon">menu_imprint</a> | <a href="?id=zasebnost">menu_privacy</a> | <a href="?id=zemljevid">menu_sitemap</a> </nav> </div> </footer>
Kako deluje
Potek obdelave
1. Prepoznavanje sintakse
└── Najde vse oznake {{wk:snippet>...}}
2. Iskanje izseka
└── Poišče datoteko {key}.html: najprej <savedir>/wksnippet/,
sicer lib/plugins/wksnippet/snippets/
└── Naloži vsebino HTML iz datoteke
3. Oznake v izseku
└── Zamenja {DOKU_BASE}, {{wk:image>...}} in ...
└── Uporabi trenutni jezik
4. Izpis HTML
└── Odstrani komentarje HTML v izseku
└── Kodo HTML vstavi v stran
└── Brez dodatnega kodiranja posebnih znakov (surovi HTML)
Vrstni red obdelave
| Prednost | Vtičnik | Vrednost getSort |
|---|---|---|
| 1 | wki18n | 1 |
| 2 | wksnippet | 50 |
| 3 | wkimage | 319 |
wk:i18n in wk:image znotraj izseka ne gredo skozi razčlenjevalnik strani: obdela jih pomočnik paketa wksnippet sam, ko izsek vstavi. Prevodi v izsekih zato delujejo ne glede na vrstni red vtičnikov.
Povezava z drugimi paketi
Z wki18n
Izseki podpirajo vse različice sintakse wki18n:
Datoteka: <savedir>/wksnippet/multilingual_block.html
<div class="info"> greeting de:Hallo|en:Hello|sl:Zdravo {{wk:lang:en>english_only_text}} </div>
Z wkacmenu
Značilna zgradba stranske vrstice:
~~NOCACHE~~
{{wk:snippet>go_back}}
{{wk:acmenu}}
Z wkimage
Izseki lahko vsebujejo tudi slike:
Datoteka: <savedir>/wksnippet/logo_block.html
<div class="logo"> {{wk:image>wiki:logo.png|width=100%|maxwidth=200}} </div>
Varnost
Prednosti pred htmlok
| Vidik | htmlok | wksnippet |
|---|---|---|
| Vnos HTML | Prosto na vsaki strani | Samo prek skrbništva |
| Varnostno tveganje | Visoko (XSS, vrivanje kode) | Nizko (nadzorovano) |
| Revizija | Težavna (razpršeno) | Preprosta (na enem mestu) |
| Uporabniške pravice | Vsak, ki sme urejati | Samo skrbniki |
Dobre prakse
- JavaScript naj bo čim manj – samo kadar je res nujen
- Zunanje povezave s target=“_blank” – zaščitite jih z
rel=“noopener” - Brez občutljivih podatkov – v izsekih ni ključev API ali gesel
- Nedvoumna imena – ključe izsekov izberite tako, da povedo, kaj vsebujejo
Obravnava napak
Vedenje ob napakah
| Primer | Vedenje |
|---|---|
| Izseka ni | Ne izpiše ničesar. Pomočnik vrne komentar <!– snippet 'key' not found –>, izris pa komentarje HTML pred dostavo odstrani, zato ga v izvorni kodi strani ni. Stran se izriše naprej. |
| Prazen izsek | Ne izpiše ničesar |
Datoteka brez končnice .html | Se ne naloži; ključ velja za neobstoječega |
| Napaka wki18n | Vrne ključ (nadomestna vrednost) |
Iskanje napak
Ko kaj ne deluje, preverite:
- Ali je ime izseka pravilno zapisano?
- Ali obstaja datoteka
<savedir>/wksnippet/{key}.htmlalilib/plugins/wksnippet/snippets/{key}.html? - Ali ima datoteka končnico
.html? - Ali je za dinamično vsebino nastavljen
? - Ali oznake wki18n delujejo vsaka zase?
Zmogljivost
Priporočila
| Primer | Priporočilo |
| Statični izseki | Predpomnilnik naj ostane vklopljen |
| Dinamični izseki (jezik) | Uporabite |
| Veliki izseki | Razdelite jih na manjše |
| Veliko izsekov | Ne opredelite jih več kot 50 |
Predpomnjenje
, da se prikaže prava jezikovna različica.
Opombe k različicam
| Različica | Datum | Spremembe |
|---|---|---|
| 2.1.0 | 2026-01-26 | Skrbniški zaslon, shranjevanje v datotekah (datoteke HTML) |
| 2.0.0 | 2026-01-06 | Preimenovanje iz wvdschunk v wksnippet |
| 1.0.0 | 2025-01-06 | Prva izdaja |
Glejte tudi
- WvdS Internationalization (i18n) – večjezični prevodi
- AcMenu Vtičnik – meni harmonika
- Responsive Image – odzivne slike
- WvdS.DokuWiki.Flat Template – razširitve predloge
Tehnična referenca
Razred: syntax_plugin_wksnippet
Datoteka: lib/plugins/wksnippet/syntax.php
| Metoda | Opis |
|---|---|
getType() | Vrne substition (ime načina v jedru DokuWikija je zapisano tako) |
getSort() | Vrne 50 |
connectTo($mode) | Registrira vzorec \{\{wk:snippet>[a-zA-Z0-9_-]+(?:\|php)?\}\} |
handle($match, …) | Izlušči ime izseka |
render($mode, …) | Izpiše vsebino HTML |
Razred: helper_plugin_wksnippet
Datoteka: lib/plugins/wksnippet/helper.php
| Metoda | Parametri | Vrne | Opis |
|---|---|---|---|
getSnippets() | - | array | Naloži vse izseke iz obeh map (izseki spletnega mesta prekrijejo priložene) |
get() | $name | string | Vrne vsebino izseka |
Razred: admin_plugin_wksnippet
Datoteka: lib/plugins/wksnippet/admin.php
| Metoda | Opis |
|---|---|
html() | Izriše skrbniški zaslon |
handle() | Obdela dejanja obrazca (shrani, izbriši, ustvari) |
Zgradba datotek
lib/plugins/wksnippet/
├── admin.php → skrbniški zaslon
├── helper.php → nalaganje in obdelava izsekov
├── syntax.php → razčlenjevalnik sintakse wikija
├── conf/
│ ├── default.php → privzete nastavitve
│ └── metadata.php → metapodatki za Splošne nastavitve
└── snippets/ → priloženi izseki (samo za branje)
├── go_back.html
├── social_links.html
└── ...
<savedir>/wksnippet/ → izseki spletnega mesta (sem piše skrbniški zaslon)
<wk:audit stack=“doku” title=“wksnippet Plugin”>
<wk:include ref="code:qualitaet" critical="true">[x][x][x][x]</wk:include> <wk:include ref="stacks:dokuwiki-php">[x][x][x][x][x]</wk:include> <wk:include ref="sicherheit:kritis" critical="true">[x][x][x][-][-]</wk:include>
</wk:audit>
DISCUSSION
Podatki o paketu
Vtičnik: wksnippet
Različica: 2.1.0
Imenski prostor: lib/plugins/wksnippet/
Avtor: Wolfgang van der Stille Wolfgang.van.der.Stille@gmail.com (The White Knight Labs)
Licenca: GPL 2