You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shopify用户注册后无法跳转至自定义欢迎页问题求助

注册成功后无法跳转到自定义欢迎页的解决求助

我希望用户完成账户注册后,能看到注册成功提示并跳转至我制作的欢迎页,但目前无法实现该跳转功能。

我的customer-register.liquid代码:

<div class="sm:container">  

<div class="customer-form">
    {%- if section.settings.image != blank -%}
      {{- section.settings.image | image_url: width: section.settings.image.width | image_tag: loading: 'lazy', sizes: '50vw', widths: '300,400,500,600,700,800,1000,1200,1400', class: 'customer-form__image rounded' -}}
    {%- endif -%}

    <div {% render 'surface', class: 'customer-form__box', background_gradient: section.settings.background_gradient, background: section.settings.background, text_color: section.settings.text_color, background_fallback: 'bg-secondary' %}>
      <div class="customer-form__box-inner text-center">
        <div  class="v-stack gap-12">
          <h1 class="h2">
            {%- assign content = 'customer.register.title' | t -%}
            {%- render 'styled-text', content: content, gradient: section.settings.heading_gradient -%}
          </h1>

          <div class="v-stack gap-6">
            {%- for block in section.blocks -%}
              {%- case block.type -%}
                {%- when '@app' -%}
                  {%- render block -%}

                {%- when 'liquid' -%}
                  {%- if block.settings.liquid != blank -%}
                    <div {{ block.shopify_attributes }}>
                      {{- block.settings.liquid -}}
                    </div>
                  {%- endif -%}

                {%- when 'fields' -%}
                  <div {{ block.shopify_attributes }}>
                    {%- form 'create_customer', class: 'form' -%}
                      <div class="fieldset">
                        {%- if form.errors -%}
                          {%- assign form_errors = form.errors | default_errors -%}
                          {%- render 'banner', status: 'error', content: form_errors -%}
                        {%- endif -%}

                        {%- if request.locale.iso_code == 'ja' -%}
                          {%- assign last_name_label = 'customer.register.last_name' | t -%}
                          {%- render 'input', name: 'customer[last_name]', label: last_name_label, autocomplete: 'family-name', required: true -%}

                          {%- assign first_name_label = 'customer.register.first_name' | t -%}
                          {%- render 'input', name: 'customer[first_name]', label: first_name_label, autocomplete: 'given-name', required: true -%}
                        {%- else -%}
                          {%- assign first_name_label = 'customer.register.first_name' | t -%}
                          {%- render 'input', name: 'customer[first_name]', label: first_name_label, autocomplete: 'given-name', required: true -%}

                          {%- assign last_name_label = 'customer.register.last_name' | t -%}
                          {%- render 'input', name: 'customer[last_name]', label: last_name_label, autocomplete: 'family-name', required: true -%}
                        {%- endif -%}

                        {%- assign email_label = 'customer.register.email' | t -%}
                        {%- render 'input', type: 'email', name: 'customer[email]', label: email_label, autocomplete: 'email', required: true -%}

                        {%- assign password_label = 'customer.register.password' | t -%}
                        {%- render 'input', type: 'password', name: 'customer[password]', label: password_label, minlength: 5, autocomplete: 'new-password', required: true -%}

                        {%- if block.settings.show_email_consent -%}
                          {%- assign consent_label = 'customer.register.accepts_marketing' | t -%}
                          {%- render 'checkbox', name: 'customer[accepts_marketing]', label: consent_label -%}
                        {%- endif -%}
                      </div>

                      {%- assign submit_label = 'customer.register.submit' | t -%}
                    {%- render 'button', content: submit_label, type: 'submit', size: 'xl', stretch: true, secondary: true, background: section.settings.button_background, text_color: section.settings.button_text_color -%}

                      <div>
                        <a href="{{ routes.account_login_url }}" class="link text-subdued">{{ 'customer.register.login' | t }}</a>
                      </div>
                    {%- endform -%}
                  </div>
              {%- endcase -%}
{% endschema %}

我尝试过的代码(无效):

<script> 
   (function() { 
     var REDIRECT_PATH = '/checkout'; 
   
     var selector = '#create_customer, form[action$="/account"][method="post"]', 
         $form = document.querySelectorAll(selector)[0]; 
   
     if ($form) { 
       $redirect = document.createElement('input'); 
       $redirect.setAttribute('name', 'return_to'); 
       $redirect.setAttribute('type', 'hidden'); 
       $redirect.value = REDIRECT_PATH; 
       $form.appendChild($redirect); 
     } 
   })(); 
 </script> 

解决方法:

1. 直接在Liquid表单中添加return_to隐藏字段(最可靠)

不需要依赖JS,直接在{% form 'create_customer' %}标签内部添加隐藏输入框,指定跳转路径:

{%- form 'create_customer', class: 'form' -%}
  <!-- 现有表单内容 -->
  <input type="hidden" name="return_to" value="/your-welcome-page">
  <!-- 提交按钮等内容 -->
{%- endform -%}

把/your-welcome-page替换成你实际的欢迎页路径。

2. 修正JS选择器问题

你之前的JS可能找不到表单,因为Shopify的create_customer表单默认ID不是create_customer,而是动态生成的。可以调整选择器为表单的class或者更准确的属性:

<script>
document.addEventListener('DOMContentLoaded', function() {
  const REDIRECT_PATH = '/your-welcome-page';
  // 通过表单的action属性匹配,确保DOM加载完成后执行
  const $form = document.querySelector('form[action*="/account"]');
  if ($form) {
    const $redirect = document.createElement('input');
    $redirect.setAttribute('name', 'return_to');
    $redirect.setAttribute('type', 'hidden');
    $redirect.value = REDIRECT_PATH;
    $form.appendChild($redirect);
  }
});
</script>

3. 添加注册成功提示

如果需要在欢迎页显示提示,可以在欢迎页的Liquid模板中添加:

{% if customer.last_created_at == customer.current_sign_in_at %}
  <div class="success-banner">注册成功!欢迎加入我们</div>
{% endif %}

这段代码会判断用户是否是刚注册登录,显示提示信息。


内容的提问来源于stack exchange,提问作者Naveer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 12:11:00