问题描述
已经设置了 CMSUserGroupRestriction,在 Accelerator 上可以正常工作,但在 Spartacus 上不工作。注意到的是导航节点根据 restriction 已经处于 deactivated 状态,但它并没有消失。
例如,如果我为 Register Now 设置了一个导航节点,它应该只显示给匿名客户,匿名客户就可以点击链接。但实际观察到的现象是,登录后链接继续出现,但用户无法点击它。
似乎 content Page API 并不会去 evaluate Commerce Cloud 后台创建的 restriction.
问题分析
我使用以下 Impex 创建了两个限制(restrictions),一个用于链接组件(Linked component),另一个用于 CMS 页面。
1.INSERT_UPDATE CMSUserGroupRestriction;$contentCV[unique=true];uid[unique=true];name;userGroups(uid);includeSubgroups;components(&linkRef)
;;invoiceRestriction;Invoice Customer Group Restriction;invoceRestrictionGroup;true;capsugelInvoicesNavNodeLink
2.INSERT_UPDATE CMSUserGroupRestriction;$contentCV[unique=true];uid[unique=true];name;userGroups(uid);includeSubgroups;pages(uid, $contentCV)
;;orderHistoryRestriction;Order History Page Restriction;orderHistoryRestrictionGroup;true;orderHistory
对于预期的 invoceRestrictionGroup,链接组件被限制/隐藏,而通过应用页面限制,页面将显示给该组(orderHistoryRestrictionGroup)中的特定客户,这与预期相反。
有没有正确使用页面限制的解决方案?也就是说,页面不应该对特定的用户组可用。
正确的解决方案
INSERT_UPDATE CMSInverseRestriction;$contentCV[unique=true];name;originalRestriction(&uid);uid[unique=true];
;;Order History Page Inverse Restriction;orderHistoryRestriction;orderHistoryPageInverseRestriction;
原因:CMSUserGroupRestriction 的默认行为是页面只能由指定的用户组访问(或换句话说,仅限于)。因此,为了反转此行为,开发人员需要在 CMSUserGroupRestriction 上应用 CMSInverseRestriction。
SAP Commerce 包含用于控制店面中客户商品可见性的工具。
如果客户看不到您期望的完整项目列表(例如,只有一些产品),则您的自定义扩展或可见性设置可能存在问题。 找出是否存在可见性问题或源代码问题的一个好方法是将管理员员工分配给会话。
- 如果出现完整的项目列表,则这是一个可见性问题。
- 如果仅显示项目列表的一部分,则不是可见性问题。 相反,原因在别处。