【问题标题】:AEM - How can I run my JavaScript code only in publish mode?AEM - 如何仅在发布模式下运行我的 JavaScript 代码?
【发布时间】:2019-07-18 11:31:24
【问题描述】:

在 AEM 中,是否可以仅在发布模式下运行 JavaScript 文件而不能在作者模式下运行?

【问题讨论】:

标签: aem


【解决方案1】:

有很多方法可以实现这一点

如果这是一个独立的模块,您可以将它放在一个单独的客户端库中,并仅在有条件地发布时加载客户端库。

<sly data-sly-test="wcmmode.disabled" data-sly-use.clientLib="/libs/granite/sightly/templates/clientlib.html"
     data-sly-call="${clientlib.css @ categories='foo'}"/>

如果这就像你想在作者中排除的一小部分代码,你可以添加一个暗示 wcmmode 的数据属性,然后通过基于数据属性的检查来保护这些函数

<body data-wcm-mode="${wcmmode.toString}">.....</body>
$(document.body).attr('data-wcm-mode') === "DISABLED"){
     //do something
}

作者模式有很多 CQ/Granite 命名空间对象,您可以检查它们的存在以推断这是作者还是发布

if(typeof typeof Granite === 'undefined' ||  typeof Granite.author === 'undefined'){
     //do something
}

这些都不是真正的发布服务器,而是禁用的 wcmmode 足以满足大多数用例。如果您必须绝对检查发布者而不仅仅是 wcmmode,请考虑检查 slingsetting 是否存在发布运行模式 [https://sling.apache.org/documentation/bundles/sling-settings-org-apache-sling-settings.html]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    相关资源
    最近更新 更多