使用可能な Liquid のフィルター

Liquid フィルターは文字列、数字、変数、およびオブジェクトの出力を変更するために使用されます。 これらは、| によって適用される値とは区切られています。

{{ 'hal 9000' | upcase }} <!-- Output: HAL 9000 -->

パラメーターを受け入れるフィルターもあります。 またフィルターを組み合わせて左から右の順序に適用することもできます。

{{ 2 | times: 2 | minus: 1 }} <!-- Output: 3 -->

{{ "Hello, " | append: user.firstname }} <!-- Output: Hello, Dave -->

下のセクションでは、さまざまなフィルターについて説明します。

配列のフィルター

配列のフィルターは、配列の操作をする際に使用します。

バッチ

配列を、指定したサイズの複数の配列に分割します。

コード

{% assign batches = entityview.records | batch: 2 %}

{% for batch in batches %}

<ul>

{% for item in batch %}

<li>{{ item.fullname }}</li>

{% endfor %}

</ul>

{% endfor %}

出力

<ul>

<li>John Smith</li>

<li>Dave Thomas</li>

</ul>

<ul>

<li>Jake Johnson</li>

<li>Jack Robinson</li>

</ul>

concat (連結)

2 つの配列を 1 つの新しい配列に連結します。

パラメーターとして 1 つの要素がある場合、concat は、指定の要素を最後に置く、元の配列から構成される新しい配列を返します。

コード

Group #1: {{ group1 | join: ', ' }}

Group #2: {{ group2 | join: ', ' }}

Group #1 + Group #2: {{ group1 | concat: group2 | join: ', ' }}

出力

Group #1: John, Pete, Hannah

Group #2: Joan, Bill

Group #1 + Group #2: John, Pete, Hannah, Joan, Bill

except (除外)

配列内で、指定した属性について指定した値を持たない、すべてのオブジェクトを選択します。 (これは where の反対です。)

コード

{% assign redmond = entityview.records | except: 'address1_city', 'Redmond' %}

{% for item in redmond %}

{{ item.fullname }}

{% endfor %}

Output

Jack Robinson

第 1

配列の最初の要素を返します。

タグ内で使用する必要がある場合など、ドットを使用する特殊表記でも first を使用することができます。

コード

{% assign words = This is a run of text | split:   %}

{{ words | first }}

{% if words.first == This %}

The first word is This.

{% endif %}

出力

This

The first word is This.

グループ化

指定した属性で、配列の項目をグループ化します。

コード

{% assign groups = entityview.records | group_by: 'address1_city' %}

{% for group in groups %}

{{ group.key }}:

{% for item in group.items %}

{{ item.fullname }}

{% endfor %}

{% endfor %}

出力

Redmond:

John Smith

Dave Thomas

Jake Johnson

New York:

Jack Robinson

join (結合)

パラメーターで渡される文字を使用して、配列の要素を結合します。 結果は、単一の文字列になります。

コード

{% assign words = This is a run of text | split:   %}

{{ words | join: ,  }}

出力

This, is, a, run, of, text

最終

配列の最後の要素を返します。

タグ内で使用する必要がある場合など、ドットを使用する特殊表記でも last を使用することができます。

コード

{% assign words = This is a run of text | split:   -%}

{{ words | last }}

{% if words.last == text -%}

The last word is text.

{% endif -%}

Output

text

The last word is text.

order_by

指定した属性で配列要素を並べ替えた配列要素を返します。

オプションで、2 番目のパラメーターとして desc を指定すると、昇順のかわりに降順で要素を並べ替えます。

コード

{{ entityview.records | order_by: 'fullname' | join: ', ' }}

{{ entityview.records | order_by: 'fullname', 'desc' | join: ', ' }}

Output

Dave Thomas, Jack Robinson, Jake Johnson, John Smith

John Smith, Jake Johnson, Jack Robinson, Dave Thomas

random (ランダム)

配列から、ランダムに選択された単一の項目を返します。

コード

{{ group1 | join: ', ' }}

{{ group1 | random }}

Output

John, Pete, Hannah

Pete

select

配列の各項目について指定した属性の値を選択し、これらの値を配列として返します。

コード

{{ entityview.records | select: 'address1_city' | join: ', ' }}

出力

Redmond, New York

shuffle (シャッフル)

配列に使用すると、同じ項目を含んだ、ランダムな順で並び替えられた新しい配列を返します。

コード

{{ group1 | join: ', ' }}

{{ group1 | shuffle | join: ', ' }}

出力

John, Pete, Hannah

Hannah, John, Pete

size (サイズ)

配列内の項目の数を返します。

タグ内で使用する必要がある場合など、ドットを使用する特殊表記でも size を使用することができます。

コード

{% assign words = This is a run of text | split:   -%}

{{ words | size }}

{% if words.size == 6 -%}

The text contains 6 words.

{% endif -%}

出力

6

The text contains 6 words.

skip (スキップ)

配列内で指定した数の項目をスキップし、残りの配列を返します。

コード

{% assign words = This is a run of text | split:   %}

{{ words | skip: 3 | join: ', ' }}

出力

run, of, text

take (取り出し)

配列から指定した数の項目を取り出し、取り出した項目を返します。

コード

{% assign words = This is a run of text | split:   %}

{{ words | take: 3 | join: ', ' }}

Output


This, is, a

then_by

すでに order_by で並び替えられている配列に、後続の並び替え基準を追加します。

オプションで、2 番目のパラメーターとして desc を指定すると、昇順のかわりに降順で要素を並べ替えます。

コード

{{ entityview.records | order_by: 'address1_city' | then_by: 'fullname' | join: ', ' }}

{{ entityview.records | order_by: 'address1_city' | then_by: 'fullname', 'desc' | join: ', ' }}

出力

Dave Thomas, Jack Robinson, Jake Johnson, John Smith

John Smith, Jake Johnson, Jack Robinson, Dave Thomas

ここで、

配列内で、指定した属性について指定した値を持つ、すべてのオブジェクトを選択します。

コード

{% assign redmond = entityview.records | where: 'address1_city', 'Redmond' %}

{% for item in redmond %}

{{ item.fullname }}

{% endfor %}

出力

John Smith

Dave Thomas

Jake Johnson

日付フィルター

日付フィルターは、日付の計算や、DateTime 値のさまざまな形式への変換に使用します。

日付

.NET の書式設定文字列を使用して DateTime 値を書式設定します。

標準の日付および時刻の書式設定文字列

カスタムの日付および時刻の書式設定文字列

コード

{{ now | date: 'g' }}

{{ now | date: 'MMMM dd, yyyy' }}

Output

5/7/2018 7:20 AM

May 07, 2018

date_add_days

DateTime 値に、整数または小数の日数を加算します。 パラメーターは正および負を使用できます。

コード

{{ now }}

{{ now | date_add_days: 1 }}

{{ now | date_add_days: -2.5 }}

Output

5/7/2018 7:20:46 AM

5/8/2018 7:20:46 AM

5/4/2018 7:20:46 PM

date_add_hours

DateTime 値に、整数または小数の時間を加算します。 パラメーターは正および負を使用できます。

コード

{{ now }}

{{ now | date_add_hours: 1 }}

{{ now | date_add_hours: -2.5 }}

Output

5/7/2018 7:20:46 AM

5/7/2018 8:20:46 AM

5/7/2018 4:50:46 AM

date_add_minutes

DateTime 値に、整数または小数の分を加算します。 パラメーターは正および負を使用できます。

コード

{{ now }}

{{ now | date_add_minutes: 10 }}

{{ now | date_add_minutes: -2.5 }}

Output

5/7/2018 7:20:46 AM

5/7/2018 7:30:46 AM

5/7/2018 7:18:16 AM

date_add_months

DateTime 値に、整数の月を加算します。 パラメーターは正および負を使用できます。

コード

{{ now }}

{{ now | date_add_months: 1 }}

{{ now | date_add_months: -2 }}

Output

5/7/2018 7:20:46 AM

6/7/2018 7:20:46 AM

3/7/2018 7:20:46 AM

date_add_seconds

DateTime 値に、整数または小数の秒を加算します。 パラメーターは正および負を使用できます。

コード

{{ now }}

{{ now | date_add_seconds: 10 }}

{{ now | date_add_seconds: -1.25 }}

Output

5/7/2018 7:20:46 AM

5/7/2018 7:20:56 AM

5/7/2018 7:20:45 AM

date_add_years

DateTime 値に、整数の年を加算します。 パラメーターは正および負を使用できます。

コード

{{ now }}

{{ now | date_add_years: 1 }}

{{ now | date_add_years: -2 }}

Output

5/7/2018 7:20:46 AM

5/7/2019 7:20:46 AM

5/7/2016 7:20:46 AM

date_to_iso8601

DateTime 値を ISO 8601 標準に従って書式設定します。 Atom フィード や HTML5 の <時間> 要素を作成する場合に役立ちます。

コード

{{ now | date_to_iso8601 }}

Output

2018-05-07T07:20:46Z

date_to_rfc822

DateTime 値を RFC 822 標準に従って書式設定します。 RSS フィード を作成する場合に役立ちます。

コード

{{ now | date_to_rfc822 }}

Output

Mon, 07 May 2018 07:20:46 Z

エスケープ フィルター

エスケープ シーケンスは、プログラミング言語や形式による通常の文字の解釈と矛盾することなく、文字列に特殊文字を含める方法を提供します。

次のエスケープ フィルターは、文字列文字をエスケープ シーケンスに置き換えるか、送信先の種類に基づいて無効な文字列文字を削除します。

escape

HTML のエスケープ文字列。

コード

{{ '<p>test</p>' | escape }}

Output

&lt;p&gt;test&lt;/p&gt;

html_safe_escape

指定された HTML 文字列を安全な HTML フラグメントに変換します。

コード

{{ '<img src="images/myimage.jpg" onerror="alert(1);">' | html_safe_escape }}

Output

<img src="images/myimage.jpg">

url_escape

文字列を URL エスケープして、URL として含められるようにします。

コード

{{ 'This & that//' | url_escape }}

Output

This+%26+that%2F%2F

xml_escape

文字列を XML エスケープして、XML 出力の中で使用できるようにします。

コード

{{ '<p>test</p>' | xml_escape }}

Output

&lt;p&gt;test&lt;/p&gt;

リスト フィルター

特定の entitylist 属性値を使用するため、およびリスト ビューを作成するために、リスト フィルターを使用します。

current_sort

指定された並べ替えを定義する式は、指定された属性を並べ替える現在方向を返します。

コード

{{ 'name ASC, createdon DESC' | current_sort: 'createdon' }}

Output

DESC

metafilters

entitylist filter_definition JSON 値を解析して、フィルター オプション グループ オブジェクトにします。

metafilters には現在の属性フィルター クエリと現在の entitylist がオプションで提供され、返されたフィルター オブジェクトを選択または選択解除のいずれかにフラグ設定できるようになります。

コード

{% assign filters = entitylist | metafilters: params.mf, entityview %}
{% if filters.size > 0 %}
  <ul id=entitylist-filters>
    {% for filter in filters %}
      <li class=entitylist-filter-option-group>
        {% if filter.selection_mode == 'Single' %}
          {% assign type = 'radio' %}
        {% else %}
          {% assign type = 'checkbox' %}
        {% endif %}
        <h4 class=entitylist-filter-option-group-label
          data-filter-id={{ filter.id | h }}>
          {{ filter.label | h }}
        </h4>
        <ul>
          {% for option in filter.options %}
            <li class=entitylist-filter-option>
              {% if option.type == 'text' %}
                <div class=input-group entitylist-filter-option-text>
                  <span class=input-group-addon>
                    <span class=fa fa-filter aria-hidden=true></span>
                  </span>
                  <input class=form-control
                    type=text
                    name={{ filter.id | h }}
                    value={{ option.text | h }} />
                </div>
              {% else %}
                <div class={{ type | h }}>
                  <label>
                    <input
                      type={{ type | h }}
                      name={{ filter.id | h }}
                      value={{ option.id | h }}
                      {% if option.checked %}
                        checked=checked
                        data-checked=true{% endif %}
                      />
                    {{ option.label | h }}
                  </label>
                </div>
              {% endif %}
            </li>
          {% endfor %}
        </ul>
      </li>
    {% endfor %}
  </ul>
  <button class=btn btn-default data-serialized-query=mf data-target=#entitylist-filters>Apply Filters</button>
{% endif %}

reverse_sort

指定された並べ替えの向きとは逆の向きを返します。

コード

<!-- Sort direction is not case-sensitive -->

{{ 'ASC' | reverse_sort }}

{{ 'desc' | reverse_sort }}

出力

DESC

ASC

Math フィルター

Math フィルターは、数値 による、数学的操作の実行を可能にします。

すべてのフィルターと同じように、Math フィルターはつなげることが可能で、左から右の順に適用されます。

コード

{{ 10 | times: 2 | minus: 5 | divided_by: 3 }}

出力

5

ceil

最近似値の整数に最も近い上の値に四捨五入します。

コード

{{ 4.6 | ceil }}

{{ 4.3 | ceil }}

Output

5

5

divided_by

異なる数で数を分けます。

コード

{{ 10 | divided_by: 2 }}

{{ 10 | divided_by: 3 }}

{{ 10.0 | divided_by: 3 }}

Output

5

3

3.333333

floor

最近似値の整数に最も近い下の値に四捨五入します。

コード

{{ 4.6 | floor }}

{{ 4.3 | floor }}

出力

4

4

minus

別の数から数を減算します。

コード

<!-- entityview.page = 11 -->

{{ entityview.page | minus: 1 }}

{{ 10 | minus: 1.1 }}

{{ 10.1 | minus: 1 }}

出力

10

9

9.1

modulo

別の数で数を分割し、残りの数を返します。

コード

{{ 12 | modulo: 5 }}

出力

2

plus

他の数に数を追加します。

コード

<!-- entityview.page = 11 -->

{{ entityview.page | plus: 1 }}

{{ 10 | plus: 1.1 }}

{{ 10.1 | plus: 1 }}

出力

12

11

11.1

round

最近似値の整数、または指定された小数点で値を四捨五入します。

コード

{{ 4.6 | round }}

{{ 4.3 | round }}

{{ 4.5612 | round: 2 }}

出力

5

4

4.56

times

異なる数で数を乗数します。

コード

{{ 10 | times: 2 }}

{{ 10 | times: 2.2 }}

{{ 10.1 | times: 2 }}

出力

20

20

20.2

文字列フィルター

文字列フィルタは、文字列 を処理します。

追加

別の文字列の末尾に文字列を追加します。

コード

{{ 'filename' | append: '.js' }}

Output

filename.js

capitalize

文字列のすべての単語の先頭を大文字にします。

コード

{{ 'capitalize me' | capitalize }}

Output

Capitalize Me

downcase

文字列を小文字に変換します。

コード

{{ 'MIxed Case TExt' | downcase }}

Output

mixed case text

newline_to_br

文字列の中の改行位置に、改行の HTML タグ <br /> を挿入します。

コード

{% capture text %}

A

B

C

{% endcapture %}

{{ text | newline_to_br }}

出力

A<br />

B<br />

C<br />

prepend

別の文字列の先頭に文字列を追加します。

コード

{{ 'Jane Johnson' | prepend: 'Dr. ' }}

出力

Dr. Jane Johnson

remove

文字列から特定のサブストリングをすべて削除します。

コード

{{ 'Hello, Dave. How are you, Dave?' | remove: 'Dave' }}

Output

Hello, . How are you, ?

remove_first

文字列から最初の特定のサブストリングを削除します。

コード

{{ 'Hello, Dave. How are you, Dave?' | remove_first: 'Dave' }}

出力

Hello, . How are you, Dave?

replace

文字列から特定のサブストリングをすべて別の文字列に置換します。

コード

{{ 'Hello, Dave. How are you, Dave?' | replace: 'Dave', 'John' }}

Output

Hello, John. How are you, John?

replace_first

文字列から最初の特定のサブストリングを別の文字列に置換します。

コード

{{ 'Hello, Dave. How are you, Dave?' | replace_first: 'Dave', 'John' }}

出力

Hello, John. How are you, Dave?

split

split フィルタは、サブストリングをパラメーターとして受け取ります。 そのサブストリングは、文字列を配列に分割する際の区切り文字として使用されます。

コード

{% assign words = This is a demo of the split filter | split: ' ' %}

First word: {{ words.first }}

First word: {{ words[0] }}

Second word: {{ words[1] }}

Last word: {{ words.last }}

All words: {{ words | join: ', ' }}

Output

First word: This

First word: This

Second word: is

Last word: filter

All words: This, is, a, demo, of, the, split, filter

strip_html

文字列のすべての HTML タグを除去します。

コード

<p>Hello</p>

Output

Hello

strip_newlines

文字列からすべての改行を除去します。

コード

{% capture text %}

A

B

C

{% endcapture %}

{{ text | strip_newlines }}

Output

ABC

text_to_html

プレーン テキストを単純な HTML として整形します。 テキストが HTML にエンコードされ、改行で区切られたテキストのブロックは、パラグラフ タグ <p> で囲われます。単一の改行は <br> に置換されます。URL はハイパーリンクに変換されます。

コード

{{ note.notetext | text_to_html }}

Output

<p>This is the first paragraph of notetext. It contains a URL: <a href="https://example.com/" rel="nofollow">https://example.com</a></p>

<p>This is a second paragraph.</p>

truncate

文字列を指定された文字数で切り出します。 省略記号 (...) が文字列に付けられ、これも文字数に含まれます。

コード

{{ 'This is a long run of text.' | truncate: 10 }}

Output

This is...

truncate_words

文字列を指定された単語数で切り出します。 切り出した文字列には省略記号 (...) が付けられます。

コード

{{ 'This is a long run of text.' | truncate_words: 3 }}

Output

This is a...

upcase

文字列を大文字に変換します。

コード

{{ 'MIxed Case TExt' | upcase }}

Output

MIXED CASE TEXT

フィルターの入力

型のフィルターにより、ある型の値を他の型の値に変換することができます。

boolean

文字列値をブール値に変換しようとします。 この値がすでにブール値である場合は、変更されずに返されます。 値がブール値に変換できない場合は、null が返されます。

また、このフィルターは"on"、"有効化"、または "はい" を "true" として、"off"、"無効"、および "いいえ" を "false" として受け取ります。

コード

{{ true | boolean }}

{{ 'false' | boolean }}

{{ 'enabled' | boolean }}

{{ settings['something/enabled'] | boolean | default: false }}

Output

true

false

true

false

decimal

文字列値を 10 進数に変換しようとします。 この値がすでに 10 進数である場合は、変更されずに返されます。 値が 10 進数に変換できない場合は、null が返されます。

コード

{{ 10.1 | decimal }}

{{ '3.14' | decimal }}

{{ 'text' | decimal | default: 3.14 }}

出力

10.1

3.14

3.14

integer

文字列値を整数に変換しようとします。 この値がすでに整数である場合は、変更されずに返されます。 値が整数に変換できない場合は、null が返されます。

コード

{{ 10 | integer }}

{{ '10' | integer }}

{{ '10.1' | integer }}

{{ 'text' | integer | default: 2 }}

Output

10

10

2

string

値を文字列に変換しようとします。 この値がすでに文字列である場合は、変更されずに返されます。 値が null である場合、null 値が返されます。

URL フィルター

URL フィルターにより、URL の一部の構築または抽出ができます。

add_query

URL にクエリ文字列パラメーターを追加します。 URL にパラメーターが既に存在する場合は、パラメーター値が更新されます。

このフィルターが完全な絶対 URL に適用される場合、更新された絶対 URL が結果です。 パスに適用される場合、更新されたパスが結果です。

コード

{{ 'https://example.com/path?page=1' | add_query: 'foo', 'bar' }}

{{ '/path?page=1' | add_query: 'page', 2 }}

Output

https://example.com/path?page=1&foo=bar

/path?page=2

base

指定された URL のベース URL を取得します。

コード

{{ 'https://example.com/path?foo=bar&page=2' | base }}

出力

https://example.com

host

URL のホスト パーツを取得します。

コード

{{ 'https://example.com/path?foo=bar&page=2' | host }}

Output

example.com

path

URL のパス パーツを取得します。

コード

{{ 'https://example.com/path?foo=bar&page=2' | path }}

{{ '/path?foo=bar&page=2' | path }}

Output

/path

/path

path_and_query

URL のパスとクエリ パーツを取得します。

コード

{{ 'https://example.com/path?foo=bar&page=2' | path_and_query }}

{{ '/path?foo=bar&page=2' | path_and_query }}

Output

/path?foo=bar&page=2

/path?foo=bar&page=2

port

URL のポート番号を取得します。

コード

{{ 'https://example.com/path?foo=bar&page=2' | port }}

{{ 'https://example.com/path?foo=bar&page=2' | port }}

{{ 'https://example.com:9000/path?foo=bar&page=2' | port }}

Output

80

443

9000

remove_query

URL からクエリ文字列パラメーターを削除します。 URL にパラメーターが存在しない場合、URL は変更されずに返されます。

このフィルターが完全な絶対 URL に適用される場合、更新された絶対 URL が結果です。 パスに適用される場合、更新されたパスが結果です。

コード

{{ 'https://example.com/path?page=1' | remove_query: 'page' }}

{{ '/path?page=1' | remove_query: 'page' }}

Output

https://example.com/path

/path

scheme

URL のスキーム パーツを取得します。

コード

{{ 'https://example.com/path?foo=bar&page=2' | scheme }}

{{ 'https://example.com/path?foo=bar&page=2' | scheme }}

出力

http

https

追加フィルター

これらのフィルターは便利な一般的機能を提供します。

default

割り当てられた値 (null) なしで、すべての変数の既定値を返します。

コード

{{ snippets[Header] | default: 'My Website' }}

Output

<!-- If a snippet with the name Header returns null -->

My Website

file_size

多数のバイトを表わしている数値に適用され、適切なスケール単位で書式設定されたファイルの数を返します。

オプションでは、結果における小数点以下の桁数を管理するために、詳細な precision パラメーターを渡すことができます。 既定の precision は 1 です。

コード

{{ 10000000 | file_size }}

{{ 2050 | file_size: 0 }}

{{ entity.notes.first.filesize | file_size: 2 }}

Output

9.5 MB

2 KB

207.14 KB

属性の HTML 表現を提供します。 たとえば、FetchXML クエリの XML 属性 のHTML 表現を表示します。

コード

{{ samplequery.xml | h }}

Output

<fetch mapping="logical" count="5000" page="1" returntotalrecordcount="true"> <entity name="contact"> <attribute name="fullname" /> </entity> </fetch>

has_role

ユーザー に適用され、ユーザーが指定されたロールに属している場合は true を返します。 そうではない場合、false が返されます。

コード

{% assign is_admin = user | has_role: 'Administrators' %}

{% if is_admin %}

User is an administrator.

{% endif %}

liquid

流動コードとして文字列を表示します。 このコードは現在の流動実行コンテキスト (変数など) にアクセスできます。

注意

このフィルターは注意して使用する必要があり、一般的に、サイト コンテンツの作成者または Liquid コードを記述する信頼できるその他のユーザーの排他的管理下にある値のみが適用されます。

コード

{{ page.adx_copy | liquid }}

参照