使用来自其他站点的 AEM 组件

Use an AEM component from another site

我有一个服务于多个站点的 AEM 实例。一个站点正在使用一个组件。我想在另一个网站上使用这个组件。我不想将组件文件复制并粘贴到第二个站点并像那样拆分代码库。有谁知道在另一个站点上使用此组件的方法吗?

您通常可以在任何网站上使用每个组件。如果您还有多个项目(或 /apps 中的多个文件夹),则有多种方法可以组织您的依赖项。

如果您计划对某些重用组件进行一些特定于项目的更改,请确保使用继承 (resourcecSuperType) 和包装器组件。 为了拥有一个干净的依赖层次结构,将多个项目中使用的组件提取到 "base" 或 "foundation" 项目中可能也很有用。

看看wcm core and we-retail。 We-retail 正在重用 wcm 核心组件。

HTH.

假设您有两个网站 site1site2site1 的组件将在组件组 Group1 中,而 site2 的组件将在组件组 Group2.

使用组件组(最快和最脏)

您需要做的就是将 Group2 组件组添加到您要使用的 site1 组件。

Using policies(不那么快和肮脏)

site2 的页面模板中,定义允许作者使用来自组件组 Group2 的组件以及来自 Group1

的任何选定组件的策略

Using inheritence(性感)

Oliver所述,提取共享组件并将它们放在第三个站点(例如:sitecoresiteshare 或类似内容)。本网站用于组织您的组件,而不是用于添加和发布内容。

然后在 site1site2 中,使用 sling:resourceSuperType 属性 创建仅引用 sitecore 中的组件的组件。您的 site1site2 组件将继承引用组件的所有属性和编辑对话框。

如果您想覆盖继承组件的 cq:dialogCSS,您也可以这样做,让每个站点的外观或行为略有不同。