Twig Filters

Twig フィルタは、| 文字に続けてフィルタ名を指定することで Twig 変数に適用されます。 パラメータは、Twig の関数と同じように括弧を使って渡すことができます。

absolute_url

相対パスを使用する src または href 属性を含む HTML スニペットを受け取ります。パス文字列を、ホスト名を含む絶対 URL 形式に変換する。

'<img src="/some/path/to/image.jpg" />'|absolute_url

array_unique

配列から重複を削除する PHP array_unique() のラッパーです。

['foo', 'bar', 'foo', 'baz']|array_unique Array ( [0] => foo [1] => bar [3] => baz )

base32_encode

Base32 エンコードを行います。

'some variable here'|base32_encode ONXW2ZJAOZQXE2LBMJWGKIDIMVZGK

base32_decode

Base32 デコードを行います。

'ONXW2ZJAOZQXE2LBMJWGKIDIMVZGK'|base32_decode some variable here

base64_encode

Base64 エンコードを行います。
'some variable here'|base64_encode c29tZSB2YXJpYWJsZSBoZXJl

base64_decode

Base64 デコードを行います。
'c29tZSB2YXJpYWJsZSBoZXJl'|base64_decode some variable here

basename

ファイル名を返します。

'/etc/sudoers.d'|basename sudoers.d

camelize

文字列をキャメル・ケースに変換します。

'send_email'|camelize SendEmail

[version=16,17]

chunk_split

文字列を指定した長さの要素に分割します。

'ONXW2ZJAOZQXE2LBMJWGKIDIMVZGKA'|chunk_split(6, '-') ONXW2Z-JAOZQX-E2LBMJ-WGKIDI-MVZGKA-
[/version]

contains

指定した文字列が含まれるか判定する。

'some string with things in it'|contains('things') 1

Casting Values

PHP 7 では型チェックがより厳しくなっており、 間違った型の値を渡すと例外が発生する可能性があることを意味します。これを避けるには、メソッドに渡される値が有効になるようにキャストします。

string

|string string 型にキャストします。

int

|int int 型にキャストします。

bool

|bool bool 型にキャストします。

float

|float float 型にキャストします。

array

|array array 型にキャストします。

defined

変数が定義されているかどうかを確認し、定義されていない場合はデフォルト値を提供します。

set header_image_width = page.header.header_image_width|defined(900)

変数 header_image_width がページヘッダーで定義されていない場合、その値を 900 に設定します。

dirname

ディレクトリを返します。

'/etc/sudoers.d'|dirname /etc

ends_with

指定した文字列で終わるかどうか判断します。

'the quick brown fox'|ends_with('fox') true

fieldName

ドットで区切られた文字列を、Array 形式の文字列に変換します。

'field.name'|fieldName field[name]

[version=16,17]

get_type

変数の型を取得します。

page|get_type object
[/version]

humanize

文字列をより「人間が読みやすい」文字列に変換します。

'something_text_to_read'|humanize Something text to read

hyphenize

文字列をハイフン付きに変換する。

'Something Text to Read'|hyphenize something-text-to-read

json_decode

JSON デコードを行います。

array|json_decode

{% set array = '{"first_name": "Guido", "last_name":"Rossum"}'|json_decode %}
{{ print_r(array) }}

stdClass Object
(
    [first_name] => Guido
    [last_name] => Rossum
)

ksort

配列をキーで並べ替えます

array|ksort

{% set items = {'orange':1, 'apple':2, 'peach':3}|ksort %}
{{ print_r(items) }}

Array
(
    [apple] => 2
    [orange] => 1
    [peach] => 3
)

ltrim

'/strip/leading/slash/'|ltrim('/') strip/leading/slash/

文字列の先頭の空白を削除します。また、文字マスクを設定することにより、他の文字も除去することができます。(https://php.net/manual/en/function.ltrim.php をご覧ください)

markdown

マークダウンを含む任意の文字列を受け取り、Grav のマークダウンパーサーを使用してHTMLに変換する。

オプションの boolean パラメータ。

  • true (default): ブロックとして処理する (テキストモード、コンテンツは <p> タグで折り返される)
  • false: 行として処理する(内容は折り返されない)
string|markdown($is_block)

<div class="div">
{{ 'A paragraph with **markdown** and [a link](http://www.cnn.com)'|markdown }}
</div>

<p class="paragraph">{{'A line with **markdown** and [a link](http://www.cnn.com)'|markdown(false) }}</p>

</p>
<div class="div">
<p>A paragraph with <strong>markdown</strong> and <a href="http://www.cnn.com">a link</a></p>
</div>
<p class="paragraph">A line with <strong>markdown</strong> and <a href="http://www.cnn.com">a link</a></p>
<p>

md5

md5 ハッシュ文字列を作成する。

'anything'|md5 f0e166dc34d14d6c228ffac576c9a43c

modulus

PHP の % 演算子と同じ機能を提供します。計算結果をインデックスとして配列から値を返せます。

7|modulus(3, ['red', 'blue', 'green']) blue

monthize

日数を月数に変換します。

'181'|monthize 5

[version=16,17]

nicecron

cron 構文で記述した文字列を人間が読みやすい文字列に変換します。

"2 * * * *"|nicecron Every hour at 2 minutes past the hour

nicefilesize

ファイルサイズを人間が読みやすい文字列に変換します。

612394|nicefilesize 598.04 KB

nicenumber

数値を人間が読みやすい文字列に変換します。

12430|nicenumber 12.43 k
[/version]

nicetime

時間を人間が読みやすい文字列に変換します。

page.date|nicetime(false) 2 yrs ago

最初の引数は、フルフォーマットの日付の記述を使用するかどうかを指定する。デフォルトでは true である。

時間に対する記述子 (あなたの言語では 'ago' や 'from now' など) を結果から取り除きたい場合は、2番目の引数に false を指定することができる。

[version=16,17]

of_type

Checks the type of a variable to the param:

page|of_type('string') false
[/version]

ordinalize

整数に序数を追加します(1st, 2nd, 3rd, 4th など)。

'10'|ordinalize 10

pad

ある長さの文字列を別の文字で埋めます。これは、PHP の str_pad() 関数のラッパーです。

'foobar'|pad(10, '-') foobar----

pluralize

文字列を英語の複数形に変換します。

'person'|pluralize people

pluralize は、オプションで数値パラメータを指定することができます。デフォルトは 2 で、省略した場合は複数形になります。

<p>We have {{ num_vacancies }} {{ 'vacancy'|pluralize(num_vacancies) }} right now.</p>

[version=16,17]

print_r

変数を人間が読める文字列にします。

page.header|print_r

stdClass Object
(
    [title] => Twig Filters
    [gravdocs] => https://learn.getgrav.org/17/themes/twig-tags-filters-functions/filters
)

[/version]

randomize

提供されたリストをランダム化します。 パラメータとして値が提供された場合、最初のn個の値をランダム化の対象から除外します。

array|randomize

{% set ritems = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten']|randomize(2) %}
{{ print_r(ritems) }}

Array
(
    [0] => one
    [1] => two
    [2] => seven
    [3] => six
    [4] => ten
    [5] => four
    [6] => three
    [7] => eight
    [8] => five
    [9] => nine
)

regex_replace

PHP の preg_replace() 関数のラッパーで、 このフィルタを使用すると文字列に対して複雑な Regex 置換を行うことができます。

'The quick brown fox jumps over the lazy dog.'|regex_replace(['/quick/','/brown/','/fox/','/dog/'], ['slow','black','bear','turtle']) The slow black bear jumps over the lazy turtle.

Use the ~-delimiter rather than the /-delimiter where possible. Otherwise you'll most likely have to double-escape certain characters. Eg. ~\/\#.*~ rather than '/\\/\\#.*/', which conforms more closely to the PCRE-syntax used by PHP.

rtrim

'/strip/trailing/slash/'|rtrim('/') /strip/trailing/slash

文字列の末尾にある空白を削除します。また、文字を指定することにより、他の文字も除去することができます (https://php.net/manual/en/function.rtrim.php をご覧ください)

singularize

文字列を英語の単数形に変換します。

'shoes'|singularize shoe

safe_email

セーフメイルフィルターは、メールアドレスを ASCII 文字に変換し、スパムメールボットが認識・捕捉しにくいようにするものです。

"someone@domain.com"|safe_email someone@domain.com

mailto リンクでの使用例です。

<a href="mailto:{{ 'your.email@server.com'|safe_email }}">
  Email me
</a>

最初は違いに気づかないかもしれませんが、ページソース(Browser Developer Toolsではなく、実際のページソース)を調べると、文字エンコーディングがわかります。

sort_by_key

配列を特定のキーで並べます。

array|sort_by_key

{% set people = [{'email':'fred@yahoo.com', 'id':34}, {'email':'tim@exchange.com', 'id':21}, {'email':'john@apple.com', 'id':2}]|sort_by_key('id') %}
{% for person in people %}{{ person.email }}:{{ person.id }}, {% endfor %}



john@apple.com:2, tim@exchange.com:21, fred@yahoo.com:34,

starts_with

指定した文字列で始まるかどうか判断します。

'the quick brown fox'|starts_with('the') true

titleize

文字列を "Title Case" 形式に変換する。

'welcome page'|titleize Welcome Page

t

文字列を現在の言語に翻訳します。

'MY_LANGUAGE_KEY_STRING'|t 'Some Text in English'

This assumes you have these language strings translated in your site and have enabled
これは、あなたのサイトでこれらの言語文字列が翻訳され、有効になっていることが必要です。
-language support. Please refer to the multi-language documentation for more detailed information.

tu

Translate a string into the current language set in the admin interface user preferences

'MY_LANGUAGE_KEY_STRING'|tu 'Some Text in English'

This uses the language field set in the user yaml.

ta

Translates an array with a language use the |ta filter. See the multi-language documentation for a detailed example.

'MONTHS_OF_THE_YEAR'|ta(post.date|date('n') - 1) June

tl

Translates a string in a specific language. For more details check out the multi-language documentation.

'SIMPLE_TEXT'|tl(['fr'])

truncate

文字列を指定した文字数で切り取ります。

'one sentence. two sentences'|truncate(5)|raw one s…

5 文字切り詰めます。

'one sentence. two sentences'|truncate(5, true)|raw one sentence.…

The |raw Twig filter should be used with the default &hellip; (elipsis) padding element in order for it to render with Twig auto-escaping

Truncates to closest sentence-end after 5 characters.

You can also truncate HTML text, but should first use the |striptags filter to remove any HTML formatting that could get broken if you end between tags:

'<span>one <strong>sentence</strong>. two sentences</span>' |raw|striptags|truncate(25) one sentence. two sentenc&hellip;

Specialized versions:

safe_truncate

Use |safe_truncate to truncate text by number of characters in a "word-safe" manner.

truncate_html

Use |truncate_html to truncate HTML by number of characters. not "word-safe"!

safe_truncate_html

Use |safe_truncate_html to truncate HTML by number of characters in a "word-safe" manner.

underscorize

Converts a string into "under_scored" format

'CamelCased'|underscorize camel_cased

[version=16,17]

yaml_encode

YAML エンコードを行います。

{% set array = {foo: [0, 1, 2, 3], baz: 'qux' } %}
{{ array|yaml_encode }}

foo:
  - 0
  - 1
  - 2
  - 3
baz: qux

yaml_decode

YAML デコードを行います。

{% set yaml = "foo: [0, 1, 2, 3]\nbaz: qux" %}
{{ yaml|yaml_decode|var_dump }}

array(2) {
  ["foo"]=>
  array(4) {
    [0]=>
    int(0)
    [1]=>
    int(1)
    [2]=>
    int(2)
    [3]=>
    int(3)
  }
  ["baz"]=>
  string(3) "qux"
}

[/version]