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"
包含规则
- 模板引用使用双引号
- 通过模板别名或数字 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、电子邮件、域名、小数和缩写不被大写化
- 消除重复空格和制表符
- 移除标点符号前的空格(
,.!?) - 在缺少空格的标点符号后添加空格
- 将输出的第一个字母大写(跳过 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) 标准。