Site-Tutorial
Sichtbarkeit
Un view absent de la liste filtrée n’existe pas à l’écran. Pas de Opacity(0) : il n’est pas monté. Live : SiteContentP.s.enableTheme / enablePlatform / enableLocale / enableLocaleText, appliqué aux racines (view_getSelectedUUID) et aux enfants (view_getFolderUUID, dont wrap_text).
Chaîne AND (ordre live)
xServerOpen(content.x) PanelP.originList(origin) uuid_page match (+ uuid_folder pour les enfants) enable == 1 si onlyEnable (mobile && content.mobile) || (desktop && content.desktop) enableTheme(content) enablePlatform(content) enableLocale(content) enableLocaleText(content) layer / pop racines seulement tri odr
Les quatre gates theme / platform / locale / loc_text : liste vide = toujours visible. Liste non vide = filtre.
desktop / mobile — 0|1
| desktop | mobile | Large (isLarge) | Small |
|---|---|---|---|
| 1 | 1 | visible | visible |
| 1 | 0 | visible | caché |
| 0 | 1 | caché | visible |
| 0 | 0 | caché | caché |
Émettre desktop: 1, mobile: 1 sauf variante écran. Préférer type_m à un second view desktop-only + mobile-only quand seul le moteur change.
theme[] — "light" | "dark"
Ce n’est pas uuid_theme (ColorScheme). theme[] = gate visibilité.
| JSON | Effet |
|---|---|
[] | tout mode |
["dark"] | seulement dark |
["light"] | seulement light |
["light","dark"] | tout mode (équivalent []) |
platform[]
Valeurs live : web android ios macos windows (pas linux). Liste vide → toutes. ["web"] = navigateur only.
locale[] — whitelist — outil n°1 phrase / mot
Valeurs : fr en nl es it pt de.
enableLocale:
liste vide → true
sinon true ssi P.locale.localeCurrent ∈ content.locale
ET cette locale est dans DomainP.getLocaleStringList
| JSON | Visible quand UI = |
|---|---|
[] | toutes les langues du domain |
["fr"] | seulement français |
["fr","en"] | fr ou en |
["es"] | seulement espagnol |
Live (data_api_big_page.json) — mot « Pas » sauf espagnol (l’espagnol a un autre span, ordre différent) :
{
"title": {
"fr": "Pas ",
"en": "Not ",
"nl": "Niet ",
"es": "No ",
"it": "Non ",
"pt": "Não ",
"de": "Nicht "
},
"locale": ["fr", "en", "nl", "it", "pt", "de"]
}
Span jumeau espagnol only (même folder wrap_text, odr voisin) :
{
"title": {
"fr": "Pas ",
"en": "Not ",
"nl": "Niet ",
"es": ", no.",
"it": "Non ",
"pt": "Não ",
"de": "Nicht "
},
"locale": ["es"]
}
UI es : le premier span est filtré, le second s’insère. La phrase ne casse pas. Pour un ordre de mots différent, dupliquer le span (ou tout le wrap_text) et gated locale[].
loc_text — INVERSÉ par rapport à une whitelist
String nue "fr" | "en" | … | "". Live exact enableLocaleText :
loc_text vide → visible loc_text ∉ locales domain → caché loc_text == localeCurrent → caché loc_text != localeCurrent → visible
Donc loc_text: "en" :
| UI | View |
|---|---|
| en | caché |
| fr / es / … | visible (market getText forcé en en) |
| Intention | Champ |
|---|---|
| Visible uniquement en français | locale: ["fr"] loc_text: "" |
| Phrase / mot ordre différent par langue | locale[] sur chaque variante (wrap_text) |
| Afficher le libellé anglais source quand l’UI n’est pas l’anglais | loc_text: "en" |
| Rien de spécial | locale: [] loc_text: "" |
loc_text: "fr" n’est pas « seulement français ». Live, ça cache le view en français. Whitelist = locale: ["fr"].JSON sûr
{
"enable": 1,
"desktop": 1,
"mobile": 1,
"theme": [],
"platform": [],
"locale": [],
"loc_text": ""
}
CTA web-only dark-only français :
{
"enable": 1,
"desktop": 1,
"mobile": 1,
"theme": ["dark"],
"platform": ["web"],
"locale": ["fr"],
"loc_text": ""
}
folderView() applique les mêmes gates aux enfants. Wrap-text : un mot locale:["es"] n’entre pas dans listChild hors espagnol → pas de trou (TextSpan omis). Éditeur : dropdown all remplit la liste — émettre [] pour « partout ». Le site public ne bypass jamais (byPassVisibilityLocal = éditeur).