装修-检查模式-输入框编辑联动

装修-检查模式-输入框编辑联动

1.输入框编辑联动

编辑联动: 1.当输入框进行编辑内容,将即时的进行联动,这个通信是通过iframe通信实现的 2.当输入框内容编辑完成,鼠标点击其他的地方,输入框失去焦点,这个时候,才会调用api进行内容的临时保存 3.这样实现的好吃:可以进行编辑内容的即时联动,响应几乎没有延迟。又可以节省api调用资源

开发实现

一:对于卡片部分

1.打开文件 sections/cascading-collection.liquid, 先找到上面截图,标题部分对应的schema

  • id:heading
  • type:language_input (支持多语言的输入框)
{
  "type": "language_input",
  "id": "heading",
  "label": {
    "text": "标题",
    "lang_params": {
      "en": "Heading",
      "tw": "標題"
    }
  },
  "default": {
    "text": "Shop by collections",
    "lang_params": {
      "en": "Shop by collections",
      "tw": "按系列購物"
    }
  }
}

2.得到值

<!-- 获取值 -->
{% assign heading = section.settings.heading %}

<!-- 进行判断是否为空 -->
{% if heading != blank %} 
    <div class="{{ header_class }}">
      <div class="f-cascading__header-wrapper">
        <h3 class="{{ heading_size }}" data-key="settings.heading" >
          <!-- 显示值,使用filter language,得到相应的语言值 -->
          {{ heading | language }}
        </h3>
      </div>
    </div>
{% endif %}

您可以看到,显示值的外层html标签是<h3>, 里面有一个属性:data-key="settings.heading"

  • 卡片里面,进行即时联动,必须在值的外层html标签,加入属性:data-key
  • 值的格式:settings.xxx,在上面的schema里面的id为heading,因此,值为settings.heading
  • 因此,需要在<h3>加入一个属性data-key="settings.heading"

二:对于子卡片

子卡片的联动和卡片不同,如下图,级联专辑卡片的一个子卡片

1.我们先找到这个子卡片,专辑标题的schema配置

  • id:collection_title
  • type:language_input(支持多语言的输入框)
{
  "type": "language_input",
  "id": "collection_title",
  "label": {
    "text": "专辑标题",
    "lang_params": {
      "en": "Collection title",
      "tw": "专辑標題"
    }
  }
}

2.找到子卡片部分的代码

{%- for block_key in section.block_order -%}
  {% sectionblock block_key %}
   {%- assign block = section.blocks[block_key] -%}
    <div data-media-item>
      {% render 'cascade-collection-card', block: block %}
    </div>
  {% endsectionblock %}
  {{ item_separator }}
{% endfor %}

3.找到snippets文件

{% render 'cascade-collection-card', block: block %} 对应的是 snippets/cascade-collection-card.liquid

{% assign collection = block.settings.collection.section_item_param %}
{% assign collection_image = blank %}
{% if collection != blank %}
  {% assign collection_title = collection.title %}
  {% assign custom_collection_title = block.settings.collection_title | language %}

  {% if custom_collection_title != blank %}
    {% assign collection_title = custom_collection_title %}
  {% endif %}
{% else %}
  {% assign collection_title = 'Collection title' %}
{% endif %}

...

<!-- 这里进行显示子卡片对应的值 -->
<a
  class="f-cascading-collection-card__button f-button f-button--white"
  href="{{ collection.url | default: "#" }}"
  data-key="blocks.{{ block_key }}.collection_title"
>
  {{- collection_title -}}
</a>

{{- collection_title -}}是子卡片属性对应的值,外层html标签是<a>标签,该标签加入了属性:data-key="blocks.{{ block_key }}.collection_title"

  • 属性:data-key
  • 属性值:blocks.{{ block_key }}.collection_title, {{ block_key }}是子卡片的key,collection_title是在schema定义中id的值

因此,加入:data-key="blocks.{{ block_key }}.collection_title", 即可对子卡片进行选中。

三:联动-总结

1.输入框编辑即时联动,需要按照上面的逻辑进行加入diamante

2.输入框失去焦点,会调用api进行保存,因此。即使您不加入即时联动的代码,在输入框失去焦点后,也会api更新,因此并不影响装修

  • 如果您自己开发装修卡片,这个部分略显复杂,您也可以不做即时联动。
Copyright © fecify.com 2025 all right reserved,powered by Gitbook该文件修订时间: 2025-09-10 18:36:38

results matching ""

    No results matching ""