メインコンテンツへスキップ

カスタムストアフロントとは?

アプリのウィジェットを使用せず、アプリのデータを活用することで、アプリウィジェットでは実現できない、サイトデザイントンマナに合わせた実装を行うことが可能です。

活用例

  • クーポンをポップアップで表示させるのではなく、「クーポン一覧画面」として別ページで用意したい場合
  • ポップアップ表示デザインを大幅に変更したい場合
  • Shopifyと外部サービスをつなぎこみを行っており、外部サービス側でクーポン一覧画面を表示したい場合

注意点

  • コードに関する質問に関しては、テーマによって、詳細が異なるため回答が難しいです
  • 有償での対応となります
お付き合いのある制作会社にお問い合わせ下さい。※弊社より制作会社をご紹介する事も可能のため、お問い合わせくださいませ。
以下の内容はShopify制作会社・エンジニア向けの情報となります

エンジニア向け実装ガイド

クーポンの開始前・終了後の非表示は、アプリブロック(テーマ・マイページ・チェックアウト)の中で、表示のたびに判定しています。メタフィールドには開始前のクーポンが含まれることがあるため、独自に実装する場合は必ず同じ判定を組み込んでください。詳しくは下の「独自実装で必要な処理」をご覧ください。

概要

Discount Deckでは、顧客のクーポン情報をShopifyの顧客メタフィールドに圧縮保存しています。 圧縮形式: gzip圧縮 + Base64エンコード(フィールド名短縮化済み)

メタフィールド情報

  • namespace: discount-deck
  • key: discount-code-list (全Extension共通)
  • type: json

圧縮データ例(メタフィールドに入っている実際の値)

技術要件

必須ライブラリ

pako.js - gzip圧縮/展開ライブラリ

事前準備: npm導入(React/TypeScript環境)

こちらの2つのコマンドを叩き、npmの導入を行ってください

データ変換フロー

フロントエンド実装の流れ

  1. メタフィールドから圧縮データを取得
  2. Base64デコード + gzip展開
  3. 短縮形データ(JSON)を取得
  4. 開始前・終了後のクーポンを除いて表示(下の「独自実装で必要な処理」を参照)
という形での実装となります。

各段階のデータ形式

1. 圧縮データ(メタフィールドに保存されている形式)

メタフィールドから取得するデータです。gzip圧縮 + Base64エンコードされています。

2. 短縮形データ(gzip展開後)

Base64デコード + gzip展開すると、フィールド名が短縮されたJSON形式のデータが返ってきます。 重要: 短縮キーの意味は「参考情報」セクションの短縮キーマッピング表を参照してください。

独自実装で必要な処理

アプリブロックでは、メタフィールドを展開したあと、次の処理を画面側で行っています。独自に実装する場合は、同じ処理をご用意ください。

開始前・終了後のクーポンを表示しない(必須)

メタフィールドには、クーポンを表示に設定した時点で、開始日時を迎えていないクーポンも入ります。表示する直前に、現在の日時で次の2つを満たすクーポンだけに絞り込んでください。
  • 開始日時 sa が現在の日時以前
  • 終了日時 ea が null(期限なし)、または現在の日時以降
sa・ea は ISO 8601 の文字列です。文字列のまま比べず、日時に変換してから比べてください。

取得するときの注意

  • テーマでは Liquid の customer.metafields.discount-deck.discount-code-list、マイページの拡張では Customer Account API で読み取れます。アプリブロックも同じ方法で読み取っています
  • ログインしていないお客様のクーポンは取得できません。アプリブロックでは、ログインを促す案内を表示しています
  • メタフィールドがない場合や、絞り込んだ結果が0件の場合は、「利用可能なクーポンがありません」のような表示をご用意ください

参考情報

短縮キーマッピング

メタフィールドデータで使用される短縮キーの一覧です

タイプマッピング

ディスカウントタイプ(ty) 割引値タイプ(vt) 通貨コード(cc)