インターセプトが何をするか
Aftersell はテーマより先にカート追加の submit を待ち受けます。これを認識すると、次のことを行います:- イベントを止めて、ページ上のほかの何にもそのクリックが処理されないようにします。
- 追加を自分で Shopify に送信します。
- Aftersell Cart のドロワーを開きます。
なぜ存在するのか
これがないと、同じクリックに両方のカートが反応してしまいます。テーマがアイテムを追加して自分のドロワーを開き、Aftersell もそれを追加してあなたのドロワーを開き、買い物客にはカートが 2 つ、しばしばアイテムが 2 回追加された状態で表示されます。 イベントを止めることが、追加とカートを 1 つに保証するもっとも単純な方法です。その代償
イベントを止めるのは、テーマだけでなくすべてに対してです。同じカート追加を待ち受けているほかのコードは実行されなくなります。あなたのアナリティクス、トラッキングピクセル、サブスクリプションアプリやバンドルアプリ、自分で追加したスクリプトなどです。 失敗は静かに起きます。ブラウザのコンソールには何も出ませんし、追加自体は動作するので、目に見えて壊れているというよりも、数値がおかしいという症状が普通です:- GA4、Meta、TikTok から
add_to_cartイベントが欠落する - 商品ページでは動くのに、カート経由では動かないサブスクリプションアプリやバンドルアプリ
- フォームに対する自分の
addEventListenerが一度も発火しない
Aftersell がインターセプトしないとき
インターセプトは常にオンとは限りません。次の場合、Aftersell はカート追加をそのままにします:- テーマのカートを認識できる場合。 Aftersell が扱い方を知っているテーマでは、イベントをブロックする代わりにテーマ自身のカートを動かないようにし、テーマに通常どおり追加を実行させます。あなたのスクリプトは以前と同じように動きます。下記のどのテーマかを参照してください。
- フォームがラインアイテムを追加しない場合。 バリアント
idもitems[]も持たないフォームはそのままにされます。 - あなたが以下の方法のいずれかでオプトアウトしている場合。
Aftersell が認識するテーマ
Aftersell は名前ではなくテーマの作りかたで判別するため、これらから派生したカスタムテーマも通常は認識されます。Aftersell が一度も見たことのないプライベートビルドも含みます。
逆のこともあります。大幅にカスタマイズされたビルドは、名前としてはまだ “Dawn” でも、親テーマから十分に離れて Aftersell に認識されなくなる場合があります。このリストに載っていることは認識される可能性を高めますが、確実ではありません。
選択肢
問題を解決するもっとも狭い選択肢を選んでください。各行は上の行よりもっと多くを手放すことになります。選ぶ前に: 何が変わるか
オプトアウトすると追加をテーマに戻すことになるため、行を選ぶ前に答えておきたい 2 つの質問があります。カートは引き続き開くのか、そしてテーマのカートが横に現れるのかです。自分のカートは引き続き開くか?
たいていの場合は、こちらで何もしなくても開きます。追加を実行するのが誰であれ、Aftersell は Shopify に向かうリクエストを監視し、通常の Open cart when an item is added の設定に従って、それを見つけるとドロワーを開きます。自分で何かを呼び出す必要はありません。 これが崩れる状況は 3 つあり、いずれも対処法があります: 追加が Shopify のカートエンドポイント以外に送られる場合。 Aftersell は自分のドメイン上の/cart/add、/cart/change、/cart/update、/cart/clear を監視します。独自のエンドポイント経由で追加し、あとでカートを同期するアプリはこの監視からは見えません。そのアプリの追加が完了したあとで、自分でカートを開いてください:
open_on_add_to_cart: 'never' を設定している場合、何もドロワーを開きません。それは設定どおりの動作です。
テーマのカートも開いてしまう?
これはオプトアウトが伴うリスクで、答えはテーマ次第です。 テーマのカートを動かなくすることはインターセプトとは別で、いずれにせよページ読み込み時に発生します。ですので、ここでのオプトアウトのどれもそれをオンに戻しません。認識済みリストのテーマなら、テーマ自身のカートは静かなままで、買い物客に見えるのはあなたのカート 1 つだけです。 Aftersell が認識しないテーマでは、テーマのカートを抑えるものは何もありません。オプトアウトするとテーマは以前とまったく同じように追加を扱います。これには自分のドロワーを開くことや/cart へのリダイレクトが含まれます。同時に Aftersell は監視で見つけたリクエストからドロワーを開きます。これがカート 2 つの状態であり、そもそもインターセプトが存在する理由です。
そうなった場合、選択肢は 3 つです。そのフォームではインターセプトを有効なままにする、その原因のフォームをカバーしないより狭いオプトアウトを使う、あるいはテーマのコードでテーマ自身のカートを自分で止める、です。
これはカート追加のみに当てはまります。カートアイコンを
aftersell-cart-wont-open-cart クラスで Aftersell からバイパスさせるのは別の話です。カートアイコンのクリックはリクエストを送らないため、Aftersell に監視するものがなく、ドロワーは開きません。下記を参照してください。フォーム単位: コードでのルール
推奨される選択肢です。そのままにしたいフォームに対してtrue を返すルールを登録します:
true を返すルールがあればそのフォームはスキップされます。詳細はフックを参照してください。
フォーム単位: テーマでのクラス
ルールを書きたくない場合は、テーマでaftersell-cart-skip-atc クラスを追加してください:
フォーム送信の場合、クラスはフォーム要素そのものに付ける必要があります。親の
div では機能しません。フォーム送信を伴わずにカートに追加するボタンの場合、クラスはボタン自体や周りのどの要素に付けても構いません。ストア全体: インターセプトをオフにする
大雑把な選択肢です。すべてのフォームで、カート追加はテーマ本来のとおりに動きます:カートアイコンは別
ヘッダーのカートアイコンは、独自のインターセプターと独自のオプトアウトで扱われます。カート追加のインターセプトをオフにしても、カートアイコンの挙動は変わりません。その逆も同様です。 カートアイコンをクリックすると/cart へ移動する代わりに、Aftersell のドロワーが開きます。特定のアイコンやボタンだけをそのままにするには、それ自身か、周りのどれかの要素に aftersell-cart-wont-open-cart クラスを追加してください:
/cart へ遷移しないという挙動も維持されます。詳細は Configure を参照してください。
カートを開く要素をオフにするのではなく、どの要素がカートを開くかを変えるには、テーマを編集する代わりに Cart settings → Advanced → Cart icon selector を使ってください。
次のステップ
- Configure: ここで参照したものを含む、すべての SDK オプション。
- フック: フォーム単位・ライン単位の制御。
- ページビルダーからドロワーを開く: Replo、PageFly、GemPages、および独自の方法でカートに追加するカスタムボタン向け。