SmartEdit适用于一个具有多个基础商店的商店,每个商店都有不同的产品目录



我正在使用SAP Commerce 2011,我有一个WCMS站点,其中有4个基本商店,每个商店都有不同的产品目录。我也有逻辑,让用户选择他想要看到的基础存储。选择基本存储将使用

在会话中设置相关的目录版本。DefaultCMSSiteService.setCurrentCatalogVersion .

这很有效,但在SmartEdit中不行。CMSSiteFilter调用getContextInformationLoader()方法。initializePreviewRequest与每个请求。这将获取WCMS站点的默认产品目录,并在会话中设置其活动版本,覆盖上面的逻辑。因此,我无法在smartedit中打开PDP,因为引用了错误的目录版本。

我想知道为什么smartedit不支持这样一个标准的场景,即拥有多个基础商店,每个商店都有不同的产品目录!

你知道怎么解决这个问题吗?

事实证明,智能编辑代码没有考虑每个站点有多个基础存储,每个基础存储有一个产品目录的情况。我实现的解决方案如下:

禁用ActiveBaseSitePreviewStrategy。

解释:getContextInformationLoader()方法。initializePreviewRequest调用3个策略来初始化预览请求。以上就是其中之一。它在会话中设置活动站点以及其他内容,其中包括默认目录版本。.

我们只想设置活性位点。这个和其他由这个策略设置的东西,它们设置在代码的其他地方。所以这个策略是不必要的。

所以在自定义扩展名xxx-spring.xml中添加以下
<alias name="defaultPreviewRequestStrategiesList" alias="previewRequestStrategiesList" />
<util:list id="defaultPreviewRequestStrategiesList">
<ref bean="catalogVersionsPreviewStrategy" />
<ref bean="uiExperienceLevelPreviewStrategy" />
</util:list>

defaultPreviewRequestStrategiesList表示在ContextInformationLoader中注入的策略列表(参见acceleratorcms-spring)。我只是删除了ActiveBaseSitePreviewStrategy从它。

最新更新