現在表示中:

概要

ストレージリソースプロバイダー(SRP)および SRP とユーザー生成コンテンツ(UGC)との関係について詳しくは、コミュニティコンテンツストレージおよびストレージリソースプロバイダーの概要を参照してください。

ドキュメントのこの節では、SRP および UGC に関する基本情報について説明します。

StorageResourceProvider API

SocialResourceProvider API(SRP API)は、様々な Sling リソースプロバイダー API の拡張です。これには、ページネーションおよびアトミックインクリメント(集計およびスコアに有用)のサポートが含まれています。 

日付、有用性、投票数などによる並べ替えが必要なので、SCF コンポーネントにはクエリが必要です。すべての SRP オプションには、バケットに依存しない柔軟なクエリーメカニズムがあります。

SRP 格納場所には、コンポーネントのパスが組み込まれます。ルートパスは選択された SRP オプション(ASRP、MSRP、JSRP など)に依存するので、UGC にアクセスするには常に SRP API を使用する必要があります。

SRP API は、抽象クラスではなくインターフェイスです。新規リリースへのアップグレード時に内部実装に対する今後の改善の利点を得られないので、カスタム実装には簡単に取り組まないでください。

SRP API を使用するための手段は、提供されるユーティリティ(SocialResourceUtilities パッケージで見つかるものなど)です。 

AEM 6.0 以前からアップグレードする場合、すべての SRP の UGC の移行が必要になります。そのために、オープンソースのツールを使用できます。AEM Communities 6.3 へのアップグレードを参照してください。

注意:

以前は、UGC にアクセスするためのユーティリティは SocialUtils パッケージ内にありましたが、このパッケージはなくなりました。

代わりのユーティリティについては、SocialUtils リファクタリングを参照してください。

UGC にアクセスするためのユーティリティメソッド

UGC にアクセスするには、SRP から UGC へのアクセスに適したパスを返し、SocialUtils にあった廃止されたメソッドに替わる、SocialResourceUtilities パッケージのメソッドを使用します。 

以下に、サーブレットでの 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 チェックには適していません。

ACL にアクセスするためのユーティリティメソッド

一部の SRP 実装(ASRP や MSRP など)では、コミュニティコンテンツは ACL 検証が提供されないデータベースに格納されます。シャドウノードにより、ACL を適用可能なローカルリポジトリ内の場所が提供されます。

SRP API を使用すると、すべての SRP オプションによって、すべての CRUD 操作の前にシャドウの場所の同じチェックが実行されます。

ACL をチェックするには、リソースの UGC に適用される権限のチェックに適したパスを返すメソッドを使用します。 

以下に、サーブレットでの 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 へのアクセス自体には適していません。

UGC 関連の格納場所

格納場所に関する以下の説明は、JSRP または MSRP を使用した開発時に役立つ場合があります。JSRP (CRXDE Lite)および MSRP(MongoDB ツール)用があるので、ASRP に格納された UGC にアクセスするための UI は現在はありません。

コンポーネントの場所

メンバーがパブリッシュ環境で 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>
  • JSRP の UGC ノード = /content/usergenerated/asi/jcr/content/community-components/en/comments/jcr:content/content/includable/comments/srzd-let_it_be_

JSRP の場合、UGC ノードはそれが入力された AEM インスタンス(オーサーまたはパブリッシュ)上にのみ存在することに注意してください。パブリッシュインスタンスで入力された場合、オーサーのモデレートコンソールからのモデレートはできません。

関連情報

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

リーガルノーティス   |   プライバシーポリシー