输入设置

输入设置可以保存值,并且商家可以对其进行配置。

输入设置通常由 标准属性 组成,分为两类:

要了解如何访问这些设置的值并在主题中使用它们,请参阅 设置概述

提示

如果想在设置显示中添加信息元素(例如标题),请参阅 侧边栏设置

标准属性

以下是在输入设置中通用的标准属性。根据输入类型的不同,可能会有额外的属性或某些属性不适用:

属性 描述 必填
type 设置类型,可以是 基础专用 输入设置类型中的任意一种。
id 设置 ID,用于访问该设置的值。
label 设置标签,将在主题编辑器中显示。
default 设置的默认值。
info 设置的附加信息文本。

基础输入设置

以下为基础输入设置类型:

checkbox

checkbox 类型的设置会生成一个复选框字段。此设置类型可用于切换功能的开启或关闭,例如是否显示公告栏。

例如,以下设置生成如下输出:

  1. {
  2. "type": "checkbox",
  3. "id": "show_announcement",
  4. "label": "显示公告",
  5. "default": true
  6. }

Input 设置 - 图1

访问 checkbox 类型设置的值时,数据以 布尔值 返回。

注意

如果未指定 default,则默认值为 false

number

number 类型的设置会生成一个数字字段。除了 标准属性 外,number 类型设置还具有以下属性:

属性 描述 必填
placeholder 输入字段的占位符值。这些值仅对 settings_schema.json 中定义的设置显示,对部分中定义的设置不显示。

您可以使用此设置类型捕获可变的数值,例如集合页面上每页显示的产品数量。

例如,以下设置生成如下输出:

  1. {
  2. "type": "number",
  3. "id": "products_per_page",
  4. "label": "每页产品数量",
  5. "default": 20
  6. }

Input 设置 - 图2

访问 number 类型设置的值时,数据以以下格式之一返回:

  • 数字
  • nil,如果未输入任何内容。

注意

default 属性是可选的。但值必须是数字而非字符串。未遵守此规则会导致错误。

radio

radio 类型的设置会生成一个单选按钮字段。除了 标准属性 外,radio 类型设置需要必填的 options 属性,该属性接受 valuelabel 定义的数组。

您可以使用此设置类型捕获多选项选择,例如页眉标志的对齐方式。

例如,以下设置生成如下输出:

  1. {
  2. "type": "radio",
  3. "id": "logo_aligment",
  4. "label": "标志对齐方式",
  5. "options": [
  6. {
  7. "value": "left",
  8. "label": "左对齐"
  9. },
  10. {
  11. "value": "centered",
  12. "label": "居中"
  13. }
  14. ],
  15. "default": "left"
  16. }

Input 设置 - 图3

访问 radio 类型设置的值时,数据以 字符串 返回。

注意

如果未指定 default,则默认选择第一个选项。

range

range 类型的设置会生成一个滑块字段和输入字段。除了 标准属性 外,range 类型设置还具有以下属性:

属性 描述 必填
min 输入的最小值
max 输入的最大值
step 滑块步长的增量大小,默认为 1(未指定时)。
unit 输入的单位,例如字体大小滑块可设置为 px

您可以使用此设置类型捕获可变的数值,例如字体大小。

您可以通过提供的滑块或直接在输入字段中输入值来更新 range 值:

  • 如果输入的值不符合 step 定义,则值会四舍五入到最近的步长。
  • 如果输入的值超出指定的 minmax 范围,则值会自动调整为 minmax

例如,以下设置生成如下输出:

  1. {
  2. "type": "range",
  3. "id": "font_size",
  4. "min": 12,
  5. "max": 24,
  6. "step": 1,
  7. "unit": "px",
  8. "label": "字体大小",
  9. "default": 16
  10. }

Input 设置 - 图4

访问 range 类型设置的值时,数据以 数字 返回。

注意

default 属性是必填的。minmaxstepdefault 属性不能为字符串值。未遵守此规则会导致错误。

select

select 类型的设置会根据特定条件生成 不同选择器字段。除了 标准属性 外,select 类型设置还具有以下属性:

select 类型设置支持的额外属性

属性 描述 必填
options 接收下拉菜单中每个选项的 value/label 定义数组。
group 可选属性,可添加到每个选项中以创建下拉菜单中的选项组。

选择器字段

以下条件会渲染选择器字段为 DropDownSegmentedControl

选择器字段的渲染条件

字段 渲染条件 输出
Dropdown - 使用了可选的 group 属性。
- 提供了超过五个选项。
- 选项过长可能导致溢出容器。
渲染为 DropDown 类型的选择器字段
SegmentedControl - 未使用可选的 group 属性。
- 提供了两到五个选项。
- 所有选项均可容纳在容器内且不会溢出。
渲染为 SegmentedControl 类型的选择器字段

您可以使用此设置类型捕获多选项选择,例如幻灯片文字的垂直对齐方式。

例如,以下设置生成如下输出:

  1. {
  2. "type": "select",
  3. "id": "vertical_alignment",
  4. "label": "垂直对齐方式",
  5. "options": [
  6. {
  7. "value": "top",
  8. "label": "顶部"
  9. },
  10. {
  11. "value": "middle",
  12. "label": "中部"
  13. },
  14. {
  15. "value": "bottom",
  16. "label": "底部"
  17. }
  18. ],
  19. "default": "middle"
  20. }

Input 设置 - 图5

但如果您的设置符合下拉字段 (DropDown) 的条件(例如选项超过五个),则会生成以下输出:

  1. {
  2. "type": "select",
  3. "id": "sizes",
  4. "label": "尺寸",
  5. "options": [
  6. {
  7. "value": "xs",
  8. "label": "极小号"
  9. },
  10. {
  11. "value": "s",
  12. "label": "小号"
  13. },
  14. {
  15. "value": "m",
  16. "label": "中号"
  17. },
  18. {
  19. "value": "l",
  20. "label": "大号"
  21. },
  22. {
  23. "value": "xl",
  24. "label": "加大号"
  25. },
  26. {
  27. "value": "xxl",
  28. "label": "特大号"
  29. }
  30. ],
  31. "default": "m"
  32. }

Input 设置 - 图6

访问 select 类型设置的值时,数据以 字符串 返回。

注意

如果未指定 default,则默认选择第一个选项。

text

类型为 text 的设置会输出一个单行文本字段。除了 标准属性 之外,text 类型的设置还具有以下属性:

属性 描述 必填
placeholder 输入框的占位符值。这些值仅在 settings_schema.json 中定义的设置中显示,不会在部分(section)的 schema 中定义的设置中显示。

你可以使用这种设置类型来捕获短字符串,例如标题。

例如,以下设置会生成以下输出:

  1. {
  2. "type": "text",
  3. "id": "footer_linklist_title",
  4. "label": "标题",
  5. "default": "快速链接"
  6. }

Input 设置 - 图7

当访问 text 类型设置的值时,数据会以以下格式之一返回:

提示

切换预设时,text 类型的设置不会更新。

textarea

类型为 textarea 的设置会输出一个多行文本字段。除了 标准属性 之外,textarea 类型的设置还具有以下属性:

属性 描述 必填
placeholder 输入框的占位符值。这些值仅在 settings_schema.json 中定义的设置中显示,不会在部分(section)的 schema 中定义的设置中显示。

你可以使用这种设置类型来捕获大段文本,例如消息。

例如,以下设置会生成以下输出:

  1. {
  2. "type": "textarea",
  3. "id": "home_welcome_message",
  4. "label": "欢迎信息",
  5. "default": "欢迎光临我的店铺!"
  6. }

Input 设置 - 图8

当访问 textarea 类型设置的值时,数据会以以下格式之一返回:

专用输入设置

以下是一些专用输入设置类型:

article

类型为 article 的设置会输出一个文章选择器字段,该字段会自动填充商店中可用的文章。你可以使用这种设置类型来捕获文章选择,例如选择要在主页上展示的文章。

例如,以下设置会生成以下输出:

  1. {
  2. "type": "article",
  3. "id": "article",
  4. "label": "文章"
  5. }

Input 设置 - 图9

当访问 article 类型设置的值时,数据会以以下格式之一返回:

注意

类型为 article 的设置在切换预设 Preset 时不会更新。article 设置也不支持 default 属性。

blog

类型为 blog 的设置会生成一个自动填充商店可用博客的博客选择字段。你可以使用这种设置类型来捕获博客选择,例如选择要在侧边栏中展示的博客。

例如,以下设置会生成以下输出:

  1. {
  2. "type": "blog",
  3. "id": "blog",
  4. "label": "博客 Blog"
  5. }

Input 设置 - 图10

访问 blog 类型设置的值时,数据会以以下格式之一返回:

注意

类型为 blog 的设置在切换预设 Preset 时不会更新。blog 设置也不支持 default 属性。

collection

类型为 collection 的设置会生成一个自动填充商店可用集合的集合选择字段。你可以使用这种设置类型来捕获集合选择,例如选择要在首页展示产品的集合。

例如,以下设置会生成以下输出:

  1. {
  2. "type": "collection",
  3. "id": "collection",
  4. "label": "集合 Collection"
  5. }

Input 设置 - 图11

访问 collection 类型设置的值时,数据会以以下格式之一返回:

注意

类型为 collection 的设置在切换预设 Preset 时不会更新。collection 设置也不支持 default 属性。

collection_list

类型为 collection_list 的设置会生成一个自动填充商店可用集合的集合选择字段。你可以使用这种设置类型来捕获多个集合,例如选择一组要在首页展示的集合。

除了 标准属性 之外,collection_list 类型设置还具有以下属性:

属性 Attribute 描述 Description 必填 Required
limit 商户可以选择的最大集合数量。默认限制和可设置的最大限制是 50。 否 No
  1. {
  2. "type": "collection_list",
  3. "id": "collection_list",
  4. "label": "集合 Collections",
  5. "limit": 8
  6. }

Input 设置 - 图12
Input 设置 - 图13

访问 collection_list 类型设置的值时,数据会以以下格式之一返回:

  • 一个 collection 对象 数组。

    该数组支持使用 paginate 标签进行分页。你也可以在 设置键 后追加 .count 来返回数组中集合的数量。

  • blank,如果未进行选择、选择不可见,或者选择已不存在

color

类型为 color 的设置会生成一个颜色选择器字段。你可以使用这种设置类型来捕获各种主题元素的颜色选择,比如正文文本颜色。

例如,以下设置会生成以下输出:

  1. {
  2. "type": "color",
  3. "id": "body_text",
  4. "label": "Body text",
  5. "default": "#000000"
  6. }

Input 设置 - 图14

当访问 color 类型设置的值时,数据会以以下格式之一返回:

  • 一个 color 对象
  • 如果未进行选择,则返回 blank

color_background

类型为 color_background 的设置会生成一个文本字段,用于输入 CSS background 属性。你可以使用这种设置类型来捕获各种主题元素的背景设置,比如商店背景。

警告

color_background 类型的设置不支持与图像相关的背景属性。

例如,以下设置会生成以下输出:

  1. {
  2. "type": "color_background",
  3. "id": "background",
  4. "label": "Background",
  5. "default": "linear-gradient(#ffffff, #000000)"
  6. }

Input 设置 - 图15

当访问 color_background 类型设置的值时,数据会以以下格式之一返回:

  • 一个 字符串
  • 如果未输入任何内容,则返回空字符串。

color_scheme

类型为 color_scheme 的设置会生成一个包含所有可用主题颜色方案的选取器,并预览所选颜色方案。选取器中的主题颜色方案通过 color_scheme_group 设置定义。你可以将颜色方案应用于区块、模块和通用主题设置。颜色方案设置在 App 区块中不支持。

例如,以下设置会生成以下输出:

  1. {
  2. "type": "color_scheme",
  3. "id": "color_scheme",
  4. "default": "scheme_1",
  5. "label": "Color scheme"
  6. }

Input 设置 - 图16

当访问 color_scheme 类型设置的值时,Shopify 会返回从 color_scheme_group 中选中的 color_scheme 对象。

如果未输入值,或者值无效,则返回 color_scheme 中的默认值。如果默认值也无效,则返回 color_scheme_group 中的第一个 color_scheme

如果主题的 settings_data.json 中没有 color_scheme_group 数据,则返回 nil

color_scheme_group

一种 color_scheme_group 类型的设置会输出由以下输入设置类型组成的颜色方案:

  • header
  • color
  • color_background

颜色方案只能在 settings_schema.json 中添加。

例如,以下设置会生成以下输出:

  1. {
  2. "type": "color_scheme_group",
  3. "id": "color_schemes",
  4. "definition": [
  5. {
  6. "type": "color",
  7. "id": "background",
  8. "label": "t:settings_schema.colors.settings.background.label",
  9. "default": "#FFFFFF"
  10. },
  11. {
  12. "type": "color_background",
  13. "id": "background_gradient",
  14. "label": "t:settings_schema.colors.settings.background_gradient.label",
  15. "info": "t:settings_schema.colors.settings.background_gradient.info"
  16. },
  17. {
  18. "type": "color",
  19. "id": "text",
  20. "label": "t:settings_schema.colors.settings.text.label",
  21. "default": "#121212"
  22. },
  23. {
  24. "type": "color",
  25. "id": "button",
  26. "label": "t:settings_schema.colors.settings.button_background.label",
  27. "default": "#121212"
  28. },
  29. {
  30. "type": "color",
  31. "id": "button_label",
  32. "label": "t:settings_schema.colors.settings.button_label.label",
  33. "default": "#FFFFFF"
  34. },
  35. {
  36. "type": "color",
  37. "id": "secondary_button_label",
  38. "label": "t:settings_schema.colors.settings.secondary_button_label.label",
  39. "default": "#121212"
  40. },
  41. {
  42. "type": "color",
  43. "id": "shadow",
  44. "label": "t:settings_schema.colors.settings.shadow.label",
  45. "default": "#121212"
  46. }
  47. ],
  48. "role": {
  49. "text": "text",
  50. "background": {
  51. "solid": "background",
  52. "gradient": "background_gradient"
  53. },
  54. "links": "secondary_button_label",
  55. "icons": "text",
  56. "primary_button": "button",
  57. "on_primary_button": "button_label",
  58. "primary_button_border": "button",
  59. "secondary_button": "background",
  60. "on_secondary_button": "secondary_button_label",
  61. "secondary_button_border": "secondary_button_label"
  62. }
  63. }

Input 设置 - 图17

role

role 字段会输出颜色方案预览。颜色方案预览会在编辑器中商家可能选择颜色方案的任何地方显示。你可以为颜色方案定义分配角色,以将颜色方案映射到预览。例如,你可以将 role.background 分配给 Background 定义。role 使用以下标准化映射将 color_scheme_group 定义与颜色方案预览关联:

Role 描述 必填? 是否支持渐变?
role.background 渲染预览的背景颜色 可选
role.text 渲染预览的文本颜色
role.primary_button role.secondary_button 渲染预览中的第一个和第二个药丸按钮 可选
role.primary_button_border role.secondary_button_border 渲染预览中第一个和第二个药丸按钮的边框
role.on_primary_button role.on_secondary_button 预览中不使用
role.links role.icons 预览中不使用

Input 设置 - 图18

font_picker

一种 font_picker 类型的设置会输出一个字体选择器字段,该字段会自动填充 Shopify 字体库 中的字体。该字体库包括网页安全字体、部分 Google Fonts 和 Monotype 授权的字体。

你可以使用此设置类型来捕获各种主题元素的字体选择,例如基础标题字体。

例如,以下设置会生成以下输出:

  1. {
  2. "type": "font_picker",
  3. "id": "heading_font",
  4. "label": "Heading font",
  5. "default": "helvetica_n4"
  6. }

当访问 font_picker 类型设置的值时,数据会以 font 对象 的形式返回。

注意事项

default 属性是必填的。如果未包含此属性会导致错误。你可以通过 Shopify 字体库中的 可用字体 查找可能的值。

html

一种 html 类型的设置会输出一个多行文本字段,接受 HTML 标记。除了输入设置的 标准属性 外,html 类型的设置还有以下属性:

属性 描述 必填
placeholder 输入的占位符值

你可以使用此设置类型来捕获自定义的 HTML 内容块,例如视频嵌入。

例如,以下设置会生成以下输出:

  1. {
  2. "type": "html",
  3. "id": "video_embed",
  4. "label": "Video embed"
  5. }

Input 设置 - 图19

以下 HTML 标签会被自动移除:

  • <html>
  • <head>
  • <body>

当访问 html 类型设置的值时,数据会以以下格式之一返回:

注意

保存设置时,未闭合的 HTML 标签会自动闭合。这可能与你的预期格式不一致,因此请务必验证输入内容。

image_picker

一种 image_picker 类型的设置会输出一个图像选择器字段,该字段会自动填充 Shopify 后台 Files 部分中的可用图像,并支持上传新图像。商家还可以为图像输入替代文本并选择 焦点

你可以使用此设置类型来捕获图像选择,例如标志、favicon 和轮播图图像。

例如,以下设置会生成以下输出:

  1. {
  2. "type": "image_picker",
  3. "id": "image_with_text_image",
  4. "label": "Image"
  5. }

Input 设置 - 图20

Input 设置 - 图21

当访问 image_picker 类型设置的值时,数据会以以下格式之一返回:

  • 一个 image 对象
  • 如果未进行选择或选择已不存在,则返回 nil

注意

image_picker 类型的设置在切换预设时不会更新。image_picker 设置也不支持 default 属性。

图像焦点

通过 image_picker 设置选择的图像支持焦点。焦点是商家希望在主题裁剪和调整图像时保留在视图中的位置。焦点可以在主题编辑器的 image_picker 设置中设置,也可以从 Files 页面设置。

为确保你的主题尊重图像的焦点,请执行以下操作:

  • 使用 image_tag 过滤器渲染图像。
  • 考虑使用 object-fit: cover 在容器中定位图像。

使用 image_tag,如果提供了焦点,则会在图像标签中添加 object-position 样式,值设置为焦点位置。

  1. {{ section.settings.image_with_text_image | image_url: width: 1500 | image_tag }}

输出

  1. <img src="octopus-tentacle.jpg?v=1&width=1500" alt="My alt text"
  2. srcset="octopus-tentacle.jpg?v=1&width=352 352w,
  3. octopus-tentacle.jpg?v=1&width=832 832w,
  4. octopus-tentacle.jpg?v=1&width=1200 1200w"
  5. width="1500" height="1875"
  6. style="object-position:25% 10%;">

如果需要针对特定用例覆盖 object-position 样式,则向 image_tag 过滤器传递 style: object-position: inherit; 属性。

提示

你可以通过 image.presentation.focal_point 访问焦点数据。

inline_richtext

类型为 inline_richtext 的设置会输出未被段落标签(<p>)包裹的 HTML 标记。该设置包含以下基础格式选项:

  • 粗体
  • 斜体
  • 链接

注意

inline_richtext 设置不支持以下功能:

  • 换行符(<br>
  • 富文本编辑器中的下划线选项。商家可以通过 Command+UControl+U 快捷键对文本添加下划线。

你可以使用此设置类型来捕获格式化的文本内容,例如首页上的品牌介绍内容。

例如,以下设置会生成以下输出:

  1. {
  2. "type": "inline_richtext",
  3. "id": "inline",
  4. "default": "my <i>inline</i> <b>text</b>",
  5. "label": "Inline rich text"
  6. }

Input 设置 - 图22

访问 inline_richtext 类型设置的值时,数据以以下格式之一返回:

link_list

类型为 link_list 的设置会输出一个菜单选择字段,该字段会自动填充商店的可用菜单。你可以使用此设置类型来捕获菜单选择,例如页脚链接使用的菜单。

例如,以下设置会生成以下输出:

  1. {
  2. "type": "link_list",
  3. "id": "menu",
  4. "label": "Menu"
  5. }

Input 设置 - 图23

访问 link_list 类型设置的值时,数据以以下格式之一返回:

  • linklist 对象
  • 如果未进行选择或选择已不存在,则返回 blank

注意

default 属性的可接受值为 main-menufooter

liquid

类型为 liquid 的设置会输出一个多行文本字段,该字段接受 HTML 和 有限制的 Liquid 标记。你可以使用此设置类型来捕获自定义的 HTML 和 Liquid 内容块,例如产品特定消息。商家还可以使用 liquid 设置来添加代码,以将某些类型的 应用 集成到你的主题中。

例如,以下设置会生成以下输出:

  1. {
  2. "type": "liquid",
  3. "id": "battery_message",
  4. "label": "Battery message",
  5. "default": "{% if product.tags contains 'battery' %}This product can only be shipped by ground.{% else %}This product can be shipped by ground or air.{% endif %}"
  6. }

Input 设置 - 图24

访问 liquid 类型设置的值时,数据以以下格式之一返回:

注意

default 属性是可选的。但如果你使用它,则其值不能是空字符串。此外,保存设置时未闭合的 HTML 标签会自动闭合。这可能与你的预期格式不一致,因此请务必验证输入内容。

限制

liquid 类型的设置无法访问以下 Liquid 对象/标签:

liquid 设置可以访问以下内容:

如果内容包含不存在或为空的 Liquid 标签,则它们会被渲染为空字符串。例如,以下设置会生成以下输出:

  1. {
  2. "type": "liquid",
  3. "id": "message",
  4. "label": "Message",
  5. "default": "Hello {{ not_a_real_tag }}, welcome to our shop."
  6. }
  1. Hello , welcome to our shop.

警告

在这些设置中输入的内容不能超过 50KB。保存超出此限制或包含无效 Liquid 的内容会导致错误。

metaobject

metaobject 设置允许商家通过选择器界面选择指定类型的 metaobject 条目。此设置支持标准和自定义的 metaobject 定义:

  1. 标准 metaobject 定义:这些在主题编辑器中即刻可用,无需在商店中预先启用。一个标准 metaobject 的例子是 product_review metaobject。了解更多 关于当前标准 metaobject 定义。
  2. 自定义 metaobject 定义:这些专为自定义主题设计,要求 metaobject 定义已存在。注意,Theme Store 中列出的主题不允许使用自定义 metaobject 定义。一个自定义 metaobject 的例子是 author metaobject。

此外,应用程序可以使用其自己的应用程序拥有的 metaobject 定义和条目来利用 metaobject 设置。

metaobject 类型的设置除了具有 输入设置的标准属性 外,还具有以下属性:

属性 描述 必需
metaobject_type 选择器允许的 metaobject 类型。

metaobject 设置的值可以是以下格式之一:

  • metaobject 对象
  • 如果未进行选择、选择不可见或选择已不存在,则返回 blank

标准 metaobject 示例

  1. {
  2. "type": "metaobject",
  3. "id": "my_material_setting",
  4. "label": "Material",
  5. "metaobject_type": "shopify--material"
  6. }

Input 设置 - 图25

自定义 metaobject 示例

  1. {
  2. "type": "metaobject",
  3. "id": "my_artist",
  4. "label": "Artist",
  5. "metaobject_type": "artist"
  6. }

Input 设置 - 图26

限制

  • 同一时间仅支持一个 metaobject_type,如设置模式中定义的那样。
  • 为了使主题符合 Shopify Theme Store 的 发布指南,只能使用标准定义。不能使用自定义或应用程序拥有的定义。
  • 当引用 自定义应用程序创建的 metaobject_type 时,定义必须存在于商店中并可供 storefront 使用。如果任一条件未满足,设置会在主题编辑器中显示错误。

在应用中的使用

应用可以通过其应用模块或嵌入组件中的 metaobject 设置来增强主题功能。通过在 保留命名空间(reserved namespaces) 下创建 metaobject 定义,应用可以为商家提供高级配置选项,同时保持简单的用户体验。

举个例子,假设有一个旨在通过客户证言提升品牌叙事的应用。以下是可能的实现步骤:

  1. 创建一个名为 Customer Testimonial 的自定义 metaobject 定义
  2. 使用应用模块在购买后页面收集客户数据
  3. 将这些数据写入 Customer Testimonial metaobject 条目
  4. 提供一个 Testimonial 应用模块,并添加一个 metaobject 设置,使用 Customer Testimonial metaobject 类型
  5. 在 Liquid 中访问 metaobject 设置值,以展示选中的证言
  1. {
  2. "type": "metaobject",
  3. "id": "my_testimonial",
  4. "label": "Testimonial",
  5. "metaobject_type": "app--<appid>-testimonial"
  6. }

metaobject_list

metaobject_list 设置允许商家通过选择器界面选择多个指定类型的 metaobject 条目。此设置支持标准和自定义 metaobject 定义:

  1. 标准 metaobject 定义:这些定义在主题编辑器中直接可用,无需预先在商店中启用。例如 product_review metaobject。了解更多 当前标准 metaobject 定义。
  2. 自定义 metaobject 定义:这些定义专为自定义主题设计,要求 metaobject 定义已存在。注意:Theme Store 列表中的主题不允许使用自定义 metaobject 定义。例如 author metaobject。

此外,应用可以利用 metaobject_list 设置与自身的应用拥有的 metaobject 定义和条目结合使用。

metaobject_list 类型的设置具有以下属性(除 标准属性(standard attributes) 外):

属性 描述 必填
limit 商家可选择的最大条目数。默认和最大限制为 50。
metaobject_type 选择器允许的 metaobject 类型。

metaobject_list 设置值可以是以下格式之一:

  • 一个 metaobject 对象 的数组
    该数组支持使用 paginate 标签进行分页。你也可以在 设置键(setting key) 后追加 .count 以返回数组中 metaobject 条目的数量。
  • 如果未选择内容、选择不可见或选择已不存在,则返回 blank

标准 metaobject 列表示例

  1. {
  2. "type": "metaobject_list",
  3. "id": "my_material_list_setting",
  4. "label": "Materials",
  5. "metaobject_type": "shopify--material",
  6. "limit": 12
  7. }

自定义 metaobject 列表示例

  1. {
  2. "type": "metaobject_list",
  3. "id": "my_artist_list",
  4. "label": "Artists",
  5. "metaobject_type": "artist",
  6. "limit": 12
  7. }

限制

  • 每个设置仅支持一种 metaobject_type,由设置的 schema 定义。
  • 为了符合 Shopify Theme Store 的 发布指南(publishing guidelines),主题不能使用自定义或应用拥有的定义。
  • 当引用 自定义应用创建的 metaobject_type 时,定义必须存在于商店中并向 storefront 可用。若任一条件未满足,主题编辑器中的设置将显示错误。

在应用中的使用

应用可以在其应用模块或嵌入组件中使用 metaobject_list 设置来增强主题功能。通过在 保留命名空间(reserved namespaces) 下创建 metaobject 定义,应用可以为商家提供高级配置选项,同时保持简单的用户体验。使用上述 示例(example) 中的 Testimonials 应用模块,商家可以选择多个证言条目。metaobject_list 设置使这一实现成为可能。

  1. {
  2. "type": "metaobject_list",
  3. "id": "my_testimonial_list",
  4. "label": "Testimonials list",
  5. "metaobject_type": "app--<appid>-testimonial",
  6. "limit": 12
  7. }

page

page 类型的设置会输出一个自动填充商店可用页面的页面选择器字段。你可以使用此设置类型捕获页面选择,例如在尺码表展示中选择要显示内容的页面。

例如,以下设置生成如下输出:

  1. {
  2. "type": "page",
  3. "id": "page",
  4. "label": "Page"
  5. }

当访问 page 类型设置的值时,数据以以下格式之一返回:

注意

切换预设时,page 类型的设置不会更新。page 设置也不支持 default 属性。

product

product 类型的设置会输出一个自动填充商店可用产品的商品选择器字段。你可以使用此设置类型捕获商品选择,例如在首页上展示的商品。

例如,以下设置生成如下输出:

  1. {
  2. "type": "product",
  3. "id": "product",
  4. "label": "Product"
  5. }

当访问 product 类型设置的值时,数据以以下格式之一返回:

注意

类型为 product 的设置在切换预设时不会更新。product 类型的设置也不支持 default 属性。

product_list

类型为 product_list 的设置会输出一个产品选择器字段,该字段会自动填充商店中可用的产品。你可以使用此设置类型来捕获多个产品,例如在首页上展示的一组产品。

注意

只能从已发布到在线商店且状态为 active 的产品中进行选择。

除了 标准属性 之外,product_list 类型的设置还支持以下属性:

属性 描述 必填
limit 商家可以选择的最大产品数量。默认限制和最大限制均为 50。
  1. {
  2. "type": "product_list",
  3. "id": "product_list",
  4. "label": "Products",
  5. "limit": 12
  6. }

Input 设置 - 图27

当访问 product_list 类型设置的值时,数据会以以下格式之一返回:

  • 包含 product 对象 的数组。
    该数组支持通过 paginate 标签进行分页。你也可以在 设置键 后添加 .count 来返回数组中的产品数量。
  • 如果未进行选择、选择不可见或选择已不存在,则返回 blank

richtext

类型为 richtext 的设置会输出一个多行文本字段,支持以下基本格式选项:

  • 加粗
  • 斜体
  • 下划线
  • 链接
  • 段落
  • 无序列表

注意

富文本组件中不会显示下划线选项。商家可以通过 Command+UControl+U 键盘快捷键添加下划线。

你可以使用此设置类型来捕获格式化文本内容,例如首页上的品牌介绍内容。

例如,以下设置会生成以下输出:

  1. {
  2. "type": "richtext",
  3. "id": "paragraph",
  4. "label": "Paragraph"
  5. }

Input 设置 - 图28

当访问 richtext 类型设置的值时,数据会以以下格式之一返回:

default

default 属性不是必填项。但如果使用它,则仅支持 <p><ul> 标签作为顶级元素。

以下 HTML 标签也支持在父级 <p> 标签内使用:

  • <p>
  • <br>
  • <strong>
  • <b>
  • <em>
  • <i>
  • <u>
  • <span>
  • <a>

注意

如果未将 default 内容包裹在 <p><ul> 标签中,会导致错误。

text_alignment

类型为 text_alignment 的设置会输出一个带图标的 SegmentedControl 字段。除了 标准属性 之外,text_alignment 类型的设置还支持以下属性:

text_alignment 类型设置支持的附加属性

属性 描述 必填
Default 初始选择值。可以是 leftrightcenter 中的一个。默认值为 left

以下默认值无法更改为其他值:

图标展示
Left /assets/themes/settings/specialized/text-alignment-left.png
Right /assets/themes/settings/specialized/text-alignment-right.png
Center /assets/themes/settings/specialized/text-alignment-center.png

例如,以下设置会生成以下输出:

  1. {
  2. "type": "text_alignment",
  3. "id": "alignment",
  4. "label": "Text alignment",
  5. "default": "center"
  6. }

Input 设置 - 图32

当访问 text_alignment 类型设置的值时,数据会以 字符串 格式返回。

注意

如果未指定 default 属性,则默认选择 left

url

类型为 url 的设置会输出一个 URL 输入字段,你可以手动输入外部 URL 或相对路径。它还有一个自动填充以下商店可用资源的选取器:

  • 文章
  • 博客
  • 集合
  • 页面
  • 产品

你可以使用此设置类型来捕获 URL 选择,例如幻灯片按钮链接要使用的 URL。

例如,以下设置会生成以下输出:

  1. {
  2. "type": "url",
  3. "id": "button_link",
  4. "label": "Button link"
  5. }

Input 设置 - 图33

当访问 url 类型设置的值时,数据会以以下格式之一返回:

  • 包含所选 URL 的 字符串
  • 如果未输入内容,则返回 nil

注意

default 属性的可接受值为 /collections/collections/all

video

类型为 video 的设置会输出一个视频选择器,该选择器会自动从 Shopify 管理后台的 Files(文件) 部分中填充可用的视频。商家还可以选择上传新的视频。

例如,以下设置会生成如下输出:

  1. {
  2. "type": "video",
  3. "id": "video",
  4. "label": "A Shopify-hosted video"
  5. }

Input 设置 - 图34

video 类型的设置还支持类型为 file_reference 的 metafields 作为 动态源

当访问 video 类型设置的值时,数据会以以下格式之一返回:

  • 一个 video 对象
  • nil,如果:
    • 未进行任何选择,
    • 选择的视频已不存在,或
    • 选择的是指向非视频文件的 file_reference metafield。

注意

video 设置不支持 default 属性。


video_url

类型为 video_url 的设置会输出一个 URL 输入字段。除了输入设置的标准属性外,video_url 类型设置还包含以下属性:

属性 描述 是否必需
accept 接受的视频提供商数组。有效值为 youtubevimeo 或两者。
placeholder 输入框的提示值。

此设置类型可用于捕获来自 YouTube 和/或 Vimeo 的视频 URL,例如产品描述中静态视频的 URL。

例如,以下设置会生成如下输出:

  1. {
  2. "type": "video_url",
  3. "id": "product_description_video",
  4. "label": "Product description video",
  5. "accept": [
  6. "youtube",
  7. "vimeo"
  8. ]
  9. }

Input 设置 - 图35

当访问 video_url 类型设置的值时,数据会以以下格式之一返回:

  • 一个 字符串,包含输入的 URL。
  • nil,如果未输入任何内容。

此外,还可以访问视频的 idtype(YouTube 或 Vimeo)。

例如,假设你使用了 这个视频,并通过上述设置调用,以下 Liquid 代码会生成如下输出:

  1. ID: {{ settings.product_description_video.id }}
  2. Type: {{ settings.product_description_video.type }}
  1. ID: _9VUPq3SxOc
  2. Type: youtube

创建链接

你可以通过将链接文本用方括号包裹,并在其后立即用括号添加 URL 的方式,在 info 设置属性中添加链接。

例如,以下设置会生成如下输出:

  1. {
  2. "type": "checkbox",
  3. "id": "enable_payment_button",
  4. "label": "Show dynamic checkout button",
  5. "info": "Each customer will see their preferred payment method [Learn more](https://help.shopify.com/manual/online-store/dynamic-checkout)",
  6. "default": true
  7. },

Input 设置 - 图36


  1. 所有技术术语(如 LiquidmetafieldsShopify admin 等)均保留原英文,符合 Shopify 官方文档规范。
  2. 链接和代码格式严格按照原文保留,确保可直接复制使用。
  3. 翻译内容完全基于原文,未添加额外信息。

Input 设置 - 图37