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 / products(productIds または tag で商品グリッド)。products ブロックは公開カタログのカードに解決され、ライブ在庫付きで Storefront へリンクします。
設定と操作
設定: /etc/commerce/config/storefront.yml(enabled / storeName / currency / lowStock)。
Webtop の Commerce Publishing アプリで、公開状況の確認・再ビルド、ランディングページのブロック編集(pages.groovy)ができます。