将ContextHub添加到页面和访问存储

将ContextHub添加到您的页面以启用ContextHub功能并链接到ContextHub Javascript库

ContextHub Javascript API提供对ContextHub管理的上下文数据的访问。 本页简要介绍了用于访问和操作上下文数据的API的主要功能。 按照指向API参考文档的链接查看详细信息和代码示例。

将ContextHub添加到页面组件

要启用ContextHub功能并链接到ContextHub Javascript库,请在页面的head部分包含contexthub组件。 页面组件的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会话存储保留数据。会话存储在浏览器会话的持续时间内持续存在,并且可用于所有浏览器窗口。
  • 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对象获取。 获得存储对象后,您可以处理它包含的数据。 使用getAllStoresgetStore函数获取存储。

访问存储数据

ContexHub.Store.Core Javascript类定义与存储数据交互的多个函数。 以下函数存储和检索对象中包含的多个数据项:

单个数据项作为一组键/值对进行存储。 要存储和检索值,请指定相应的键:

请注意,自定义存储候选者可以定义提供存储数据访问权限的其他函数。

注意

默认情况下,ContextHub不知道当前在发布服务器上使用的登录名,ContextHub将这些用户视为“匿名”。

通过加载We.Retail引用站点中实现的用户档案存储,可以使ContextHub感知已登录的用户。 请在此处参阅GitHub上的相关代码

ContextHub事件

ContextHub包含一个事件框架,它允许您对存储事件做出自动响应。 每个存储对象都包含一个ContextHub.Utils.Eventing对象,该对象可用作存储的eventing属性。 使用ononce函数将Javascript函数绑定到存储事件。

使用Context Hub操纵Cookie

Context Hub Javascript API提供跨浏览器支持以处理浏览器cookie。 ContextHub.Utils.Cookie命名空间定义用于创建、操作和删除Cookie的多个函数。

确定已解析的ContextHub区段

ContextHub区段引擎允许您确定在当前上下文中解析的已注册区段。 使用ContextHub.SegmentEngine.SegmentManager类的getResolvedSegments函数检索已解析的段。 然后,使用ContextHub.SegmentEngine.Segment类的getNamegetPath函数测试段。

已安装的区段

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数据项中确定母或公。

  • 根据用户档案存储的年龄数据项确定年龄。

  • 季节根据geolocation商店的纬度数据项和surferinfo商店的月数据项来确定。

警告

安装的区段会作为参考配置提供,以帮助您为项目构建自己的专用配置,因此不应直接使用。

记录ContextHub的调试消息

配置AdobeGranite ContextHub OSGi服务(PID = com.adobe.granite.contexthub.impl.ContextHubImpl)以记录详细的调试消息,这些消息在开发时非常有用。

要配置服务,您可以使用Web控制台或使用存储库🔗中的 JCR节点:

  • Web控制台:要记录调试消息,请选择调试属性。
  • JCR节点:要记录调试消息,请将布尔值com.adobe.granite.contexthub.debug属性设置为true

请参阅ContextHub Framework概述

ContextHub提供诊断页面,您可在其中看到ContextHub框架的概述。

On this page

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now