将工作区从作者实例发布到公共
Posted
技术标签:
【中文标题】将工作区从作者实例发布到公共【英文标题】:Publish workspace from Author instance to public 【发布时间】:2016-08-03 11:43:28 【问题描述】:我得到了新创建的 Magnolia 实例。我尝试通过捆绑的 groovy 脚本创建应用程序并将新闻发布到公共实例。我收到了这个错误
发生这种情况是因为“ebtnews”工作空间未从作者同步到私人。那么问题是如何将工作空间从作者同步到私人?
【问题讨论】:
【参考方案1】:每次我在我的作者实例的模块定义 xml 中添加一个新的工作区时,我都会确保我也在我的公共实例的模块定义 xml 中添加了这个工作区。然后需要重新启动作者和公共实例才能创建新的工作区。
【讨论】:
【参考方案2】:或者,您可以通过 groovy 控制台/脚本运行以下命令:
// create workspace
Components.getSingleton(RepositoryManager.class).createWorkspace(app_repository, app_workspace)
// check we registered all right
appSession = ctx.getJCRSession(app_workspace)
// register node type
nodeTypeManager = appSession.getWorkspace().getNodeTypeManager()
type = NodeTypeTemplateUtil.createSimpleNodeType(nodeTypeManager, app_node_type, Arrays.asList(NodeType.NT_HIERARCHY_NODE, NodeType.MIX_REFERENCEABLE, NodeTypes.Created.NAME, NodeTypes.Activatable.NAME, NodeTypes.LastModified.NAME, NodeTypes.Renderable.NAME))
nodeTypeManager.registerNodeType(type, true)
appSession.save()
// double check it registered all right
nodeTypeManager.getNodeType(app_node_type)
您还需要为工作区注册基本安全权限,在订阅者工作区映射下设置它以启用激活,并可能在公共实例上更新内容时从触发器列表中包含/排除它以刷新缓存。
您可以在 groovy 模块的 createAppScript
示例脚本中找到执行所有这些操作的代码。我上面粘贴的代码实际上来自同一个脚本。
优点是您可以在运行时完成所有这些操作而无需重新启动。缺点是您需要在每个实例上运行相同的代码。
【讨论】:
以上是关于将工作区从作者实例发布到公共的主要内容,如果未能解决你的问题,请参考以下文章
MAGNOLIA CMS - cmsu:simpleSearch 在作者实例中工作,但在公共实例中不返回任何结果