通常,当一个规则有多个块时,每个块会按照从上到下的顺序执行,如果某个块的条件满足,则执行该块的操作。因此,每个规则可以有多个操作。但有时我们并不希望这样,我们只希望执行一个块,然后规则停止。这时就需要用到分支。
分支允许您使用多个条件块来构建规则,遵循 if → else if → else 逻辑。每个块会按顺序检查,一旦某个块匹配,其操作会被执行,规则随即停止。这确保了 只有一个块会运行,防止重叠或冲突的操作。这是一个非常强大的功能,可以用来创建具有多个条件的复杂规则。
下面是一个包含三个块的分支规则示例。在这里,我们希望根据产品标签应用不同的折扣,如果客户不符合任何其他折扣条件,则默认对所有配送提供 5% 的折扣。只有一个块会根据条件执行,然后规则会停止。
这里的关键条件是第二个和第三个块中的 [之前所有条件无效](https://docs.checkoutrules.com/guides/zh/essentials/condition-sets/condition-set-1#前面所有条件无效), 这确保了只有一个块会根据条件执行,然后规则会停止。使用此条件,您可以在任何规则中使用分支。

这是该规则的执行方式:
如果产品标签是 sport 并且订单小计金额大于或等于 33
那么将应用 20% 的配送折扣,规则将停止。
否则如果客户标签是 VIP
那么将应用 50% 的配送折扣,规则将停止。
否则 (默认捕获所有)
那么将应用 5% 的配送折扣。
系统从第一个条件块开始。
该块可以包含多个
子条件
,并通过
AND
或
OR
组合。
如果整个块条件满足,则运行其
“Then” 操作
(例如,应用 20% 折扣)。
一旦运行,系统将不再检查后续块。
示例: 产品标签的值为 sportAND 订单小计金额 ≥ 33OR 产品标签的值为 shoes → 对所有配送应用 20% 折扣

如果第一个块不匹配,系统会检查下一个块。
一个
Else If
块可以包含多个
子条件
,使用
AND
或
OR
,并且必须包含
"之前所有条件无效"
作为子条件。
可以有一个或多个块依次排列。但是,如果没有
"之前所有条件无效"
条件,该块将不会作为
Else If
工作,而会表现为常规的
If
块。
如果任何块的整体条件满足,则运行其
“Then” 操作
(例如,应用 50% 折扣),并停止评估。
示例: 之前所有条件无效 AND 客户标签的值为 VIP → 对所有配送应用 50% 折扣

如果之前的块都不匹配,您可以添加一个条件为
之前所有条件无效
的回退块。
这相当于
Else (默认捕获所有)
,确保始终有一个默认的
“Then” 操作
(例如,应用 5% 折扣),当没有执行之前的块时。
示例: 之前所有条件无效 → 对所有配送应用 5% 折扣

您应按照优先级从高到低的顺序排列这些块。第一个块是最高优先级,最后一个块是最低优先级。
假设您希望根据 产品标签 应用不同的配送折扣。
块 1 (if) → 产品标签的值为 sport → 对所有配送应用 20% 折扣(最高优先级)。

添加下一个块
在第一个块之后添加新块,您可以选择:
点击规则构建器中的 “添加新块” 按钮。

或者,复制上一个块,并使用 粘贴图标将其粘贴到下方,然后修改其条件和操作。
块 2 (else if) → 产品标签的值为 winter AND 之前所有条件无效 → 对所有配送应用 50% 折扣

块 3 (else) → 之前所有条件无效 → 对所有配送应用 5% 折扣(默认折扣)。

以下是整个规则设置的样子。

系统从 块 1 开始。如果匹配(产品标签 = sport),则应用 20% 配送折扣,规则结束。

如果块 1 不匹配,则检查 块 2。如果产品标签 = winter,则应用 50% 配送折扣,规则结束。

如果块 1 和块 2 都不匹配,则执行 块 3。由于它使用了 之前所有条件无效,因此它作为 默认捕获所有,应用 5% 配送折扣。
