Справочник синтаксиса Spintax

Полный справочник по шаблонной разметке spintax. Синтаксис совместим со стандартом Generating The Web (GTW).

Перечисления { }

Случайным образом выбирает один вариант из списка.

{option1|option2|option3}

Примеры

{blue|grey|clear}
{|online|internet} casino        ← empty option = sometimes nothing
{1X{S|s}lots}                    ← nested enumerations
{license {|#8048} from Curacao}  ← nesting with empty option

Правила

  • Разделители: { и }
  • Разделитель вариантов: |
  • Поддерживает вложенность произвольной глубины
  • Пустые варианты допустимы (дают пустую строку)
  • Разрешение идёт от самого внутреннего выражения наружу

Перестановки [ ]

Выбирает N элементов, перемешивает их и объединяет с разделителями.

Простые перестановки

Все элементы включены, разделены пробелами:

[1|2|3|4]

Примеры результата: 1 4 3 2, 2 3 4 1, 3 2 4 1

С разделителем

Единый разделитель указывается в < > в начале:

[<, > 1|2|3|4]

Примеры результата: 2, 1, 4, 3, 4, 3, 2, 1

Важно: Нет пробела между [ и <разделитель>.

Разделители для каждого элемента

У каждого варианта может быть свой разделитель, заданный через <sep> перед предшествующим |:

[<, > 1|2|3 < and >|4]

Примеры результата: 1, 3, 2 and 4, 3, 1, 2 and 4

Перестановки с комбинациями

Настраиваемое мин./макс. количество элементов и разделители:

[<minsize=1;maxsize=3;sep=", ";lastsep=" and "> apple|plum|orange|apricot]

Примеры результата: apple, plum and orange, apple and apricot, orange

Параметры конфигурации

ПараметрПо умолчаниюОписание
minsizeколичество всехМинимальное количество выбираемых элементов
maxsizeколичество всехМаксимальное количество выбираемых элементов
sep" " (пробел)Разделитель между элементами (кроме последнего)
lastsepкак sepРазделитель перед последним элементом

Правила перестановок

  • Разделители: [ и ]
  • Блок конфигурации <...> должен следовать сразу за [
  • Параметры конфигурации разделяются точкой с запятой
  • Строковые значения в конфигурации берутся в кавычки: sep=", "
  • Перечисления и перестановки могут быть вложены в варианты
  • HTML-элементы могут быть вариантами

Переменные %var%

Определяет переменную для многократного использования, которая подставляется везде, где встречается.

#set %VARIABLE_NAME% = value or spintax structure

Примеры

#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%.

Правила переменных

  • #set должен начинаться с начала строки
  • Имена переменных заключаются в %: %name%
  • Имена переменных состоят из букв, цифр и подчёркиваний
  • Значения могут содержать любой синтаксис spintax (перечисления, перестановки, другие переменные)
  • Переменные раскрываются при обращении, а не при определении (ленивое вычисление)
  • Строки #set удаляются из результата

Области видимости переменных в плагине WordPress

Плагин поддерживает три области видимости переменных. Если одно и то же имя существует в нескольких областях, побеждает сильнейшая:

  1. Переменные времени выполнения (сильнейшие) — передаются через шорткод: [spintax slug="greeting" name="Alice"]
  2. Локальные переменные — определяются через #set внутри шаблона
  3. Глобальные переменные (слабейшие) — определяются на странице настроек

Включения #include

Встраивает другой шаблон в позицию директивы.

#include "hero-text"

Правила включений

  • Ссылка на шаблон указывается в двойных кавычках
  • Разрешается по slug или числовому ID шаблона
  • Включённые шаблоны могут содержать собственные переменные и синтаксис spintax
  • Рекурсивные включения поддерживаются
  • Циклические ссылки обнаруживаются и блокируются
  • Дочерние шаблоны наследуют глобальные переменные и переменные времени выполнения, но не локальные #set родителя

Комментарии /#...#/

Текст между маркерами комментариев удаляется из результата до любой другой обработки.

/#
  This is a comment section.
  It can span multiple lines.
  It won't appear in output.
#/

Правила комментариев

  • Открывающий разделитель: /#
  • Закрывающий разделитель: #/
  • Может занимать несколько строк
  • Вложенность не поддерживается
  • Удаляются до начала любой другой обработки

Вложенность

Все элементы синтаксиса могут быть вложены друг в друга на произвольную глубину:

{option1|[<, > sub1|sub2|sub3]|option3}

[<minsize=2;maxsize=3;sep=", ";lastsep=" and "> {red|blue} apples|{big|small} oranges|bananas]

#set %var% = {a|[b|c]}

Постобработка

Движок автоматически корректирует текст после генерации:

  1. Защита URL, email-адресов, доменов, десятичных чисел и аббревиатур от изменения регистра
  2. Удаление дублирующихся пробелов и табуляций
  3. Удаление пробелов перед знаками препинания (, . ! ?)
  4. Добавление пробела после знаков препинания, где он отсутствует
  5. Заглавная буква в начале результата (с пропуском HTML-тегов)
  6. Заглавная буква после знаков конца предложения
  7. Заглавная буква после блочных HTML-тегов
  8. Заглавная буква после переносов строк
  9. Восстановление защищённых заполнителей

Сводка синтаксиса

ВозможностьСинтаксисПоведение
Перечисление{a|b|c}Выбрать один случайный вариант
Перестановка[a|b|c]Выбрать N, перемешать, объединить
Разделитель[<sep> a|b|c]Перестановка с единым разделителем
Разделитель элемента[<,> a|b <x>|c]Перестановка с пользовательскими разделителями
Комбинации[<config> a|b|c]Перестановка с мин./макс. количеством
Переменная#set %var% = valМногократная подстановка
Включение#include "slug"Встраивание другого шаблона
Комментарий/#...#/Удаляется из результата

Синтаксис совместим со стандартом Generating The Web (GTW).