配置文件

当通过 SHOPLINE CLI 创建 UI 扩展时,shopline.ui.customizer.toml 文件会自动生成在根目录下。文件内容包含了扩展名称、扩展点位置、扩展能力的设置定义。

工作原理

当通过 SHOPLINE CLI 启动扩展程序时,会对配置文件内容进行解析。在页面渲染扩展时,根据解析后的数据来匹配渲染位置。

将扩展发布到 SHOPLINE 时,配置文件内容会和你的扩展代码一并推送。

type = "checkout_ui_customizer"
name = "customizer-name"
extension_points = ['Checkout::Dynamic::Render']
[capabilities]
block_progress = true
# [settings]
# ....

配置属性

属性必填描述
type扩展的类型,对于结账 UI 扩展,此值固定为 checkout_ui_customizer
name结账 UI 扩展的名称
extension_points扩展将渲染的预设点,这个值必须与扩展代码 render(extensionPoint, App) 中的 extensionPoint 参数保持一致。 即,代码中的 extensionPoint 参数必须包含在 extension_points 属性里。

例如:扩展代码 render('Checkout::Dynamic::Render', (props) => { return <Text/>; }) 这样调用,则配置 extension_points 属性必须指定 Checkout::Dynamic::Render
capabilities定义 UI 扩展的能力
  • block_progress 布尔值
    • true:扩展具备阻断结账流程的能力
    • false(默认值):扩展不具备阻断结账流程的能力
  • network_access 布尔值
    • true:扩展具备访问网络的能力
    • false(默认值):扩展不具备访问网络的能力
settings定义了在结账编辑器中的 商家配置项

商家配置项

配置文件中的 [settings] 字段中定义了一组用户配置 [[settings.fields]],最终会呈现在结账编辑器中给商家填写。

例如:下方代码中设置了 2 个配置项,第一个配置项的 name 名称是 标题(将被呈现给商家查看),其类型是 single_line_text_field,即单行文本输入框,更多数据类型请查看 支持的数据类型。当然,你也可以对输入的数据进行校验,请查看 数据校验选项。随后商家可以在结账编辑器中输入字符,且这个字符最终会传入扩展中,在扩展中可以通过 settings.{key} 读取该值。

[settings]
[[settings.fields]]
key = "title"
type = "single_line_text_field"
name = "标题"
description = "标题描述"
[[settings.fields]]
key = "title2"
type = "single_line_text_field"
name = "标题2"
description = "标题描述2"
属性必填描述例子
key该配置的 key"title"
type配置的数据类型"single_line_text_field"
name配置的名称,其会向商家展示"标题"
description设置的描述,其会向商家展示"标题描述"
validations配置值的校验规则
[[settings.fields.validations]] 
name = "max",
value = "25"

支持的数据类型

类型描述例子
boolean布尔值,truefalsetrue
dateISO 8601 格式的日期1997-01-01
date_timeISO 8601 格式的日期和时间1997-01-01T00:00:00
single_line_text_field单行文本Title
multi_line_text_field多行文本
Title1
Title2
Title3
number_integer整数10
number_decimal小数10.4

数据校验选项

选项描述支持的数据类型例子
Minimum length文本值的最小长度
  • single_line_text_field
  • multi_line_text_field
[[settings.fields.validations]]
name = "min"
value = "1"
Maximum length文本值的最大长度
  • single_line_text_field
  • multi_line_text_field
[[settings.fields.validations]]
name = "max"
value = "20"
Regular expression正则表达式
  • single_line_text_field
  • multi_line_text_field
[[settings.fields.validations]]
name = "regex"
value = "^[0-9]*$"
Choices预定义选项的列表,用于限制配置项的值
  • single_line_text_field
[[settings.fields.validations]]
name = "choices"
value = "["yellow", "green", "red"]"
Minimum date最小日期,格式为 ISO 8601
  • date
[[settings.fields.validations]]
name = "min"
value = "1997-01-01"
Maximum date最大日期,格式为 ISO 8601
  • date
[[settings.fields.validations]]
name = "max"
value = "1997-03-03"
Minimum datetime最小日期时间,格式为 ISO 8601
  • date_time
[[settings.fields.validations]]
name = "min"
value = "1997-03-03T00:30:00"
Maximum datetime最大日期时间,格式为 ISO 8601
  • date_time
[[settings.fields.validations]]
name = "max"
value = "1997-03-03T17:30:00"
Minimum integer最小整数
  • number_integer
[[settings.fields.validations]]
name = "min"
value = "10"
Maximum integer最大整数
  • number_integer
[[settings.fields.validations]]
name = "max"
value = "20"
Minimum decimal最小小数
  • number_decimal
[[settings.fields.validations]]
name = "min"
value = "0.4"
Maximum decimal最大小数
  • number_decimal
[[settings.fields.validations]]
name = "max"
value = "2.99"
Maximum precision存储小数的最大小数位数
  • number_decimal
[[settings.fields.validations]]
name = "max_precision"
value = "3"

流程阻断

何时需要流程阻断

如果扩展依赖于某些特定信息输入、元素交互,则需要阻断买家的结账流程,直到买家把所有必要的信息都补充。你可以通过 Interceptor 拦截器返回 { success: false } 的方式进行流程阻断。

例如:你希望买家点击某个勾选框,以确保他们已经知晓某些信息后,再进行结账流程;此时则需要将配置文件的 capabilities 配置项设置为 block_progress = true

[capabilities]
block_progress = true

开启或关闭流程阻断

开启 block_progress 后,阻断流程不会立即生效,还需要商家在结账编辑器 应用行为 中勾选 允许应用阻止结账 来开启或关闭流程阻断。

配置

这篇文章对你有帮助吗?