Spintax-Syntaxreferenz
Vollständige Referenz für Spintax-Vorlagen-Markup. Die Syntax ist kompatibel mit dem Generating The Web (GTW) Standard.
Enumerationen { }
Wählt zufällig eine Option aus der Liste.
{option1|option2|option3}
Beispiele
{blue|grey|clear}
{|online|internet} casino ← empty option = sometimes nothing
{1X{S|s}lots} ← nested enumerations
{license {|#8048} from Curacao} ← nesting with empty option
Regeln
- Begrenzer:
{und} - Trennzeichen:
| - Unterstützt Verschachtelung in beliebiger Tiefe
- Leere Optionen sind gültig (erzeugen leere Zeichenkette)
- Auflösung erfolgt vom innersten Ausdruck nach außen
Permutationen [ ]
Wählt N Elemente, mischt sie und verbindet sie mit Trennzeichen.
Einfache Permutationen
Alle Elemente einbezogen, durch Leerzeichen getrennt:
[1|2|3|4]
Ausgabebeispiele: 1 4 3 2, 2 3 4 1, 3 2 4 1
Mit Trennzeichen
Einheitliches Trennzeichen angegeben in < > am Anfang:
[<, > 1|2|3|4]
Ausgabebeispiele: 2, 1, 4, 3, 4, 3, 2, 1
Wichtig: Kein Leerzeichen zwischen [ und <Trennzeichen>.
Trennzeichen pro Element
Jede Option kann ein eigenes Trennzeichen haben, definiert mit <sep> vor dem vorhergehenden |. Das Trennzeichen wandert beim Mischen mit seinem Element mit.
[<, > 1|2|3 < and >|4]
Ausgabebeispiele: 1, 3, 2 and 4, 3, 1, 2 and 4
Auto-Abstände: Wort-Trennzeichen wie <and> oder <or> werden automatisch mit Leerzeichen ergänzt: <and> wird zu and . Satzzeichen-Trennzeichen (<,>) werden nicht ergänzt.
Permutationen mit Kombinationen
Konfigurierbare minimale/maximale Elementanzahl und Trennzeichen:
[<minsize=1;maxsize=3;sep=", ";lastsep=" and "> apple|plum|orange|apricot]
Ausgabebeispiele: apple, plum and orange, apple and apricot, orange
Konfigurationsparameter
| Parameter | Standard | Beschreibung |
|---|---|---|
minsize | Anzahl aller | Minimale Anzahl zu wählender Elemente |
maxsize | Anzahl aller | Maximale Anzahl zu wählender Elemente |
sep | " " (Leerzeichen) | Trennzeichen zwischen nicht-letzten Elementen |
lastsep | wie sep | Trennzeichen vor dem letzten Element |
Permutationsregeln
- Begrenzer:
[und] - Konfigurationsblock
<...>muss unmittelbar nach[folgen - Konfigurationsparameter werden durch Semikolon getrennt
- Zeichenkettenwerte in der Konfiguration stehen in Anführungszeichen:
sep=", " - Enumerationen und Permutationen können innerhalb von Optionen verschachtelt werden
- HTML-Elemente können Optionen sein
Variablen %var%
Definiert eine wiederverwendbare Variable, die überall dort eingesetzt wird, wo sie erscheint.
#set %VARIABLE_NAME% = value or spintax structure
Beispiele
#set %name% = John
#set %greeting% = {Hello|Hi|Hey}
#set %items% = [<minsize=2;maxsize=3;sep=", ";lastsep=" and "> apples|oranges|bananas]
Some text with %name% and %greeting%, also %items%.
Variablenregeln
#setmuss am Zeilenanfang stehen- Variablennamen stehen in
%:%name% - Variablennamen sind alphanumerisch + Unterstrich
- Werte können beliebige Spintax-Syntax enthalten (Enumerationen, Permutationen, andere Variablen)
- Variablen werden beim Referenzieren expandiert, nicht bei der Definition (Lazy Evaluation)
#set-Zeilen werden aus der Ausgabe entfernt
Variablenbereiche im WordPress-Plugin
Das Plugin unterstützt drei Variablenbereiche. Wenn derselbe Name in mehreren Bereichen existiert, gewinnt der stärkste Bereich:
- Laufzeitvariablen (stärkster) — über Shortcode übergeben:
[spintax slug="greeting" name="Alice"] - Lokale Variablen — mit
#setin der Vorlage definiert - Globale Variablen (schwächster) — auf der Einstellungsseite definiert
Bedingungen {?VAR?then|else}
Bedingungen sind die markante Erweiterung von spintax.net gegenüber der GTW-Familie. Während {a|b} eine gleichverteilte Zufallsauswahl ohne Bezug zu Variablen ist, wählt {?VAR?then|else} danach aus, ob %VAR% einen Wert hat.
Nutzen Sie es für wertgesteuerte Entscheidungen: eine Free-Tier-Zeile nur anzeigen, wenn ein Free-Tier existiert, einen Krypto-Banking-Block nur rendern, wenn das Casino Krypto akzeptiert, einen CTA verbergen, der nicht zutrifft.
Der Pre-Pass läuft vor der %var%-Expansion und vor dem zufälligen Zweig-Picker, sodass ein falsy-Zweig vollständig verworfen wird — nichts darin wird ausgewertet.
Formen
{?VAR?then} ← truthy ⇒ then; falsy ⇒ empty
{?VAR?then|else} ← truthy ⇒ then; falsy ⇒ else
{?!VAR?then|else} ← inverted
{?HasFreeTier? — free tier available since %founded%|, trusted since %founded%}
Truthy und falsy
Die Regel ist bewusst einfacher als in JavaScript — truthy = mindestens ein Nicht-Leerraum-Zeichen:
Wert von %VAR% | Truthy? |
|---|---|
| nicht deklariert | falsy |
| leerer String | falsy |
| nur Leerraum | falsy |
"0", "false" | truthy (nicht leer) |
| jeder andere Text oder HTML | truthy |
Bedingungs-Regeln
- Variablennamen folgen derselben Regex wie
%var%(unabhängig von Groß-/Kleinschreibung) - Das
!-Präfix invertiert die Prüfung:{?!VAR?fehlt} - Das erste
|auf Tiefe 0 trenntthenvonelse; weitere bleiben literal imelse-Zweig - Verschachtelte Bedingungen werden außen-zuerst ausgewertet — falsy-Zweige kurzschließen
- Zusammengesetzte Logik (
&&,||, Vergleiche) wird nicht unterstützt — berechnen Sie eine Wächter-Variable im Assembler - Fehlerhafte Formen (
{??yes},{?VAR}) werfen niemals — das Playground markiert sie als Warnungen - Vertiefung: siehe den Conditional-Spintax-Leitfaden mit Beispielen und Anti-Pattern
Includes #include
Bettet eine andere Vorlage an der Position der Direktive ein.
#include "hero-text"
Include-Regeln
- Vorlagenreferenz steht in doppelten Anführungszeichen
- Auflösung nach Vorlagen-Slug oder numerischer ID
- Eingebettete Vorlagen können eigene Variablen und Spintax enthalten
- Rekursive Includes werden unterstützt
- Zirkuläre Referenzen werden erkannt und blockiert
- Kind-Vorlagen erben globale und Laufzeitvariablen, aber nicht die
#set-Lokalen des Elternteils
Kommentare /#...#/
Text zwischen Kommentarmarkierungen wird vor jeder anderen Verarbeitung aus der Ausgabe entfernt.
/#
This is a comment section.
It can span multiple lines.
It won't appear in output.
#/
Kommentarregeln
- Start-Begrenzer:
/# - End-Begrenzer:
#/ - Können sich über mehrere Zeilen erstrecken
- Können nicht verschachtelt werden
- Werden vor jeder anderen Verarbeitung entfernt
Verschachtelung
Alle Syntaxelemente können in beliebiger Tiefe ineinander verschachtelt werden:
{option1|[<, > sub1|sub2|sub3]|option3}
[<minsize=2;maxsize=3;sep=", ";lastsep=" and "> {red|blue} apples|{big|small} oranges|bananas]
#set %var% = {a|[b|c]}
Nachbearbeitung
Die Engine wendet nach der Generierung automatische Textkorrektur an:
- Schützt URLs, E-Mails, Domains, Dezimalzahlen und Abkürzungen vor Großschreibung
- Eliminiert doppelte Leerzeichen und Tabulatoren
- Entfernt Leerzeichen vor Satzzeichen (
,.!?) - Fügt Leerzeichen nach Satzzeichen ein, wo sie fehlen
- Schreibt den ersten Buchstaben der Ausgabe groß (HTML-Tags überspringend)
- Großschreibung nach satzbeendenden Satzzeichen
- Großschreibung nach Block-Level-HTML-Tags
- Großschreibung nach Zeilenumbrüchen
- Stellt geschützte Platzhalter wieder her
Syntaxübersicht
| Funktion | Syntax | Verhalten |
|---|---|---|
| Enumeration | {a|b|c} | Wählt eine zufällige Option |
| Permutation | [a|b|c] | Wählt N, mischt, verbindet |
| Trennzeichen | [<sep> a|b|c] | Permutation mit einheitlichem Trennzeichen |
| Sep pro Element | [<,> a|b <x>|c] | Permutation mit benutzerdefinierten Trennzeichen |
| Kombinationen | [<config> a|b|c] | Permutation mit Min/Max-Anzahl |
| Variable | #set %var% = val | Wiederverwendbare Substitution |
| Bedingung | {?VAR?then|else} | then, wenn truthy; else, wenn falsy |
| Include | #include "slug" | Bettet eine andere Vorlage ein |
| Kommentar | /#...#/ | Wird aus der Ausgabe entfernt |
Die Syntax ist kompatibel mit dem Generating The Web (GTW) Standard.