RoomDreaming使用指南
前端技術文件

網站嵌入技術指南

給前端工程師的整合技術文件

本頁面是給官網技術團隊參考的整合文件。如果您是建材廠商內部團隊,請參考網站嵌入模式的設定說明。

快速開始

目標:在現有官網(建材廠商)中,以最不影響原網站架構的方式,加入「RoomDreaming AI 智慧選選材系統」。

懶人包

引入腳本:在 HTML <body> 結束前加入一段 <script>

設定 ID:設定 window.roomDreamingConfig 中的 agentId

觸發方式:選擇浮動按鈕、自定義按鈕或產品綁定

技術原理

項目說明
運作方式透過 JavaScript Loader 動態載入一個覆蓋全螢幕的 iframe (Modal 形式)
隔離性主程式運行於 iframe 內,樣式與邏輯完全隔離,不會污染母體網站
效能Loader 腳本極輕量且採 async 非同步載入,不阻塞渲染流程
相容性原生 Vanilla JS,相容任何框架 (React, Vue, WordPress, PHP 等) 及 RWD

基本嵌入

請將以下程式碼放置於全站 Layout 的 </body> 結束標籤之前:

<!-- RoomDreaming Configuration -->
<script>
  window.roomDreamingConfig = {
    // 必填:我們會提供給您的專屬商戶 ID
    agentId: "YOUR_AGENT_ID_HERE",

    // 選用:是否開啟右下角預設的浮動按鈕 (預設 false)
    floatingWidget: {
      enabled: true,
      tooltipText: "打造自己的家", // 提示文字
      buttonText: "立即體驗", // 按鈕文字
    },
  };
</script>

<!-- RoomDreaming Loader (Async) -->
<script async src="https://app.roomdreaming.com/loader.js"></script>
agentId 可在系統後台的「整合設定」頁面取得。

進階觸發設定

如果您希望使用者點擊網站上原本的按鈕(例如 Navbar 或產品卡片)來喚起展間,請參考以下做法。

我們支援 MutationObserver,因此即使是 SPA 動態生成的內容也能運作。

情境 A:純粹開啟展間

適用於首頁 Banner 按鈕或選單按鈕,不指定特定產品。

<button data-rd-custom-button="true">開啟 AI 展間</button>

情境 B:帶入特定產品

適用於「產品列表」或「產品詳細頁」,點擊後直接在展間中預覽該材質。

<!-- 只指定產品 ID -->
<button data-rd-product-id="prod_123">試鋪此地板</button>

<!-- 同時指定產品 ID 與變體 ID -->
<button data-rd-product-id="prod_123" data-rd-variant-id="var_456">
  試鋪此顏色
</button>

<!-- 只指定變體 ID(系統會自動找到對應產品) -->
<button data-rd-variant-id="var_456">試鋪此款式</button>

prod_123var_456 需替換為您在 RoomDreaming 系統中建立的實際產品/變體 ID。

Data Attributes 參考

Attribute說明範例值
data-rd-custom-button標記為自定義觸發按鈕"true"
data-rd-product-id指定要帶入的產品 ID"prod_123"
data-rd-variant-id指定要帶入的變體 ID(選填)"var_456"

設定參數參考

interface RoomDreamingConfig {
  // 必填:商戶 ID
  agentId: string;

  // 選用:浮動按鈕設定
  floatingWidget?: {
    enabled: boolean; // 是否啟用
    tooltipText?: string; // hover 提示文字
    buttonText?: string; // 按鈕文字
  };
}

常見技術問答

這個 Widget 會影響 SEO 嗎?

不會。內容透過 iframe 載入,且腳本非同步執行,不影響爬蟲抓取主要網站內容。

Z-Index 層級是多少?

預設層級為 9999,確保蓋在大多數網頁元素之上。如果您的網站有更高的 z-index 元素,請聯繫我們調整。

是否支援 SPA?

是的。Loader 會自動監聽 DOM 變化,即使頁面無刷新切換,新生成的按鈕只要帶有對應的 data 屬性依然有效。

如何在 React/Vue 中使用?

由於是原生 JavaScript,可以直接在任何框架中使用:

React (Next.js)

// pages/_document.tsx 或 app/layout.tsx
<Script
  id="roomdreaming-config"
  strategy="beforeInteractive"
  dangerouslySetInnerHTML={{
    __html: `
      window.roomDreamingConfig = {
        agentId: "YOUR_AGENT_ID_HERE",
        floatingWidget: { enabled: true }
      };
    `,
  }}
/>
<Script
  src="https://app.roomdreaming.com/loader.js"
  strategy="afterInteractive"
/>

Vue (Nuxt)

// nuxt.config.ts
export default defineNuxtConfig({
  app: {
    head: {
      script: [
        {
          children: `window.roomDreamingConfig = { agentId: "YOUR_AGENT_ID_HERE" };`,
        },
        { src: "https://app.roomdreaming.com/loader.js", async: true },
      ],
    },
  },
});

需要協助?

如果遇到技術問題,請聯繫 RoomDreaming 技術支援(email: contact@roomdreaming.com),並提供:

  • 您的網站網址
  • 瀏覽器 Console 的錯誤訊息截圖
  • 使用的前端框架與版本

On this page