將ContextHub新增至您的頁面以啟用ContextHub功能並連結至ContextHub Javascript資料庫
ContextHub Javascript API可讓您存取ContextHub管理的內容資料。 本頁簡要說明API用於存取及處理內容資料的主要功能。 請依照API參考檔案的連結,查看詳細資訊和程式碼範例。
若要啟用ContextHub功能並連結至ContextHub Javascript程式庫,請在頁面的head
區段中包含Contexthub元件。 頁面元件的JSP程式碼類似下列範例:
<head>
<sling:include path="contexthub" resourceType="granite/contexthub/components/contexthub" />
</head>
請注意,您也需要設定ContextHub工具列是否顯示在「預覽」模式中。 請參閱顯示和隱藏ContextHub UI。
使用ContextHub存放區來保留內容資料。 ContextHub提供下列儲存類型,這些儲存類型構成所有儲存類型的基礎:
所有儲存類型都是ContextHub.Store.Core
類的副檔名。 有關建立新商店類型的資訊,請參閱建立自定義商店。 如需範例存放區類型的相關資訊,請參閱範例ContextHub存放區候選項。
Context Hub存放區使用下列其中一種持續性模式:
預設情況下,Context Hub使用本地持久性模式。 如果瀏覽器不支援或允許HTML5 localStorage,則會使用工作階段持續性。 如果瀏覽器不支援或允許HTML5 sessionStorage,則會使用Window.name持續性。
在內部,將資料儲存為樹結構,以便將值添加為主要類型或複雜對象。 添加要儲存的複雜對象時,對象屬性在資料樹中形成分支。 例如,下列複雜物件會新增至名為位置的空白存放區:
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對象添加到儲存區之前,或在從儲存區獲取Javascript對象之後,使用此類的函式。
此外,ContextHub.Utils.JSON
類還提供了將對象序列化為字串,並將字串反序列化為對象的函式。 使用此類別處理JSON資料,以支援原生不包含JSON.parse
和JSON.stringify
函式的瀏覽器。
使用ContextHub
Javascript物件來取得儲存作為Javascript物件。 取得儲存物件後,您就可以控制其包含的資料。 使用getAllStores
或getStore
函式來取得存放區。
ContexHub.Store.Core
Javascript類定義了與儲存資料交互的多個函式。 以下函式儲存和檢索對象中包含的多個資料項:
個別資料項目會儲存為一組索引鍵/值組。 要儲存和檢索值,請指定相應的鍵:
請注意,自訂存放區候選項可定義其他功能,以提供存取儲存資料的權限。
ContextHub預設不會知道目前在發佈伺服器上使用的登入,且ContextHub會將這類使用者視為「匿名」。
您可以依照We.Retail參考網站中的實作,載入設定檔存放區,讓ContextHub得知已登入的使用者。 請在此處🔗參閱GitHub上的相關程式碼。
ContextHub包含事件架構,可讓您自動回應以儲存事件。 每個儲存對象都包含一個ContextHub.Utils.Eventing
對象,該對象可用作儲存的eventing
屬性。 使用on
或once
函式將Javascript函式系結至儲存事件。
Context Hub Javascript API提供跨瀏覽器支援,可處理瀏覽器Cookie。 ContextHub.Utils.Cookie
命名空間定義了用於建立、操作和刪除Cookie的多個函式。
ContextHub區段引擎可讓您判斷目前內容中要解析的已註冊區段。 使用ContextHub.SegmentEngine.SegmentManager
類的getResolvedSegments函式來檢索已解析的段。 然後,使用ContextHub.SegmentEngine.Segment
類的getName
或getPath
函式來測試段。
ContextHub區段會安裝在/conf/we-retail/settings/wcm/segments
節點下。
用以解決這些區段的規則摘要如下:
從配置檔案儲存的gender
資料項確定女性或男性。
年齡由設定檔存放區的年齡資料項目決定。
季數由geolocation商店的緯度資料項和surferinfo商店的月資料項決定。
安裝的區段會作為參考設定提供,協助您為專案建立專屬的設定,因此不應直接使用。
設定AdobeGranite ContextHub OSGi服務(PID = com.adobe.granite.contexthub.impl.ContextHubImpl
),以記錄開發時很實用的詳細除錯訊息。
要配置服務,可以使用Web控制台或在儲存庫🔗中使用JCR節點:
com.adobe.granite.contexthub.debug
屬性設為true
。ContextHub提供診斷頁面 ,您可在其中看到ContextHub架構的概觀。