AEM6 - 以编程方式在 parsys 中添加组件

AEM6 - Add a component within a parsys programatically

我有一个 table 组件,每个单元格都必须有一个 parsys(以允许作者删除文本、图像等)。默认情况下,parsys 必须有一个定制的文本组件(内部)。

在 Sightly 中,我尝试了以下方法但没有结果:

<sly data-sly-resource="${'table-col-header-{0}' @ format=[column], resourceType='/libs/wcm/foundation/components/parsys'}">
    <sly data-sly-resource="${'table-col-header-text-{0}' @ format=[column], resourceType='/apps/componentlibrary/components/content/text'"/>
</sly>

根据 specificationdata-sly-include 应与脚本一起使用。

根据 rows/columns 的实际限制,我会选择 cq:template 节点方法或 parsys 的扩展,其中包括包含预定义组件的功能。 OOTB parsys 仅包含模板预定义的内容(页面模板或组件特定模板)

cq:template 节点方法包括在组件定义下添加一个节点,该节点包含它应该具有的结构。这将允许您为每个单元格预定义文本组件(或其他内容)。但这需要对行和列进行有限限制。如果通过 sidekick 添加组件(我也相信 touchUI - 但不是 100% 确定),它会将此节点的整个结构复制到您所在的组件位置。在您的情况下,这意味着每个 row/column 都将被复制,并且会导致回购中的节点数量超过您实际需要的数量(大多数情况下)。只要限制相当低,这种方法就可以了。请注意,如果您将此 'table' 组件直接包含在另一个组件中,则此方法不起作用。

第二种方法要求您扩展 parsys 组件以使其 'smarter' 并提供 'default' 项目。这更灵活,但也需要处理 Adob​​e 对该组件所做的 changes/enhancements。