我对如何做到这一点做了相当多的研究,最后得出结论:
Session session = resourceResolver.adaptTo(Session.class);
Node formRootNode = resourceResolver.getResource("/content/usergenerated/content/XXX").adaptTo(Node.class);
String id = incrementId(formRootNode);
Node formNode = formRootNode.addNode("data" + id, "nt:unstructured");
formNode.setProperty("id", id);
formNode.setProperty("name", "John");
session.save();
formNode.setProperty("cq:distribute", true);
formNode.setProperty("cq:lastModified", Calendar.getInstance());
formNode.setProperty("cq:lastModifiedBy", session.getUserID());
session.save();
对于XXX,其类型为cq:Page。当我在 Publisher 中尝试此代码时,新节点确实被插入到 Publisher 中(例如:/content/user generated/content/XXX/data1),只是它没有被复制致作者。
我已经收集了有关如何通过互联网执行此操作的任何可能的专业知识:
- http://forums.adobe.com/message/4904901 (主要引用,因为它已“回答”)
- CQ 5.6 Reverse replication: Replication triggered, but no agent found or selected (次要引用)
- http://helpx.adobe.com/experience-manager/kb/HowToUseReverseReplication.html (没有注意到任何类似建议的传出/传入日志)
不幸的是,在研究了上述建议/示例后仍然无法使其正常工作,任何人都可以请阐明一些情况吗?
最佳答案
- 为每个用户生成的内容创建一个单独的
cq:Page
。 cq:distribute
属性应在jcr:content
资源上设置。
示例:
Session session = resourceResolver.adaptTo(Session.class);
Node formRootNode = JcrUtil.createPath("/content/usergenerated/content/formPage", true, "sling:Folder", "cq:Page", session, false);
Node formNode = formRootNode.addNode("jcr:content", "cq:PageContent");
formNode.setProperty("name", "John");
session.save();
formNode.setProperty("cq:distribute", true);
formNode.setProperty("cq:lastModified", Calendar.getInstance());
formNode.setProperty("cq:lastModifiedBy", session.getUserID());
session.save();
示例使用JcrUtil.createPath
在 /content/user generated/content
下创建唯一节点。
关于java - ADOBE CQ 5.5 反向复制(发布者 -> 作者)由代码触发,但根本不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21887189/