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
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 …
(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…
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]