如果不熟悉存储资源提供程序(SRP)及其与用户生成内容(UGC)的关系,请访问 社区内容存储 和 存储资源提供程序概述.
此文档的此部分提供了有关SRP和UGC的一些基本信息。
SocialResourceProvider API (SRP API)是各种Sling资源提供程序API的扩展。 它包括对分页和原子增量的支持(可用于计数和评分)。
SCF组件需要查询,因为需要按日期、有用性、票数等排序。 所有SRP选项都有灵活的查询机制,不依赖于分段。
SRP存储位置包含组件路径。 SRP API应始终用于访问UGC,因为根路径取决于所选的SRP选项,如ASRP、MSRP或JSRP。
SRP API不是抽象类,它是一个接口。 不应轻率地实施自定义实施,因为升级到新版本时将错过对内部实施进行未来改进的好处。
使用SRP API的方法是通过提供的实用程序,例如SocialResourceUtilities包中的实用程序。
从AEM 6.0或更低版本升级时,需要迁移所有SRP的UGC(有可用的开源工具)。 参见 升级到AEM Communities 6.3.
过去,用于访问UGC的实用工具在SocialUtils包中找到,但该包不再存在。
有关替换实用工具,请参阅 SocialUtils重构.
要访问UGC,请使用SocialResourceUtilities包中的方法,该方法返回适用于从SRP访问UGC的路径,并替换在SocialUtils包中找到的已弃用方法。
以下是在servlet中使用resourceToUGCStoragePath()方法的最小示例:
import com.adobe.cq.social.srp.utilities.api.SocialResourceUtilities;
@Reference
private SocialResourceUtilities socialResourceUtilities;
@Override
protected void doGet(final SlingHttpServletRequest request, final SlingHttpServletResponse response) throws ServletException, IOException {
String ugcPath = socialResourceUtilities.resourceToUGCStoragePath(request.getResource());
// rest of servlet
}
有关其他SocialUtils替换,请参阅 SocialUtils重构.
有关编码准则,请访问 使用SRP访问UGC.
resourceToUGCStoragePath()返回的路径为 非 适合 ACL检查.
一些SRP实现(如ASRP和MSRP )将社区内容存储在不提供ACL验证的数据库中。 影子节点提供本地存储库中可以应用ACL的位置。
使用SRP API,所有SRP选项在所有CRUD操作之前对阴影位置执行相同的检查。
要检查ACL,请使用返回适合检查应用于资源UGC的权限的路径的方法。
以下是在servlet中使用resourceToACLPath()方法的简单示例:
import com.adobe.cq.social.srp.utilities.api.SocialResourceUtilities;
@Reference
private SocialResourceUtilities socialResourceUtilities;
@Override
protected void doGet(final SlingHttpServletRequest request, final SlingHttpServletResponse response) throws ServletException, IOException {
String aclPath = socialResourceUtilities.resourceToACLPath(request.getResource());
// rest of servlet
}
resourceToACLPath()返回的路径为 非 适合 访问UGC 本身。
以下对存储位置的描述在使用JSRP或MSRP进行开发时可能会有所帮助。 与JSRP一样,当前没有用于访问ASRP中存储的UGC的UI(CRXDE Lite)和MSRP (MongoDB工具)。
组件位置
当成员在发布环境中进入UGC时,他们作为AEM站点的一部分与组件交互。
以下是此类组件的示例 注释组件 中存在于 社区组件指南 站点。 本地存储库中注释节点的路径为:
/content/community-components/en/comments/jcr:content/content/includable/comments
阴影节点位置
创建UGC还会创建 影子节点 应用了必要的ACL。 本地存储库中相应影子节点的路径是影子节点根路径前置到组件路径的结果:
/content/usergenerated
/content/usergenerated/content/community-components/en/comments/jcr:content/content/includable/comments
UGC位置
UGC既不会在这两个位置创建,也只能使用进行访问 效用法 调用SRP API。
/content/usergenerated/asi/srp-choice
/content/usergenerated/asi/jcr/content/community-components/en/comments/jcr:content/content/includable/comments/srzd-let_it_be_
注意,对于JSRP,UGC节点将 仅限 在输入它的AEM实例(创作或发布)中存在。 如果在发布实例中输入,则无法从“创作”的“审阅”控制台中进行审阅。