Barvna shema: Svetla
Trenutno dejavna stran: start » sl » Dokumentacija » Razširitve DokuWikija (WvdS) » Snippet

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

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 Domov
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">Domov</a></li>
        <li class="menu-item"><a href="?id=docs">Projektna dokumentacija</a></li>
        <li class="menu-item"><a href="?id=contact">Kontakt</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()">Nazaj</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">Domov</a></li>
        <li><a href="?id=sl:docs:start">Projektna dokumentacija</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>&copy; 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
Oznake 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}.html ali lib/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

Strani z izseki, ki so odvisni od jezika, naj imajo na začetku , 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


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

sl/wiki/dwe/wksnippet/start.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille