使用Shopify如何在注册时捕获客户地址并将其保存为计费和运输的默认地址?

时间:2014-11-11 20:28:54

标签: shopify liquid

我正在创建一个shopify网站,我正在尝试对其进行自定义,因此当用户/客户注册时,他们可以将其地址信息放入其中,并将其保存为默认地址。 Shopify目前拥有它,所以你注册然后它会带你到一个帐户页面,你可以选择添加地址。

我尝试在注册页面上创建表单元素,就像它们显示和获取数据一样。 但我不知道如何使表单将地址数据提交到默认地址数据位置。 换句话说,我不知道如何将地址存储为默认地址。

我查看了实际地址页面的代码,并在注册部分尝试了id的名称和表单值中的插件,没有运气。我尝试过使用与api客户参考相关的id和名称,但也没有运气。我真的找不到关于这个主题的文档。有一节关于在注册时捕获其他信息,但其捕获的“注释”不是地址。

非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

我使用地址注册表创建了第二个帐户页面 (customers/account.new-address.liquid):

    {% assign formID = "" %}
    {% if formInfo.id %}
      {% assign formID = formInfo.id | prepend: "_"%}
    {% endif %}

    {% form 'customer_address', formInfo %}
      <div class="input-wrapper">
        <label for="customer_addresses_first_name{{ formID }}">{{ 'customer.addresses.first_name' | t }}</label>
        <input type="text" name="address[first_name]" value="{{form.first_name}}" id="customer_addresses_first_name{{ formID }}" />
      </div>
      <div class="input-wrapper">
        <label for="customer_addresses_last_name{{ formID }}">{{ 'customer.addresses.last_name' | t }}</label>
        <input type="text" name="address[last_name]" value="{{form.last_name}}" id="customer_addresses_last_name{{ formID }}" />
      </div>
      <div class="input-wrapper">
        <label for="customer_addresses_company{{ formID }}">{{ 'customer.addresses.company' | t }}</label>
        <input type="text" name="address[company]" value="{{form.company}}" id="customer_addresses_company{{ formID }}" />
      </div>
      <div class="input-wrapper">
        <label for="customer_addresses_address1{{ formID }}">{{ 'Street Address' }}</label>
        <input type="text" name="address[address1]" value="{{form.address1}}" id="customer_addresses_address1{{ formID }}" />
      </div>
      <div class="input-wrapper">
        <label for="customer_addresses_address2{{ formID }}">{{ 'Suburb' }}</label>
        <input type="text" name="address[address2]" value="{{form.address2}}" id="customer_addresses_address2{{ formID }}" />
      </div>
      <div class="input-wrapper">
        <label for="customer_addresses_city{{ formID }}">{{ 'customer.addresses.city' | t }}</label>
        <input type="text" name="address[city]" value="{{form.city}}" id="customer_addresses_city{{ formID }}" />
      </div>
      {% if isNew %}
        <div class="input-wrapper">
          <label for="address-country">{{ 'customer.addresses.country' | t }}</label>
          <div class="select-wrapper">
            <div class="selected-text"></div>
            <select id="address-country" name="address[country]" data-default="{{form.country}}">{{ country_option_tags }}</select>
          </div>
        </div>
        <div class="input-wrapper" id="address-province-container" style="display:none">
          <label for="address-province">{{ 'customer.addresses.province' | t }}</label>
          <div class="select-wrapper">
            <div class="selected-text"></div>
            <select id="address-province" class="new-address-province" name="address[province]" data-default="{{form.province}}"></select>
          </div>
        </div>
      {% else %}
        <div class="input-wrapper">
          <label for="address-country-{{form.id}}">{{ 'customer.addresses.country' | t }}</label>
          <div class="select-wrapper">
            <div class="selected-text"></div>
            <select id="address-country-{{form.id}}" name="address[country]" data-default="{{form.country}}">{{ country_option_tags }}</select>
          </div>
        </div>
        <div class="input-wrapper" id="address-province-container-{{ address.id }}" style="display:none">
          <label for="address-province-{{ address.id }}">{{ 'customer.addresses.province' | t }}</label>
          <div class="select-wrapper">
            <div class="selected-text"></div>
            <select id="address-province-{{ address.id }}" name="address[province]" data-default="{{form.province}}"></select>
          </div>
        </div>
      {% endif %}
      <div class="input-wrapper">
        <label for="customer_addresses_zip{{ formID }}">{{ 'customer.addresses.zip' | t }}</label>
        <input type="text" name="address[zip]" value="{{form.zip}}" id="customer_addresses_zip{{ formID }}" />
      </div>
      <div class="input-wrapper">
        <label for="customer_addresses_phone{{ formID }}">{{ 'customer.addresses.phone' | t }}</label>
        <input type="text" name="address[phone]" value="{{form.phone}}" id="customer_addresses_phone{{ formID }}" />
      </div>
      <div class="inline-input-wrapper">
        {% capture defaultAddressID %}
          {% if isNew %}
            address_default_address_new
          {% else %}
            address_default_address{{ formID }}
          {% endif %}
        {% endcapture %}
        <label for="{{ defaultAddressID | strip_newlines | strip}}">
          {{ form.set_as_default_checkbox }}
          <span class="inline-label">
            {{ 'customer.addresses.set_as_default' | t }}
          </span>
        </label>
      </div>
      <div class="input-wrapper cta-container">
        <input class="button" type="submit" id="submit{{ formID }}" value="{{ 'general.general.submit' | t }}">
        {% unless isNew %}
          <button class="cancel-edit button secondary">{{ 'customer.general.cancel' | t }}</button>
        {% endunless %}
        {% if customer.addresses.size > 0 and isNew %}
          <button class="toggle-new-address button secondary">{{ 'customer.general.cancel' | t }}</button>
        {% endif %}
      </div>
    {% endform %}

然后将以下代码添加到帐户页面的顶部 (customers/account.liquid),因此当客户在注册后访问帐户页面并且他们的个人资料中有 0 个地址时,他们将被重定向以添加地址:< /p>

{% if customer.addresses.size == 0 %}
<meta content="0; url=/account?view=new-address" http-equiv="refresh" />
{% endif %}

?view=new-address 是我们上面创建的备用帐户页面的链接。