將ContextHub新增至頁面及存取商店

將ContextHub新增至您的頁面,以啟用ContextHub功能並連結至ContextHub Javascript程式庫

ContextHub Javascript API可讓您存取ContextHub管理的上下文資料。 本頁簡要說明API用於存取和控制上下文資料的主要功能。 依循API參考檔案的連結,以檢視詳細資訊和程式碼範例。

將ContextHub新增至頁面元件

若要啟用ContextHub功能並連結至ContextHub Javascript程式庫,請在頁面的區段中加入contexthub head 元件。 頁面元件的JSP程式碼類似下列範例:

<head>
   <sling:include path="contexthub" resourceType="granite/contexthub/components/contexthub" />
</head>

請注意,您也需要設定ContextHub工具列是否顯示在「預覽」模式中。 請參 閱顯示和隱藏ContextHub UI

關於ContextHub儲存

使用ContextHub儲存區來保存上下文資料。 ContextHub提供下列類型的商店,這些商店是所有商店類型的基礎:

所有商店類型都是類別的擴 ContextHub.Store.Core 充名稱。 如需建立新商店類型的詳細資訊,請參 閱建立自訂商店。 如需範例商店類型的詳細資訊,請參 閱範例ContextHub商店候選者

持久性模式

Context Hub儲存區使用下列永續性模式之一:

  • 本地: 使用HTML5 localStorage來保存資料。 本機儲存區會跨作業持續存在於瀏覽器上。
  • 會話: 使用HTML5 sessionStorage來保存資料。 會話儲存在瀏覽器會話期間持續存在,並且可用於所有瀏覽器窗口。
  • Cookie: 使用瀏覽器對Cookie的原生支援來儲存資料。 在HTTP請求中,Cookie資料會傳送至伺服器或從伺服器傳送。
  • Window.name: 使用window.name屬性來保存資料。
  • 記憶體: 使用Javascript物件來保存資料。

預設情況下,Context Hub使用本地持久性模式。 如果瀏覽器不支援或允許HTML5 localStorage,則會使用「工作階段」永續性。 如果瀏覽器不支援或允許HTML5 sessionStorage,則會使用Window.name永續性。

存放資料

在內部,將資料表單儲存為樹結構,以便將值添加為主要類型或複雜對象。 添加複雜對象到儲存時,對象屬性在資料樹中形成分支。 例如,下列複雜物件會新增至名為location的空白商店:

Object {
   number: 321,
   data: {
      city: "Basel",
      country: "Switzerland",
      details: {
         population: 173330,
         elevation: 260
      }
   }
}

儲存資料的樹結構可概念化如下:

/
|- number
|- data
      |- city
      |- country
      |- details
            |- population
            |- elevation

樹結構將儲存中的資料項定義為鍵/值對。 在上例中,鍵與 /number 值對應, 321鍵與 /data/country 值對應 Switzerland

控制物件

ContextHub提供用 ContextHub.Utils.JSON.tree 於控制Javascript物件的類別。 在您將Javascript物件新增至商店或從商店取得之前,請使用此類別的函式來控制這些物件。

此外,該類 ContextHub.Utils.JSON 還提供了一些函式,用於序列化要素的對象,以及將字串解序列化為對象。 使用此類別來處理JSON資料,以支援原生未包含和函式的瀏 JSON.parseJSON.stringify 器。

與ContextHub商店互動

使用 ContextHub Javascript物件以Javascript物件形式取得商店。 在您取得儲存物件後,就可以控制它包含的資料。 使用 getAllStores 或函 getStore 數獲取儲存。

訪問儲存資料

Javascript類 ContexHub.Store.Core 別會定義數種與儲存資料互動的函式。 下列函式可儲存和擷取物件中包含的多個資料項目:

個別資料項目會儲存為一組索引鍵/值配對。 要儲存和檢索值,請指定相應的鍵:

請注意,自訂商店申請人可定義其他功能,以提供存取儲存資料的功能。

注意

ContextHub預設不會知道目前登入的發佈伺服器上使用過,且ContextHub會將這些使用者視為「匿名」。

您可以載入We.Retail參考網站中實作的描述檔商店,讓ContextHub得知已登入 的使用者。 請參閱GitHub 上的相關程式碼

ContextHub事件

ContextHub包含事件框架,可讓您自動回應儲存事件。 每個儲存對象都 ContextHub.Utils.Eventing 包含一個可用作儲存的屬性的對 eventing 像。 使用 ononce 函式將Javascript函式系結至商店事件。

使用內容中樞操控Cookie

Context Hub Javascript API提供跨瀏覽器處理Cookie的支援。 命名空間 ContextHub.Utils.Cookie 定義了用於建立、控制和刪除Cookie的數個函式。

確定已解決的ContextHub區段

ContextHub區段引擎可讓您判斷哪些已註冊區段可在目前的上下文中解決。 使用類別的getResolvedSegments函式 ContextHub.SegmentEngine.SegmentManager 來擷取已解析的區段。 然後,使用 getName 類別 getPath 的或 ContextHub.SegmentEngine.Segment 函式來測試區段。

已安裝區段

ContextHub區段會安裝在節 /conf/we-retail/settings/wcm/segments 點下。

  • 女性
  • 女性30歲以上
  • 女性30歲以下
  • 男性
  • 男30歲以上
  • 男30歲以下
  • order-value-75-to-100
  • 訂購量——超過100
  • 30歲以上
  • 夏季
  • 夏母
  • 夏季——女性-30歲以上
  • 夏季女性30歲以下
  • 夏季男性
  • 30歲以上的夏季男性
  • 夏季男30歲以下
  • 30歲以下
  • 冬女
  • 冬——女-30歲以上
  • 冬——女-30歲以下
  • 冬男
  • 冬——男-30歲
  • 冬——男-20歲以下

用以解決這些區段的規則概述如下:

  • 女性或男性是從描述檔 gender 儲存的資料項

  • 年齡是根據描述檔存放區的年齡資料項目而決定。

  • 季節是根據地理位置商店的緯度資料項 ,以及surferinfo商店的月度資料項目來決定。

警告

已安裝的區段會作為參考設定提供,以協助您建立專案專屬的設定,因此不應直接使用。

記錄ContextHub的調試消息

設定Adobe Granite ContextHub OSGi服務(PID = com.adobe.granite.contexthub.impl.ContextHubImpl),以記錄詳細的除錯訊息,這些訊息在開發時很有用。

要配置服務,您可以使用 Web控制台 ,或在儲存庫 中使用JCR節點:

  • Web控制台: 要記錄調試消息,請選擇Debug屬性。
  • JCR節點: 要記錄調試消息,請將布爾 com.adobe.granite.contexthub.debug 屬性設定為 true

請參閱ContextHub架構概觀

ContextHub提供 診斷頁 ,您可在其中查看ContextHub框架的概述。

本頁內容