可以使用AEM的api和Groovy脚本实现将单个组件添加到多个组件组中。下面是一个示例代码:
import com.day.cq.wcm.api.Page
import com.day.cq.wcm.api.components.Component
import com.day.cq.wcm.api.components.ComponentManager
import com.day.cq.wcm.api.components.ComponentGroup
import com.day.cq.wcm.api.components.ComponentGroupManager
import com.day.cq.wcm.api.PageManager
import com.day.cq.wcm.api.PageManagerFactory
import groovy.json.JsonSlurper
def addComponentToMultipleGroups(groupIdList, componentPath) {
def component = resolver.getResource(componentPath).adaptTo(Component)
if (component != null) {
def componentManager = sling.getService(ComponentManager.class)
def groupManager = sling.getService(ComponentGroupManager.class)
groupIdList.each {
def group = groupManager.getGroupById(it)
if (group != null) {
componentManager.addComponentToGroup(component, group)
}
}
session.save()
}
}
def groupIdList = new JsonSlurper().parseText('[ "group1", "group2", "group3" ]')
addComponentToMultipleGroups(groupIdList, "/content/example/components/mycomponent")
在上面的代码中,addComponentToMultipleGroups
方法将使用groupIdList
参数中的多个ID来获取每个组件组。然后,该方法将取回要添加到组件组中的组件,使用ComponentManager
将该组件添加到组件组中,最后将当前会话保存以更新更改。
可以将getSession()
替换为任何JCR Session对象(import javax.jcr.Session
)例如页面、节点或资源解析器,以更改脚本运行的会话。同时,确保在执行脚本之前,引用所需的API库。
注意:需要在运行此脚本之前先创建组件组。