---
title: "データソースのコンテキストを設定するために接頭辞を使いましょう"
slug: "use-a-prefix-to-set-the-data-source-context"
abstract: "プレフィックスを使ってデータソースからコンポーネントデータを取得します。"
---
# データソースのコンテキストを設定するために接頭辞を使いましょう

ほとんどのSXAレンダリングは再利用性を重視し、データソースの項目からデータを取得します。つまり、表示されるコンテンツは表示されるページに縛られず、データソースの項目に保存されます。コンポーネントデータソースとは、そのコンポーネントのコンテンツがどこから取得されるかを定義するために設定する項目です。

SXAは、コンポーネントにデータソースを割り当てるいくつかの方法を提供しています。 [クエリでデータソースのコンテキストを決定](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/use-a-query-to-determine-the-data-source-context.html "Use a query to determine the data source context")したり、[ソースフィールドレポートを実行し](https://doc.sitecore.com/xp/ja/developers/sxa/93/sitecore-experience-accelerator/run-a-source-field-report-to-set-the-data-source-context.html "Run a source field report to set the data source context") てコンテキストを設定したり、プレフィックスを使ってデータソースコンテキストを決定することもできます。

## フィールドからデータソースを引き出す

フィールドからコンポーネントデータソースを取得するには:

-   以下の接頭辞を使用してください:
    
    接頭辞
    
    field:<field name>
    
    例
    
    field:Title
    

コンテキストアイテムのフィールド名をデータソースとして使用した場合、SXAは以下の動作を行います。

-   フィールドタイプがリンクフィールドの場合、SXAはターゲットアイテムIDをデータソースとして使用します。
-   フィールドタイプがリンクフィールドでなく、フィールド値が空でない場合、SXAはフィールドの生値をデータソースとして使用します。

例えば、部分的なデザインを使う製品詳細ページがあり、その部分的なデザインのコンポーネントで商品項目欄からコンテンツを選択する必要がある場合に便利です。

## ページに対してデータソースを指定します

アイテムの全パスを指定する代わりに、特別な表記法を使ってそのパスをコンテキストアイテムに対して相対的にできます。SXAは、ページがレンダリングされる際に相対パスを完全なアイテムパスに変換します。

これは、例えば部分的なデザインで、グローバルな場所からデータを取るのではなく、各ページの下にデータを保存したい場合など、再利用可能なページ要素に便利です。

ページに対するデータソースを指定するには、ページとローカルプレフィックスを使用します。

接頭辞

page:<relativepath>  
  
local:<relativepath>

例

page:/blog1  
  
local:/data/text1  
  
ダッシュ付きのアイテムはハッシュタグを使ってください。例えば:  
  
page:/#my-test-blog#

SXAはページデータフォルダのページの下に格納されたコンポーネントに対してpage: 記法を使用します。多くの場合、page: とlocal: 表記は同じ結果をもたらします。部分的なデザインで使われる場合、local: 記法はその部分的な設計の下から取られた項目を生み出しますが、page: はSXA常にページ下のデータソースを探す必要があります。

## コードでデータソースを解決する

コードでデータソースを解決するには:

1.  Sitecore.Buckets.FieldTypes.IDataSourceを実装するカスタムクラスを作成します。このインターフェースにはListQueryという単一のメソッドが含まれています。
    
    Item ListQuery(Sitecore.Data.Items.Item item)
    
2.  コードを適用するには、以下の接頭辞を使用します。
    
    接頭辞
    
    code:<full class name>
    
    例
    
    code:SXA.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クエリ表記法(フィルタリングを含む)も使用できます。

これは、アイテムツリーの位置に基づいてデータソースを動的に入力したい場合に便利です。