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

Strani z oznakami <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


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

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
 
Zuletzt geändert: dne 06.01.2026 ob 15:02