> ## Documentation Index
> Fetch the complete documentation index at: https://docs.checkoutrules.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 分支 (if else)

> 学习如何创建和使用 if、else if、else 规则结构来处理规则中的多个条件。

<iframe className="w-full aspect-video rounded-xl" src="https://www.youtube.com/embed/E_ufsYrU5ko?si=dSTtPQSFtjcxzl3y" title="BeSure 分支" style={{ border: 0 }} allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen />

## 概述

通常，当一个规则有多个块时，每个块会按照从上到下的顺序执行，如果某个块的条件满足，则执行该块的操作。因此，每个规则可以有多个操作。但有时我们并不希望这样，我们只希望执行一个块，然后规则停止。这时就需要用到分支。

分支允许您使用多个条件块来构建规则，遵循 **if → else if → else** 逻辑。每个块会按顺序检查，一旦某个块匹配，其操作会被执行，规则随即停止。这确保了 **只有一个块会运行**，防止重叠或冲突的操作。这是一个非常强大的功能，可以用来创建具有多个条件的复杂规则。

> 下面是一个包含三个块的分支规则示例。在这里，我们希望根据产品标签应用不同的折扣，如果客户不符合任何其他折扣条件，则默认对所有配送提供 5% 的折扣。只有一个块会根据条件执行，然后规则会停止。

<Note>
  这里的关键条件是第二个和第三个块中的
  [之前所有条件无效](/guides/zh/essentials/condition-sets/condition-set-1#前面所有条件无效)，
  这确保了只有一个块会根据条件执行，然后规则会停止。使用此条件，您可以在任何规则中使用分支。
</Note>

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/all-blocks.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=72a534141bcd8bc66efb87259c3e3f70" alt="所有块" width="1091" height="2116" data-path="images/advanced/branching/all-blocks.webp" />

这是该规则的执行方式：

<Steps>
  <Step title="如果产品标签是 sport 并且订单小计金额大于或等于 33">
    那么将应用 20% 的配送折扣，规则将停止。
  </Step>

  <Step title="否则如果客户标签是 VIP">
    那么将应用 50% 的配送折扣，规则将停止。
  </Step>

  <Step title="否则 (默认捕获所有)">
    那么将应用 5% 的配送折扣。
  </Step>
</Steps>

## 解释

### 第一个条件块 (if)

* 系统从第一个条件块开始。
* 该块可以包含多个 **子条件**，并通过 **AND** 或 **OR** 组合。
* 如果整个块条件满足，则运行其 **“Then” 操作**（例如，应用 20% 折扣）。
* 一旦运行，系统将不再检查后续块。

> **示例：** 产品标签的值为 **sport** *AND* 订单小计金额 ≥ **33** *OR* 产品标签的值为 **shoes** → 对所有配送应用 20% 折扣

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/if-condition.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=a88329457c2bbd8a148e3231c1bc6119" alt="If 条件" width="1079" height="783" data-path="images/advanced/branching/if-condition.webp" />

### 否则如果条件块 (else if)

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

> **示例：** 之前所有条件无效 AND 客户标签的值为 **VIP** → 对所有配送应用 50% 折扣

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/else-if-condition.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=7b086b9b2b65b76d5b3dd7b20f2e9b8a" alt="Else If 条件" width="1092" height="657" data-path="images/advanced/branching/else-if-condition.webp" />

### 回退块 (else)

* 如果之前的块都不匹配，您可以添加一个条件为 [之前所有条件无效](/guides/zh/essentials/condition-sets/condition-set-1#前面所有条件无效) 的回退块。
* 这相当于 **Else (默认捕获所有)**，确保始终有一个默认的 **“Then” 操作**（例如，应用 5% 折扣），当没有执行之前的块时。

> **示例：** 之前所有条件无效 → 对所有配送应用 5% 折扣

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/else-condition.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=5c89f6422b905a1ac9ed0d065e653021" alt="Else 条件" width="1086" height="553" data-path="images/advanced/branching/else-condition.webp" />

<Tip>
  您应按照优先级从高到低的顺序排列这些块。第一个块是最高优先级，最后一个块是最低优先级。
</Tip>

## 示例用例

假设您希望根据 **产品标签** 应用不同的配送折扣。

### 规则设置

**块 1 (if)** → *产品标签的值为 `sport`* → 对所有配送应用 **20% 折扣**（最高优先级）。

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/20-percent-when-sport.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=a97886dd9ec1c5e7c6d97c950a1f9480" alt="当 sport 时 20% 折扣" width="699" height="361" data-path="images/advanced/branching/20-percent-when-sport.webp" />

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

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/add-new-block.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=13c7c37ac24c8dffe68ab08f12479732" alt="添加新块" width="1099" height="102" data-path="images/advanced/branching/add-new-block.webp" />

或者，[复制上一个块](/guides/zh/advanced/block-replication)，并使用 **粘贴图标**将其粘贴到下方，然后修改其条件和操作。

**块 2 (else if)** → *产品标签的值为 `winter`* AND *之前所有条件无效* → 对所有配送应用 **50% 折扣**

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/50-percent-when-winter.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=03c579fdd7a5e7531160b2d15a63a169" alt="当 winter 时 50% 折扣" width="750" height="452" data-path="images/advanced/branching/50-percent-when-winter.webp" />

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

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/5-percent-when-previous-all-conditions-invalid.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=502562c7d54188ebf813af1423c5e116" alt="当之前所有条件无效时 5% 折扣" width="697" height="362" data-path="images/advanced/branching/5-percent-when-previous-all-conditions-invalid.webp" />

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

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/example-all-blocks.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=1bc0d8e0817caf7bfa9033b795cf00ef" alt="所有块示例" width="1093" height="2022" data-path="images/advanced/branching/example-all-blocks.webp" />

### 执行流程

系统从 **块 1** 开始。如果匹配（产品标签 = `sport`），则应用 **20% 配送折扣**，规则结束。

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/20-percent-when-sport-checkout.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=b7ae092b666adb6cba4c9b32f43a648d" alt="结账时 sport 20% 折扣" width="1295" height="599" data-path="images/advanced/branching/20-percent-when-sport-checkout.webp" />

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

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/50-percent-when-winter-checkout.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=9e2938f5332e5b1eeabd2d9d7d13444f" alt="结账时 winter 50% 折扣" width="1248" height="608" data-path="images/advanced/branching/50-percent-when-winter-checkout.webp" />

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

<img src="https://mintcdn.com/storespark/RDyGA09NSLSSmL-r/images/advanced/branching/5-percent-when-previous-all-conditions-invalid-checkout.webp?fit=max&auto=format&n=RDyGA09NSLSSmL-r&q=85&s=1ed8d476ad828b88457e0da540203a1a" alt="结账时之前所有条件无效时 5% 折扣" width="1214" height="604" data-path="images/advanced/branching/5-percent-when-previous-all-conditions-invalid-checkout.webp" />
