将ContextHub添加到页面和访问存储 adding-contexthub-to-pages-and-accessing-stores

CAUTION
AEM 6.4已结束扩展支持,本文档将不再更新。 有关更多详细信息,请参阅 技术支助期. 查找支持的版本 此处.

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

ContextHub Javascript API提供对ContextHub管理的上下文数据的访问权限。 本页简要介绍了用于访问和处理上下文数据的API的主要功能。 请查看API参考文档的链接,以查看详细信息和代码示例。

将ContextHub添加到页面组件 adding-contexthub-to-a-page-component

要启用ContextHub功能并链接到ContextHub Javascript库,请在 head 的子代码。 页面组件的JSP代码如下示例所示:

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

请注意,您还需要配置ContextHub工具栏是否显示在“预览”模式下。 请参阅 显示和隐藏ContextHub UI.

关于ContextHub存储 about-contexthub-stores

使用ContextHub存储保留上下文数据。 ContextHub提供以下类型的存储,这些存储构成了所有存储类型的基础:

所有存储类型都是 ContextHub.Store.Core 类。 有关创建新商店类型的信息,请参阅 创建自定义商店. 有关示例存储类型的信息,请参阅 ContextHub存储候选示例.

持久性模式 persistence-modes

ContextHub存储使用以下持久模式之一:

  • 本地: 使用HTML5 localStorage保留数据。 本地存储会在各会话期间在浏览器上持久保留。
  • 会话: 使用HTML5 sessionStorage保留数据。 会话存储在浏览器会话期间会持续保留,并可用于所有浏览器窗口。
  • Cookie: 使用浏览器对Cookie的本机支持进行数据存储。 在HTTP请求中,Cookie数据会从服务器发送到服务器。
  • Window.name: 使用window.name属性保留数据。
  • 内存: 使用Javascript对象保留数据。

默认情况下,ContextHub使用本地持久性模式。 如果浏览器不支持或允许HTML5 localStorage,则使用会话持久性。 如果浏览器不支持或允许HTML5sessionStorage,则使用Window.name持久性。

存储数据 store-data

在内部,将数据存储为树结构,从而可以将值添加为主要类型或复杂对象。 添加要存储的复杂对象时,对象属性会在数据树中形成分支。 例如,将以下复杂对象添加到名为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.

处理对象 manipulating-objects

ContextHub提供 ContextHub.Utils.JSON.tree 类。 在将Javascript对象添加到存储区之前,或从存储区获取Javascript对象后,使用此类的函数处理这些对象。

此外, ContextHub.Utils.JSON 类提供了将对象序列化为字符串,并将字符串反序列化为对象的函数。 使用此类处理JSON数据,以支持本机不包含的浏览器 JSON.parseJSON.stringify 函数。

与ContextHub存储交互 interacting-with-contexthub-stores

使用 ContextHub 用于将存储作为Javascript对象获取的Javascript对象。 获取存储对象后,即可处理该存储对象包含的数据。 使用 getAllStoresgetStore 函数来获取存储。

访问存储数据 accessing-store-data

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

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

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

NOTE
默认情况下, ContextHub不会感知发布服务器上当前已登录的用户,并且ContextHub会将此类用户视为“匿名”。
您可以按照 We.Retail参考网站. 请参阅 此处显示GitHub上的相关代码.

ContextHub事件 contexthub-eventing

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

使用ContextHub处理Cookie using-context-hub-to-manipulate-cookies

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

确定已解析的ContextHub区段 determining-resolved-contexthub-segments

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

已安装的区段 installed-segments

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存储的月份数据项。

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

记录ContextHub的调试消息 logging-debug-messages-for-contexthub

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

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

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

请参阅ContextHub框架概述 see-an-overview-of-the-contexthub-framework

ContextHub提供 诊断页面 您可以在此处查看ContextHub框架的概述。

recommendation-more-help
2315f3f5-cb4a-4530-9999-30c8319c520e