Inhaltsverzeichnis
WvdS.DokuWiki.If Vtičnik
Vtičnik: wvdsif
Verzija: 1.0.0
Imenski prostor: lib/plugins/wvdsif/
Avtor: Wolfgang van der Stille zeljko.petrusic@outlook.de
Licenca: GPL 2
Definicija
Vtičnik wvdsif omogoča pogojno prikazovanje vsebine glede na uporabniške skupine ali jezik brskalnika. Zagotavlja dva tipa oznak: <ifgroup> za prikaz glede na skupino in <iflang> za prikaz glede na jezik.
Primeri uporabe
- Vsebina glede na dovoljenja - Različna vsebina za goste, uporabnike, administratorje
- Večjezične vstopne strani - Jezikovno specifični pozdravi in vsebina
- Skrbniški razdelki - Skrite povezave vidne samo administratorjem
- Nadomestna vsebina - Privzeta vsebina ko se noben jezik ne ujema
- VIP območja - Ekskluzivna vsebina za določene skupine
Sintaksa
ifgroup - Po uporabniški skupini
<ifgroup imeskupine>Vsebina za to skupino</ifgroup> <ifgroup skupina1,skupina2>Vsebina za več skupin</ifgroup>
iflang - Po jeziku brskalnika
<iflang jezikovnakoda>Vsebina za ta jezik</iflang> <iflang koda1,koda2>Vsebina za več jezikov</iflang> <iflang *>Nadomestna vsebina (vedno prikazana)</iflang>
Parametri
ifgroup parametri
| Parameter | Tip | Opis |
|---|---|---|
guest | vnaprej določen | Neprijavljeni obiskovalci |
user | vnaprej določen | Vsi prijavljeni uporabniki |
admin | vnaprej določen | Administratorji |
[imeskupine] | uporabniško določen | Katerakoli skupina definirana v DokuWiki |
iflang parametri
| Parameter | Tip | Opis |
|---|---|---|
de | ISO 639-1 | Nemščina |
en | ISO 639-1 | Angleščina |
sl | ISO 639-1 | Slovenščina |
fr | ISO 639-1 | Francoščina |
es | ISO 639-1 | Španščina |
it | ISO 639-1 | Italijanščina |
* | Nadomestni znak | Vsi jeziki (nadomestna možnost) |
Primeri
Primer 1: Gostje vs. Prijavljeni
Zahteva: Različen pozdrav za goste in prijavljene uporabnike.
<ifgroup guest> ===== Dobrodošli! ===== Prosimo [[?do=login|prijavite se]] za popoln dostop. </ifgroup> <ifgroup user> ===== Dobrodošli nazaj! ===== Imate dostop do vse dokumentacije. </ifgroup>
Rezultat:
- Neprijavljen: Prikaže poziv k prijavi
- Prijavljen: Prikaže sporočilo dobrodošlice
Primer 2: Skrbniški razdelek
Zahteva: Skrbniške povezave vidne samo administratorjem.
<ifgroup admin> ===== Administracija ===== * [[admin:dashboard|Nadzorna plošča]] * [[admin:users|Upravljanje uporabnikov]] * [[admin:plugins|Upravljanje vtičnikov]] * [[admin:config|Konfiguracija]] </ifgroup>
Rezultat:
- Administrator: Vidi vse skrbniške povezave
- Drugi uporabniki: Blok je neviden
Primer 3: Večjezična vstopna stran
Zahteva: Pozdrav v jeziku brskalnika obiskovalca.
<iflang de> ===== Willkommen ===== Dies ist unsere Wissensdatenbank auf Deutsch. </iflang> <iflang en> ===== Welcome ===== This is our knowledge base in English. </iflang> <iflang sl> ===== Dobrodošli ===== To je naša baza znanja v slovenščini. </iflang> <iflang *> ===== Welcome ===== Please select your language above. </iflang>
Rezultat:
- Brskalnik nastavljen na nemščino: Prikaže nemški blok
- Brskalnik nastavljen na angleščino: Prikaže angleški blok
- Brskalnik nastavljen na slovenščino: Prikaže slovenski blok
- Drugi jeziki: Prikaže nadomestni blok
Primer 4: Večjezična stran napake
Zahteva: Stran 404 v jeziku obiskovalca.
<iflang de> ===== Seite nicht gefunden ===== Die angeforderte Seite existiert nicht. [[start|Zurück zur Startseite]] </iflang> <iflang en> ===== Page Not Found ===== The requested page does not exist. [[start|Back to homepage]] </iflang> <iflang sl> ===== Stran ni najdena ===== Zahtevana stran ne obstaja. [[start|Nazaj na domačo stran]] </iflang> <iflang *> ===== Napaka 404 ===== Stran ni najdena. [[start|Domov]] </iflang>
Primer 5: VIP vsebina
Zahteva: Premium vsebina samo za VIP člane.
<ifgroup vip,premium> ===== Ekskluzivno območje ===== Tukaj najdete premium dokumentacijo in napredne vodiče. * [[premium:advanced|Napredne funkcije]] * [[premium:tutorials|Ekskluzivni vodiči]] </ifgroup> <ifgroup guest,user> ===== Premium območje ===== To območje je rezervirano za VIP člane. [[kontakt|Zahtevaj nadgradnjo]] </ifgroup>
Primer 6: Kombinirani pogoji
Zahteva: Več skupin v stranski vrstici.
~~NOCACHE~~ ===== Navigacija ===== * [[start|Domov]] * [[docs:index|Dokumentacija]] <ifgroup user,admin> * [[interno:index|Interno območje]] </ifgroup> <ifgroup admin> * [[admin:index|Administracija]] </ifgroup> <ifgroup guest> * [[?do=login|Prijava]] </ifgroup>
Kako deluje
Procesni cevovod
1. Zaznava oznak └── Najde vse <ifgroup>...</ifgroup> in <iflang>...</iflang> oznake 2. Preverjanje pogojev ├── ifgroup: Preveri $_SERVER['REMOTE_USER'] in članstvo v skupini └── iflang: Preveri glavo Accept-Language 3. Filtriranje vsebine ├── Pogoj izpolnjen: Vsebina se prikaže └── Pogoj ni izpolnjen: Vsebina se odstrani 4. Obdelava nadomestnega znaka └── <iflang *> se preveri zadnji (samo če se noben drug jezik ne ujema)
Zaznava jezika
Jezik se zazna iz HTTP glave Accept-Language:
Accept-Language: de-DE,de;q=0.9,en;q=0.8
^^
Primarni jezik: "de"
| Primer glave | Zaznan jezik |
|---|---|
de-DE,de;q=0.9 | de |
en-US,en;q=0.9 | en |
sl-SI,sl;q=0.9 | sl |
fr-FR,en;q=0.5 | fr |
Konfiguracija
Vtičnik ne zahteva posebne konfiguracije. Zaznava skupin uporablja standardne DokuWiki ACL skupine.
Pomembna opomba
<ifgroup> ali <iflang> morajo uporabljati , da se vsebina ponovno izriše ob vsaki zahtevi.
Obravnava napak
| Scenarij | Vedenje |
|---|---|
| Neznana skupina | Blok se ne prikaže |
| Neveljavna jezikovna koda | Blok se ne prikaže |
| Brez glave Accept-Language | Prikaže se samo * nadomestni znak |
| Gnezdene oznake | Zunanja oznaka ima prednost |
Dobre prakse
- vedno uporabljajte ko uporabljate ifgroup/iflang
- Nadomestna možnost z * zagotovite za iflang
- Jasno definirajte skupine v DokuWiki ACL
- Ne gnezdite - oznake ne smejo biti gnezdene ena v drugi
Pravilno
<ifgroup admin>Skrbniška vsebina</ifgroup> <ifgroup user>Uporabniška vsebina</ifgroup>
Nepravilno
<ifgroup admin> <ifgroup user>Gnezdena vsebina</ifgroup> </ifgroup>
Zgodovina verzij
| Verzija | Datum | Spremembe |
|---|---|---|
| 1.0.0 | 2025-01-06 | Začetna izdaja |
Glej tudi
- WvdS.DokuWiki.Lang Vticnik - Večjezični prevodi
- Preusmeritev - Večkrat uporabne HTML komponente
- WvdS.DokuWiki.Flat Predloga - Predloga s preklopnikom jezika
Tehnična referenca
Razred: syntax_plugin_wvdsif
Datoteka: lib/plugins/wvdsif/syntax.php
| Metoda | Opis |
|---|---|
getType() | Vrne substition |
getSort() | Vrne 100 |
connectTo($mode) | Registrira ifgroup in iflang vzorce |
handle($match, …) | Razčleni oznako in izvleče pogoj |
render($mode, …) | Vrne vsebino ali prazno |
Pomožne funkcije
| Funkcija | Opis |
|---|---|
_checkGroup($groups) | Preveri članstvo v skupini |
_checkLang($langs) | Preveri ujemanje jezika |
_getBrowserLang() | Izvleče jezik iz Accept-Language |
Uporabljene spremenljivke
| Spremenljivka | Vir | Opis |
|---|---|---|
$_SERVER['REMOTE_USER'] | PHP | Uporabniško ime prijavljenega |
$USERINFO['grps'] | DokuWiki | Polje uporabniških skupin |
$_SERVER['HTTP_ACCEPT_LANGUAGE'] | HTTP | Jezikovna nastavitev brskalnika |
Diskussion