Aem 根据Parsys在编辑栏中隐藏删除按钮

Aem 根据Parsys在编辑栏中隐藏删除按钮,aem,Aem,我有一个CQ5组件,在作者模式的编辑视图中有一个删除按钮。现在有两种可能的方式将此组件包含在页面中: 通过cq:include标记静态地 通过parsys组件动态地 如何将CQ5.5配置为当组件显示在parsys中时,仅在编辑栏中显示delete按钮。当组件通过cq:include静态包含时,不应显示delete按钮,因为在这种情况下无法从页面中删除组件 有什么想法吗 我只找到了以下CQ5文档,说明了如何从编辑栏中删除删除按钮: 此外,如果我不使用布局编辑栏,删除按钮也会正确显示和隐藏:/您可

我有一个CQ5组件,在作者模式的编辑视图中有一个删除按钮。现在有两种可能的方式将此组件包含在页面中:

  • 通过cq:include标记静态地
  • 通过parsys组件动态地
  • 如何将CQ5.5配置为当组件显示在parsys中时,仅在编辑栏中显示delete按钮。当组件通过cq:include静态包含时,不应显示delete按钮,因为在这种情况下无法从页面中删除组件

    有什么想法吗

    我只找到了以下CQ5文档,说明了如何从编辑栏中删除删除按钮:


    此外,如果我不使用布局编辑栏,删除按钮也会正确显示和隐藏:/

    您可以使用ComponentContext.BYPASS\u COMPONENT\u HANDLING\u ON\u INCLUDE\u属性来完成此操作。退房您必须在静态include之前设置它,然后在静态include之后删除它,以便delete按钮在parsys中可用。但是你也会失去编辑按钮,这可能是不可取的


    另一个选项是创建第二个组件,使用第一个组件作为其超类型(sling:resourceSuperType)。除了编辑配置之外,所有功能(对话框、JSP)都将被继承。您可以更改第二个组件的编辑配置选项,并将其用于静态包含,而第一个组件将保留在Sidekick中,以便在parsys中使用。

    Shawn的解决方案完全删除了编辑栏(尽管以一种疯狂的黑客方式),但我们中的许多人仍然希望在不使用删除选项的情况下编辑该组件

    在CQ中,事情根本不可能成为一个非常普遍的主题,因此我们花费大量时间寻找疯狂的黑客和变通方法,直到找到“我们能找到的最不可怕的解决方案”。许多配置都是以非常糟糕的方式定义的。这是其中之一,被认为是AEM最强大的功能之一(编辑栏)。另一个旗舰功能(parsys)也在许多方面被破坏,因为他们构建整个/etc/设计只是为了定义parsys中可以使用的组件类型,而没有提供任何干净的实现方式,也没有强制静态定义容器类型。老实说,我可以花上几个小时谈论CQ实现事情的所有疯狂方式,但我已经说得太多了


    我的解决方案:复制组件,粘贴它,稍微更改名称,从编辑栏中删除删除选项。一团糟?对无论您如何清楚地沟通和记录代码,它们都将失去同步。但你得问问自己,这比你想象的还要糟糕吗?嗯。。。不,不是:)

    没有OOTB方法根据上下文动态配置editConfig,因此最简单的解决方案是创建一个扩展原始组件的新组件,该组件将仅覆盖
    cq:editConfig
    节点。因此,同一个组件有两种风格:一种用于parsys,另一种用于静态include,但没有任何代码重复,因为另一种是“浅”覆盖

    将原始组件复制到新组件,删除新组件中的所有文件,除了
    .content.xml
    \u cq\u editConfig.xml
    中需要从
    cq:actions
    中删除的文件

    例如,如果原始组件的resourceType为
    /apps/mysite/myoriginalstreaser
    ,则应在新组件的
    .content.xml
    中设置:

    .content.xml:
    ^^^^^^^^^^^^^^^^^^^^^^^
    
    \u cq\u editConfig.xml:
    

    NB:如果您已经拥有具有原始资源类型的生产内容,那么您将需要迁移具有“新”行为的组件的资源类型。这可以(1)在CRXDELite中手动完成,(2)使用该工具,或(3)通过来自。

    Hi Markus的命令来完成。对此,我没有确切正确的答案,但我认为您可能必须以某种方式覆盖cq:editConfig,下面是一个博客,它展示了如何重写编辑配置,以便在页面上显示组件时显示对话框。希望这有助于提供一些指导。