0

我想获取页面的类型,即 PLP 或 PDP 页面

4

1 回答 1

0

您可以在 SFCC 的控制器或后端逻辑(服务器执行的 JavaScript)中以几种不同的方式确定页面的“类型”,以及尝试在前端逻辑中检测此条件时的其他一些方式。(浏览器执行的 JavaScript)此外,对于前端和后端解决方案,它可能会有所不同,具体取决于您正在处理的实现。根据它的年龄和实施者,您可能在 SiteGenesis、MFRA 或 SFRA 环境中工作。甚至可能是 100% 的自定义实现。因此,鉴于该问题目前绝对没有任何上下文,请接受这是一个非常笼统的答案。

后端上下文

在所有后端上下文中,该解决方案依赖于会话的“ClickPath”数据存储。您必须意识到,这可能不是100% 准确,因为可能存在竞争条件,其中用户在多个选项卡中浏览可能会在处理当前请求后访问页面,并且不知道中的last条目是否ClickStream可能比当前正在处理请求。

为什么类pipelineName中不存在该属性Request让我有点困惑。为什么呢?无论如何,我们必须做我们必须做的事情。

SFRA

// in the context of a Controller method
req.session.clickStream.last.pipelineName // returns string like: 'Pipeline-Name'

所有其他上下文(站点创世纪和 MFRA)

// session is a global variable in SFCC. It should be accessible 
// in all backend contexts with the exception of certain hook 
// contexts.
session.clickStream.last.pipelineName // returns string like: 'Pipeline-Name'

前端上下文

代表在浏览器中运行的 JavaScript 的前端上下文依赖于服务器在浏览器执行上下文中设置的变量。具体来说,app.js在 SiteGenesis 或 SFRA“客户端”模块的情况下,可在整体模块的上下文中访问的变量

SFRA

在 SFRA 中,有一种“全局”JS 模块,您可以在其中找到它main.js,然后还有特定类型的 JS 模块,例如productDetail.jssearch.js. 在 SFRA 的上下文中,我建议将您的模块/脚本添加到这些特定于页面类型的模块之一,以便根据页面类型执行不同的逻辑。

网站创世纪

在页面上执行 JavaScript 的上下文中,以下表达式通常会给出足够的值来根据页面类型调整行为。请注意,您可能需要在闭包的上下文中执行此表达式app.js才能使其工作。

app.page.type // equals 'product' or 'search' for example (IIRC)
于 2022-02-22T22:01:21.550 回答