質問: Debutテーマを利用して、現在会員登録ページを作成しています。 Debutでは会員登録した後デフォルトだとトップページに飛ばされますが(カートに商品がある場合はチェックアウトに飛ぶ)、そうではなくページ機能で作成した会員登録完了ページ(/pages/register_completed)にとばしたいと考えております。 そこで色々調べたところ、下のようなコードをtheme.liquidのタグの上に置いたら良いとか、 https://community.shopify.com/c/Shopify-Design/Redirect-after-customer-registration/td-p/293044/page... ``` ``` ``` ``` の方法が見つかりましたが、これらの方法では、確かに会員登録完了ページにリダイレクトしてくれますが、エラーがある時(項目を未入力、一度会員登録したことあるメアドで登録)であっても会員登録完了ページに遷移してしまいます。 エラーがある時は、会員登録ページに戻され、会員登録が成功したときだけ会員登録完了ページに飛ばす良い方法はないでしょうか? 解決済! ベストソリューションを見る。
回答: 横から失礼します。 的外れでしたら申し訳ありませんが拝見していて思いついたことがありますので以下記載したいと思います。無理やりな方法ではありますが。 ■案1 * 参考にされたサンプルコードでリダイレクト後の「会員登録完了ページ(/pages/register_completed)」に、{% unless customer %}で囲んだJSを記載し、そのJSでさらにTOPページにリダイレクトさせる 意図としましては以下のようになります。 * 新規登録が正常に完了した場合はログイン状態になるので、{% unless customer %}で登録成功の可否を判別可能 * 登録完了後にすべて「会員登録完了ページ」にリダイレクトさせ、「会員登録完了ページ」内で{% unless customer %}によって状態を判別 * 登録完了していない場合には{% unless customer %}内のJSで「登録ページ」にリダイレクト ■案2 案1を考えた際に少し方向が違う別案を思いつきましたのでそちらも一応記載します。趣旨によっては以下も検討できるのではと思います。 ページのタイトルやURLの名称と矛盾する状態になる可能性はありますが、JSのリダイレクトを使うよりはシンプルかもしれません。 * 「会員登録完了ページ」内の内容を{% if customer %}で分岐させ、「登録成功時」と「登録失敗時」の内容を出し分ける * 失敗時の方には失敗した旨や再登録を促す文言を記載し、「登録ページ」へのリンクを設置 以上ですが趣旨や状況を勘違いしていましたら申し訳ありません。