# In-App 中的 Liquid

在 In-App 的内容中编写 [Liquid](/zh/product/personalization/liquid-templates/)，即可向每位用户显示其自己的数据：其 Tag 值、触发该 In-App 的事件的属性以及其 User ID。例如，按姓名问候用户，并显示事件中传递的促销码。

<Aside type="note">
In-App 中的 Liquid 默认关闭。要为您的账户启用此功能，请联系您的 Customer Success Manager 或支持团队。
</Aside>

## Liquid 在 In-App 中的生效范围

Liquid 仅在 Journey 通过 [In-App 元素](/zh/product/customer-journey/journey-elements/channels/in-app/)显示的 In-App 中生效。两种 **显示应用内消息** 模式均可使用：**下次启动应用时** 和 **发生事件时**。

请在以下任一位置编写 Liquid：

* 内置编辑器块的文本，例如 [HTML 块](/zh/product/content/in-apps/no-code-in-app-editor/built-in-editor-blocks-reference/#html)或 **Text** 块。In-App 任意语言的文本均可。
* 上传的 HTML 压缩包中的 `index.html` 文件。
* [原生 In-App](/zh/product/content/in-apps/create-native-in-app-messages/) 的文本字段。

## 向 In-App 添加 Liquid

要添加 Liquid，请在 In-App 编辑器中编写，然后在 Journey 中选择该 In-App。

1. 在内置编辑器中打开 In-App。
2. 添加一个 **HTML** 块，或选择现有的 HTML 块。
3. 在 **HTML** 字段中手动输入 Liquid 代码。

   <img src="/personalization-liquid-templates-8.webp" alt="In-App 编辑器中的 HTML 块设置，其中的 Liquid 代码按 firstName 问候用户，以大写显示 loyalty_tier 标签，显示 promo_code 事件属性，并包含针对 gold 等级的 if 条件" width="407"/>

4. 点击 **Save**。
5. 在 Journey 的 **In-App** 元素中，于 **Media Source** 中选择该 In-App。
6. 如果 In-App 使用事件属性，请在 **显示应用内消息** 中选择 **发生事件时** 并选择事件。

编辑器预览会显示原样的 Liquid 代码。每位用户看到的是自己的值。

<Aside type="note">
**Merge tag** 按钮插入的不是 Liquid，而是动态内容占位符，例如 `{firstName|regular|}`。占位符和 Liquid 可以在同一个 In-App 中同时使用。
</Aside>

在此示例中，`firstName` 和 `loyalty_tier` 是 Tag，`promo_code` 是显示该 In-App 的事件的属性：

<Tabs>
<TabItem label="输入">

```liquid
<h2>
Hi, {{ firstName | default: "there" }}!
</h2>
<p>
Your {{ loyalty_tier | upcase }} code:
<b>{{ promo_code }}</b>
</p>
{% if loyalty_tier == "gold" %}
<p>Shipping is on us today.</p>
{% endif %}
```

</TabItem>

<TabItem label="输出">

Hi, Anna!

Your GOLD code: AUTUMN-42

Shipping is on us today.

</TabItem>

</Tabs>

<span id="data-you-can-use" />

## 可用数据

在 In-App 的 Liquid 中可以使用以下值：

| 值 | 说明 | 写法 |
|---|---|---|
| [Tag](/zh/product/audience-data-and-segmentation/user-data-tags/tags/) | 存储在 Pushwoosh 中的一项用户数据，例如用户姓名。In-App 显示的是显示时的 Tag 值。 | `{{ loyalty_tier }}` |
| 事件属性 | 在 In-App 元素的 **发生事件时** 模式中所选事件的属性。如果属性与 Tag 同名，则使用属性值。 | `{{ promo_code }}` |
| User ID | 您的应用分配给用户的 ID。 | `{{ userid }}`, 需小写 |
| HWID | 用户设备在 Pushwoosh 中的硬件 ID。 | `{{ hwid }}`, 需小写 |

## 编写变量名

输入变量名时请遵循以下规则：

* 名称须与 Pushwoosh 中的写法完全一致，包括大小写。不匹配的名称（例如将 Tag `firstName` 写成 `{{ firstname }}`）会显示为空文本。
* Tag 和属性名称中不要包含空格：名为 `Loyalty Tier` 的 Tag 写作 `{{ LoyaltyTier }}`。
* 要显示备用值而不是空文本，请添加 `default` 过滤器：`{{ firstName | default: "there" }}`。

## 更改值的显示方式

要更改值的显示方式，请添加 [Liquid 过滤器](https://shopify.github.io/liquid/filters/abs/)。所有标准过滤器均可使用，例如 `upcase`、`capitalize`、`date` 和 `truncate`，Pushwoosh 的 `timezone` 过滤器也可使用。

## In-App 中 Liquid 的限制

在 In-App 中，Liquid 有以下限制：

* 如果您将 In-App 作为即时应用内消息营销活动发送（**营销活动** > **即时应用内消息**），则不会应用 Liquid，用户会看到原样的代码。请改用[动态内容](/zh/product/personalization/dynamic-content/)占位符。
* 不支持 `{% include %}`。请直接在 In-App 中编写完整代码。
* 不支持[连接内容](/zh/product/personalization/liquid-templates/connected-content/)。请改用[可用数据](#data-you-can-use)中的值。
* 如果 In-App 压缩包大于 1 MB，则不会应用 Liquid，用户会看到原样的代码。
* 如果 Liquid 代码有错误，例如未闭合的 `{% if %}`，用户会看到包含原样代码的 In-App。启动 Journey 前，请在您自己的设备上检查该 In-App。