Ideal House
コンテンツにスキップ

Shoplazza 連携#

テーマアプリ拡張または独自の Liquid テーマを使って Shoplazza に Room Visualizer を追加し、選択中のバリエーションの SKU を ideal.house の商品コードとして描画します。

検証状況: 2026年9月7日 に Shoplazza のテーマ、拡張機能、商品、バリエーションのドキュメントを確認しました。パートナーアプリやマーチャントのテストストアは利用できなかったため、開発用ストアでインストールとバリエーション切り替えを検証する必要があります。

SDK を読み込む前に: ダッシュボード → 設定を開き、オンラインストアのオリジンを Allowed Origins (CORS) に追加して 保存 をクリックします。公開サイトのホスト名と、利用するプレビューまたはステージングのオリジンを含めます。複数のオリジンはカンマで区切ってください。設定手順を参照してください。

前提条件#

Shoplazza の開発用またはマーチャントのストア、テーマまたはアプリ拡張のソースへのアクセス、Shop ID、Publishable Key、対応するバリエーションの SKUs のインポート済みレコードを用意します。カスタマイズ前にマーチャントのテーマを複製してください。

テーマアプリ拡張は、保守しやすい再利用可能な方式です。アプリブロックは表示用 UI を挿入し、マーチャントが対応する商品セクションに追加する必要があります。アプリ埋め込みでは、サイト全体の動作を読み込めます。

SDK の最小構成#

html
<script
  src="https://sdk.ideal.house/sdk.js"
  data-shop-id="<SHOP_ID>"
  data-publishable-key="<PUBLISHABLE_KEY>"
  async
></script>

<div data-idealhouse-button-container data-product-code="CHAIR-OAK-01"></div>

Shoplazza は variant.sku を公開しています。その正確な文字列を ideal.house の sku として使用します。

アプリブロックの追加#

商品セクション用のテーマ拡張のアプリブロックを作成します。商品コンテキスト内の Shoplazza の Liquid ブロックは、product にアクセスできます。最初はホスト要素を空にし、使用中のテーマの商品フォームの状態から選択中のバリエーションを渡します。

liquid
<div class="idealhouse-host"></div>

{% schema %}
{
  "name": { "en-US": "Room Visualizer", "zh-CN": "房间可视化" },
  "target": "section",
  "javascript": ["idealhouse.js"],
  "settings": []
}
{% endschema %}

バリエーションが一つの商品では、ブロックの JavaScript で、テーマが安全にシリアライズしたデータから product.variants の唯一の公開エントリーを読み取れます。複数のバリエーションがある場合は、テーマの既存の商品フォームで選択が確定するまでホスト要素を空にします。これにより、公開されていない選択中バリエーションの Liquid プロパティに依存せずに済みます。

SDK の読み込み#

idealhouse.js で SDK を一度だけ読み込みます。再利用可能なアプリでは、一つのマーチャントを固定で指定せず、サニタイズ済みの公開ブロックまたは埋め込み設定から Shop ID と Publishable Key を提供します。

js
if (!document.querySelector('script[src="https://sdk.ideal.house/sdk.js"]')) {
  const script = document.createElement('script');
  script.src = 'https://sdk.ideal.house/sdk.js';
  script.async = true;
  script.dataset.shopId = '<SHOP_ID>';
  script.dataset.publishableKey = '<PUBLISHABLE_KEY>';
  document.head.append(script);
}

アプリのシークレットや ideal.house の Client Secret を公開してはいけません。

選択中のバリエーションの同期#

テーマの公開された商品フォームのコールバックを、このアダプターに接続します。

js
function renderIdealhouseVariant(host, variant) {
  host.replaceChildren();
  const code = String(variant && variant.sku || '').trim();
  if (!code) return;
  const container = document.createElement('div');
  container.dataset.idealhouseButtonContainer = '';
  container.dataset.productCode = code;
  host.append(container);
}

Shoplazza のバリエーションオブジェクトでは sku が公開されていますが、選択の実装はテーマごとに異なる場合があります。コールバックの接続は利用側のアダプターで行います。新たな選択の後はコンテナを再作成し、SDK が内容を追加したマークアップだけを変更する方法は避けてください。

コレクションのカード、クイックビュー、検索フィルター、クライアント側で描画するセクションでは、項目単位のホスト要素を追加し、テーマの公開された描画コールバック後に橋渡し処理を実行します。カード上で最終的なバリエーションが不明な場合は、ボタンを表示しないか、商品ページへのリンクを設置します。

商品のインポート#

対応するすべての variant.sku をエクスポートし、商品アップロードから ideal.house の sku としてインポートします。商品インポートジョブの状態商品一覧商品更新商品削除エラーと再試行を参照してください。

管理用 API のエクスポート、Webhook、定期同期、OAuth、拡張機能の配布は利用側で実装します。

検証と削除#

アプリブロックの配置、埋め込みの有効化、バリエーションが一つの商品、複数バリエーションのすべての選択肢、空・重複・不明な SKUs、コレクションのカード、クイックビュー、フィルター、ブラウザー履歴、モバイル、言語と通貨、同意管理、テーマのプレビューと公開モードをテストします。SDK のリクエストが一回で、バリエーションの SKU の対応付けが正確であることを確認します。

削除するには、テーマアプリ拡張を無効化してアンインストールするか、独自の Liquid と JavaScript を削除します。削除後のテーマを公開し、オンラインストアのキャッシュを消去して、SDK とすべての data-idealhouse-* ノードがないことを確認します。

プラットフォームの公式リファレンス#