如何自定义与 AddOn 一起使用的 JSP 页面?

How to customize JSP pages used with an AddOn?

我正在使用 Hybris 6.2,我们有一个插件,我们希望使用它来自定义店面中的结帐页面。开箱即用,这些页面被插入到我们所看到的另一个 JSP 中,并相应地更改为结帐过程的当前步骤。

我阅读了此 page 中的指南,但没有找到可以帮助我的东西。

我们尝试自定义 AddPaymentMethodPage.jsp,因此我们将 JSP 复制到位于 acceleratoraddon/web/webroot/WEB-INF/views/responsive/pages/checkout/multi 的插件中。

我们编译了我们的环境,我可以看到我们的插件中的 JSP 被复制到位于 web/webroot/WEB-INF/views/addons/OUR_ADDON/responsive/pages/checkout/multi 的店面扩展中。

但是我们定制的 JSP 没有在店面使用。

我不知道如何告诉店面使用我们定制的 JSP 而不是在结帐过程中默认设置的一套,我检查了初始数据但没有映射这些 JSPs,这是有道理的,ControllerConstants.java 包含应该加载的页面的路径,对于 AddPaymentMethodPage.jsp,定义如下:

interface Views
{
    interface Cms // NOSONAR
    {
        String ComponentPrefix = "cms/"; // NOSONAR
    }

    interface Pages
    {
        ...

        interface MultiStepCheckout // NOSONAR
        {
            ...
            String AddPaymentMethodPage = "pages/checkout/multi/addPaymentMethodPage"; // NOSONAR
            ...
        }
                   ...
    }
            ...
}

没有提到从哪里加载页面,所以我决定从默认加载它,或者从其他地方的 AddOn 加载它。

我必须执行什么配置才能完成此操作?

用于显示 CMS 页面的 jsp 路径在 属性 "frontendTemplateName" 的页面模板中配置。如果您想更改它,请转到 cmscockpit/hmc/backoffice,打开您要自定义的页面模板,然后将 frontendTemplateName 更改为模板所在的位置。如果页面在插件中,则必须添加前缀 "addon:"。所以在你的情况下是:

插件:/OUR_ADDON/pages/checkout/multi/AddPaymentMethodPage

比较以下类:

  • my.package.mystorefront.web.view.UiExperienceViewResolver
  • de.hybris.platform.cms2.servicelayer.services.impl.DefaultCMSPageService
    • 尤其是方法 getFrontendTemplateName