アイテムとフィールドの拡張

概要

SXA のアイテム拡張について詳しく説明します。

このトピックでは、フィールド、アイテム プロパティ、およびフィールド プロパティへのアクセスを容易にする SXA アイテム拡張について説明します。

i_item.children

アイテムの子を Item リストとして返します。

アイテムの子をリンクのリストとしてレンダリングします。

{{ for i_child in i_datasource.children }}
<a href="{{ i_child.url }}">{{ i_child.Title }}</a><br/>
{{ end }}

i_item.display_name

アイテムの Display Name を返します。

データ ソース アイテムの Display name をリンクのテキストとして使用し、Data Source コンポーネントへのリンクをレンダリングします。

<a href="{{ i_datasource.url }}">{{ i_datasource.display_name }}</a>

i_item.id

アイテムの ID を返します。

アイテムの ID を出力します。

{{ i_item.id }}

i_item.has_children

アイテムに子がある場合、true を返します。

現在のページに子がある場合、これらの子へのリンクをレンダリングします。

{{
    if i_page.has_children
        for i_child in i_page.children
            }}<a href="{{ i_child.url }}">{{ i_child.display_name }}</a><br/>{{
        end
    end  }}

i_item.has_layout

アイテムにレイアウト情報がある場合、true を返します。

子を持つページの子をレンダリングします。

{{
    for i_child in i_page.children
        if i_child.has_layout
            }}<a href="{{ i_child.url }}">{{ i_child.display_name }}</a><br/>{{
        end
    end  }}

i_item.language

アイテムの言語コードを返します。

アイテムが英語でレンダリングされる場合、そのことを示すテキストを出力します。

{{ if i_page.language == 'en' }}
This page is rendered in English<br/>
{{ end }}

i_item.media_url

アイテムのメディア URL を返します。

Promo コンポーネント画像のダウンロード リンクをレンダリングします。

<a download href="{{ i_datasource.PromoIcon.media_url }}">{{ i_datasource.PromoIcon.name }}</a>

i_item.name

アイテムの Name を返します。

データ ソース アイテムの Name をリンクのテキストとして使用し、Data Source コンポーネントへのリンクをレンダリングします。

<a href="{{ i_datasource.url }}">{{ i_datasource.name }}</a>

i_item.path

アイテムのパスを返します。

アイテムが /sitecore/コンテンツの下にある場合にのみ、アイテムへのリンクをレンダリングします。

{{ if string.starts_with i_item.path "/sitecore/content" }}
<a href="{{ i_item.url }}">{{ i_item.Title }}</a><br/>
{{ end }}

i_item.parent

アイテムの親を返します。

データ ソース アイテムの親へのリンクをレンダリングします。

<a href="{{ i_item.parent.url }}">{{ i_item.parent.Title }}</a><br/>
{{ end }}

i_item.template_id

アイテム テンプレートの ID を string で返します。

アイテムの ID を出力します。

{{ i_item.template_id }}

i_item.template_name

アイテム テンプレートの名前を string で返します。

アイテム テンプレートの名前を返します。

{{ if i_item.template_name == "Gallery Image" }}
 ... render HTML for Gallery image
{{end}}

i_item.url

LinkProvider サイトを使用してアイテムへの URL を返します。

データ ソース アイテムの Display name をリンクのテキストとして使用し、Data Source コンポーネントへのリンクをレンダリングします。

<a href="{{ i_datasource.url }}">{{ i_datasource.display_name }}</a>

i_item.version

アイテムのバージョン番号を返します。

アイテムのバージョン番号を出力します。

{{ i_item.version }}

i_item.FieldName

テンプレート内のフィールドをレンダリングします。

FieldName をアイテム オブジェクトに付加することで、テンプレート内でフィールドをレンダリングします。

  {{ i_item.Title }}

注記

i_item.FieldName では、「.」や「,」、空白などの特殊文字を含むフィールドへのリンクをたどることはできません。データ属性やフィールドのフォールバックもサポートしていません。このような場合は、sc_field の機能を使用してください。

i_item.Field.raw

フィールドの Raw の値を返します。たとえば、JavaScript で使用するアイテムや編集できないボタンに ID をレンダリングする場合などです。

ボタンにテキストをレンダリングします。

<button type="button" class="btn btn-primary">{{ i_item.ButtonText.raw }}</button>

i_item.Field.target

アイテムへのリンクを格納できるフィールドで選択されたアイテムを返します。フィールドに複数のアイテムへのリンクを含めることができる場合、リストの最初のアイテムが返されます。フィールドが空の場合、関数は null 値を返します。

注記

i_item.Field.target では、「.」や「,」、空白などの特殊文字を含むフィールドへのリンクをたどることはできません。このような場合は、sc_follow の機能を使用してください。

プロモ コンポーネントからリンクされた商品に関する詳細情報をレンダリングするには:

{{ i_linkedpage = i_item.PromoLink.target }}
<h2>{{ i_linkedpage.Title }}</h2>
<b>Content</b>:{{ i_linkedpage.Content }}

i_page.Field.targets

アイテムへのリンクを格納できるフィールドで選択されたアイテムの配列を返します。フィールドが空の場合、関数は空のリストを返します。

注記

i_page.Field.target では、「.」や「,」、空白などの特殊文字を含むフィールドへのリンクをたどることはできません。このような場合は、sc_followmany の機能を使用してください。

現在の商品に関連する商品をレンダリングするには:

{{ for i_product in i_page.RelatedProducts.targets }}
  <h2>{{ i_product.Title }}</h2>
  <b>Content</b>:{{ i_product.Content }}
{{ end }}

Fluent 表記でフィールドを使用する場合、フィールドのカスケードとフォールバックを使用して、より複雑なシナリオを簡素化できます。たとえば、i_item.FieldLinkingToItem.HelperOrFieldToRender のように Fluent 表記でリンク フィールドをカスケードすれば、.target ヘルパーを呼び出さなくてもアイテムにアクセスすることができます。

たとえば、記事ページの FirstName というフィールドが、Author というフィールドの一部である Author Info というフィールドの一部である場合に、このフィールドをレンダリングする場合です。

Article by: {{ i_page.Author.FirstName }}

Fluent 表記でフィールド名をカスケードすることにより、複数のデータ テンプレートをサポートするテンプレートを作成できます。テンプレート エンジンは、フィールドを左から右に解決してレンダリングしようとし、アイテムで見つかった最初のフィールドをレンダリングします。

たとえば、ページに Author フィールドがない場合、テンプレート エンジンは FirstName フィールドを i_page から直接レンダリングしようとします。