将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存储候选项。
ContextHub存储使用以下持久模式之一:
默认情况下,ContextHub使用本地持久性模式。 如果浏览器不支持或允许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对象添加到存储区之前,或从存储区获取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函数绑定到存储事件。
ContextHub 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框架的概述。