Storefront

ヘッドレスのカタログ公開モデルです。管理側の商品データは公開せず、サービスユーザーがサニタイズした公開用のコピー/content/public/commerce/ 配下に発行します。

カタログの投影

公開ファイル 内容
/content/public/commerce/catalog/index.json 一覧/検索用の商品カード
/content/public/commerce/catalog/products/{id}.json 商品詳細
/content/public/commerce/catalog/inventory.json itemId → available の在庫
/content/public/commerce/catalog/store.json 店舗メタ(name / shopDomain / currency / lowStock
  • 公開対象は commerce:source_status == active の商品のみ
  • カタログは commerce-catalog-publish タイマー(既定 5 分ごと、削除商品を整理)
  • 在庫は inventory_levels/update ルートからほぼリアルタイムに更新

Storefront SPA(ichigo.js)

/content/public/commerce/storefront/index.html。ハッシュルーティングの SPA です。

ルート 機能
#/ カードグリッド、クライアント検索(タイトル/ベンダー/タイプ/タグ)、並べ替え、在庫バッジ
#/product/{handle} ギャラリー、変種選択、価格、在庫バッジ、カート追加
#/cart 明細(localStorage 永続)、数量変更、合計、チェックアウト

チェックアウトは Shopify のホスト型チェックアウト(カートのパーマリンク https://{shopDomain}/cart/{variantId}:{qty},...)へ遷移します。Storefront API トークンは不要です。

在庫は inventory.json を 30 秒ごとにポーリングし、バッジ(Sold out / Only N left / 在庫あり)をライブ更新します(lowStock しきい値は store.json 由来)。

ランディングページ

ブロック型の編集可能なページです。/content/public/commerce/landing/index.html?slug={slug} で表示し、管理側は /content/commerce/pages/{slug}.json(バージョン/ACL 対象)に保存します。

ブロック種別: hero / heading / markdown / html / productsproductIds または tag で商品グリッド)。products ブロックは公開カタログのカードに解決され、ライブ在庫付きで Storefront へリンクします。

設定と操作

設定: /etc/commerce/config/storefront.ymlenabled / storeName / currency / lowStock)。

Webtop の Commerce Publishing アプリで、公開状況の確認・再ビルド、ランディングページのブロック編集(pages.groovy)ができます。