データソースのコンテキストを設定するために接頭辞を使いましょう
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
ほとんどのSXAレンダリングは再利用性を重視し、データソースの項目からデータを取得します。つまり、表示されるコンテンツは表示されるページに縛られず、データソースの項目に保存されます。コンポーネントデータソースとは、そのコンポーネントのコンテンツがどこから取得されるかを定義するために設定する項目です。
SXAは、コンポーネントにデータソースを割り当てるいくつかの方法を提供しています。 クエリでデータソースのコンテキストを決定したり、ソースフィールドレポートを実行し てコンテキストを設定したり、プレフィックスを使ってデータソースコンテキストを決定することもできます。
フィールドからデータソースを引き出す
フィールドからコンポーネントデータソースを取得するには:
-
以下の接頭辞を使用してください:
接頭辞
field:
例
field
コンテキストアイテムのフィールド名をデータソースとして使用した場合、SXAは以下の動作を行います。
- フィールドタイプがリンクフィールドの場合、SXAはターゲットアイテムIDをデータソースとして使用します。
- フィールドタイプがリンクフィールドでなく、フィールド値が空でない場合、SXAはフィールドの生値をデータソースとして使用します。
例えば、部分的なデザインを使う製品詳細ページがあり、その部分的なデザインのコンポーネントで商品項目欄からコンテンツを選択する必要がある場合に便利です。
ページに対してデータソースを指定します
アイテムの全パスを指定する代わりに、特別な表記法を使ってそのパスをコンテキストアイテムに対して相対的にできます。SXAは、ページがレンダリングされる際に相対パスを完全なアイテムパスに変換します。
これは、例えば部分的なデザインで、グローバルな場所からデータを取るのではなく、各ページの下にデータを保存したい場合など、再利用可能なページ要素に便利です。
ページに対するデータソースを指定するには、ページとローカルプレフィックスを使用します。
接頭辞
page:
local:
例
page:/blog1
local:/data/text1
ダッシュ付きのアイテムはハッシュタグを使ってください。例えば:
page:/#my-test-blog#
SXAはページデータフォルダのページの下に格納されたコンポーネントに対してpage: 記法を使用します。多くの場合、page: とlocal: 表記は同じ結果をもたらします。部分的なデザインで使われる場合、local: 記法はその部分的な設計の下から取られた項目を生み出しますが、page: はSXA常にページ下のデータソースを探す必要があります。
コードでデータソースを解決する
コードでデータソースを解決するには:
-
Sitecore.Buckets.FieldTypes.IDataSourceを実装するカスタムクラスを作成します。このインターフェースにはListQueryという単一のメソッドが含まれています。
Item ListQuery(Sitecore.Data.Items.Item item)
-
コードを適用するには、以下の接頭辞を使用します。
接頭辞
code:
例
code
.POC.DataSources.CodeDataSource,SXA.POC
このメソッドを使えば、データソースに使いたいアイテムの配列が得られます。Sitecoreに渡されるアイテムは、コードが返すアイテムとなります。もしこれを使ってコンポーネントのデータソースを設定する場合、それがそのContext.Itemとなります。あなたのコードはresolveRenderingDatasourceパイプラインプロセッサで呼び出されます。
例えば、時間帯や他のビジネス特有の条件に基づいて異なる商品を返品したい場合に便利です。
コンテンツ検索でデータソースを取得する
コンテンツ検索クエリを使ってSitecoreのアイテムを取得します。検索クエリの絞り込み条件を提供することで、コンポーネントが取得するアイテムを制限できます。
これは、SXAの動的クエリトークンを使いたい場合や、データソースのファセットに基づいてアイテムを選びたい場合に便利です。
接頭辞
Sitecore content search query
例
template:{57bcf1ce-35cb-4752-b23b-2d4522af6292};location:{85C181E3-3C5C-4591-9634-F7A90AFDCAA0}
Sitecoreクエリでデータソースを取得する
Sitecoreクエリを使ってSitecoreのアイテムを取得することができます。標準的なSitecoreクエリ表記法(フィルタリングを含む)も使用できます。
これは、アイテムツリーの位置に基づいてデータソースを動的に入力したい場合に便利です。