Справочник синтаксиса 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
Плагин поддерживает три области видимости переменных. Если одно и то же имя существует в нескольких областях, побеждает сильнейшая:
- Переменные времени выполнения (сильнейшие) — передаются через шорткод:
[spintax slug="greeting" name="Alice"] - Локальные переменные — определяются через
#setвнутри шаблона - Глобальные переменные (слабейшие) — определяются на странице настроек
Включения #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]}
Постобработка
Движок автоматически корректирует текст после генерации:
- Защита URL, email-адресов, доменов, десятичных чисел и аббревиатур от изменения регистра
- Удаление дублирующихся пробелов и табуляций
- Удаление пробелов перед знаками препинания (
,.!?) - Добавление пробела после знаков препинания, где он отсутствует
- Заглавная буква в начале результата (с пропуском HTML-тегов)
- Заглавная буква после знаков конца предложения
- Заглавная буква после блочных HTML-тегов
- Заглавная буква после переносов строк
- Восстановление защищённых заполнителей
Сводка синтаксиса
| Возможность | Синтаксис | Поведение |
|---|---|---|
| Перечисление | {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).