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

ParameterStandardBeschreibung
minsizeAnzahl allerMinimale Anzahl zu wählender Elemente
maxsizeAnzahl allerMaximale Anzahl zu wählender Elemente
sep" " (Leerzeichen)Trennzeichen zwischen nicht-letzten Elementen
lastsepwie sepTrennzeichen 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

  • #set muss 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:

  1. Laufzeitvariablen (stärkster) — über Shortcode übergeben: [spintax slug="greeting" name="Alice"]
  2. Lokale Variablen — mit #set in der Vorlage definiert
  3. 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 deklariertfalsy
leerer Stringfalsy
nur Leerraumfalsy
"0", "false"truthy (nicht leer)
jeder andere Text oder HTMLtruthy

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 trennt then von else; weitere bleiben literal im else-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:

  1. Schützt URLs, E-Mails, Domains, Dezimalzahlen und Abkürzungen vor Großschreibung
  2. Eliminiert doppelte Leerzeichen und Tabulatoren
  3. Entfernt Leerzeichen vor Satzzeichen (, . ! ?)
  4. Fügt Leerzeichen nach Satzzeichen ein, wo sie fehlen
  5. Schreibt den ersten Buchstaben der Ausgabe groß (HTML-Tags überspringend)
  6. Großschreibung nach satzbeendenden Satzzeichen
  7. Großschreibung nach Block-Level-HTML-Tags
  8. Großschreibung nach Zeilenumbrüchen
  9. Stellt geschützte Platzhalter wieder her

Syntaxübersicht

FunktionSyntaxVerhalten
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% = valWiederverwendbare 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.