Twig Functions

Twig の関数はパラメータの指定して呼び出されます。

array

値を配列にキャストします。

{% verbatim %}
{% set value = array(value) %}
{% endverbatim %}

array_diff

配列の差を計算します。

{% verbatim %}
{% set diff = array_diff(array1, array2...) %}
{% endverbatim %}

array_key_value

array_key_value 関数は、連想配列にキーと値のペアを追加します。

{% verbatim %}
{% set my_array = {fruit: 'apple'} %}
{% set my_array = array_key_value('meat','steak', my_array) %}
{{ print_r(my_array)}}
{% endverbatim %} {% set my_array = {fruit: 'apple'} %} {% set my_array = array_key_value('meat','steak', my_array) %}

outputs: {{ print_r(my_array) }}

array_key_exists

PHP の array_key_exists 関数のラッパーで、連想配列にキーが存在するかどうかを返します。

{% verbatim %}
{% set my_array = {fruit: 'apple', meat: 'steak'} %}
{{ array_key_exists('meat', my_array) }}
{% endverbatim %} {% set my_array = {fruit: 'apple', meat: 'steak'} %}

outputs: {{ array_key_exists('meat', my_array) }}

array_intersect

array_intersect 関数は、2 つの配列または Grav コレクションの差を返します。

{% verbatim %}
{% set array_1 = {fruit: 'apple', meat: 'steak'} %}
{% set array_2 = {fish: 'tuna', meat: 'steak'} %}
{{ print_r(array_intersect(array_1, array_2)) }}
{% endverbatim %} {% set array_1 = {fruit: 'apple', meat: 'steak'} %} {% set array_2 = {fish: 'tuna', meat: 'steak'} %}

outputs: {{ print_r(array_intersect(array_1, array_2)) }}

array_unique

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

array_unique(['foo', 'bar', 'foo', 'baz']) {{ print_r(array_unique(['foo', 'bar', 'foo', 'baz'])) }}

authorize

認証済みユーザがリソースを見ることを許可します。スカラー値、配列で許可権限を指定します。

authorize(['admin.statistics', 'admin.super'])

[version=16,17]

body_class

クラスを配列で受け取り、それらが body_classes で設定されていない場合は、現在のテーマの設定で設定されているかどうかを確認します。

set body_classes = body_class(['header-fixed', 'header-animated', 'header-dark', 'header-transparent', 'sticky-footer'])

cron

cron構文から "Cron" オブジェクトを作成する

cron("3 * * * *").getNextRunDate()|date(config.date_format.default)

[/version]

dump

有効な Twig 変数を受け取り、[Grav debugger panel] (../../../advanced/debugging) にダンプします。 メッセージタブで値を見るには、デバッガを enabled にしておく必要があります。

dump(page.header)

debug

dump() と同じです。

evaluate

evaluate 関数は、Twig として文字列を評価するために使用することができます。

evaluate('grav.language.getLanguage')

evaluate_twig

evaluate 関数と似ています。but will evaluate and process with Twig

{% verbatim %}

evaluate_twig('This is a twig variable: {{ foo }}', {foo: 'bar'})) This is a twig variable: bar

{% endverbatim %}

exif

画像の EXIF データをファイルパスに基づいて出力します。これには system.yamlmedia: auto_metadata_exif: true が設定されていることが必要です。Twig-template の例。

{% verbatim %}
{% set image = page.media['sample-image.jpg'] %}
{% set exif = exif(image.filepath, true) %}
{{ exif.MaxApertureValue }}
{% endverbatim %}

これはカメラで設定された MaxApertureValue 値、例えば "40/10 "を出力します。{% verbatim %}{{ dump(exif)}}{% endverbatim %} とすると、デバッガで利用可能なすべてのデータを表示できます。

get_cookie

この関数は、Cookie の値を取得します。

get_cookie('your_cookie_key')

[version=16,17]

get_type

変数の型を取得します。

get_type(page) {{ get_type(page) }}
[/version]

gist

Github の Gist ID 指定して、Gist コードを埋め込みます。

gist('bc448ff158df4bc56217') {{ gist('bc448ff158df4bc56217')|e }}

header_var

Helper function. Returns page.header.<variable>.

Given frontmatter of

---
title: Home
---

header_var('title') Home

[version=16,17]

http_response_code

HTTP レスポンス・コードを指定します。HTTP レスポンス・コードを指定しない場合は、現在のHTTP レスポンス・コードが返されます。ウェブサーバー環境で使用する場合、これらの値は両方ともデフォルトで200のステータスコードになります。

http_response_code(404)
[/version]

isajaxrequest

isajaxrequest() 関数は HTTP_X_REQUESTED_WITH ヘッダーオプションが設定されているかどうかを確認するために使用します。

json_decode

JSON をデコードすることができます。

json_decode({"first_name": "Guido", "last_name":"Rossum"})

media_directory

任意のディレクトリのメディアオブジェクトを返します。 取得後はページと同様の方法で画像を操作することができます。

media_directory('theme://images')['some-image.jpg'].cropResize(200,200).html

[version=16,17]

nicefilesize

ファイルサイズを人間が読みやすいナイスサイズ形式で出力します。

nicefilesize(612394) {{ nicefilesize(612394) }}

nicenumber

人間が読みやすい素敵な数値のフォーマットで数値を出力します。

nicenumber(12430) {{ nicenumber(12430)}}

nicetime

人間が読みやすい素敵な時間フォーマットで日付を出力します。

nicetime(page.date) {{ nicetime(page.date) }}
[/version]

nonce_field

人間が読みやすい素敵な時間フォーマットで日付を出力します。

Generate a Grav security nonce field for a form with a required action:

nonce_field('action') {{ nonce_field('action')|e }}

[version=16,17]

of_type

Checks the type of a variable to the param:

of_type(page, 'string') {{ of_type(page, 'string') ? 'true' : 'false' }}
[/version]

pathinfo

パス情報を配列にパースします。

{% verbatim %}
{% set parts = pathinfo('/www/htdocs/inc/lib.inc.php') %}
{{ print_r(parts) }}
{% endverbatim %} {% set parts = pathinfo('/www/htdocs/inc/lib.inc.php') %}

outputs: {{ print_r(parts) }}

[version=16,17]

print_r

変数を読みやすい形式で表示します。

print_r(page.header)

{{ print_r(page.header) }}

[/version]

random_string

指定した文字数でランダムな文字列を生成します。 ユニークなID や キー を作成するのに便利です。

random_string(10) {{ random_string(10) }}

unique_id

長さ、プレフィックス、サフィックスを設定可能なランダムな文字列を生成します。PHP 組み込みの uniqid() 関数や random_string utils とは異なり、この文字列は本当にユニークで矛盾のない文字列を生成します。

unique_id(9) {{ unique_id(9) }}
unique_id(11, { prefix: 'user_' }) uniqueid(11, { prefix: 'user' }) }}
unique_id(13, { suffix: '.json' }) unique_id(13, { suffix: '.json' }) }}

range

範囲の要素を含む配列を生成する。

range(25, 300, 50) {{ print_r(range(25, 300, 50)) }}

[version=16,17]

read_file

ファイルパスを元にファイルを読み込んで出力します。

read_file('plugins://admin/README.md')|markdown

# Grav Standard Administration Panel Plugin

This **admin plugin** for [Grav](https://github.com/getgrav/grav) is an HTML user interface that provides a convenient way to configure Grav and easily create and modify pages...

[/version]

redirect_me

任意のURLへのリダイレクトを行います。

redirect_me('http://google.com', 304)

[version=16,17]

regex_filter

正規表現に基づき、配列に対して preg_grep を実行します。

regex_filter(['pasta', 'fish', 'steak', 'potatoes'], "/p.*/")

{% set var = regex_filter(['pasta', 'fish', 'steak', 'potatoes'], "/p.*/") %}
{{ print_r(var) }}

regex_replace

PHP の preg_replace() メソッドの有用なラッパーで、 このフィルタを使用するとテキストに対して複雑な Regex 置換を行うことができます。

{% verbatim %}

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

{% endverbatim %} {% set var = regex_replace('The quick brown fox jumps over the lazy dog.', ['/quick/','/brown/','/fox/','/dog/'], ['slow','black','bear','turtle']) %}
{{ var }}

[/version]

[version=17]

regex_match

PHP の preg_match() メソッドの有用なラッパーで、 このフィルタを通してテキストに対して複雑な正規表現によるマッチングを行うことができます。

{% verbatim %}

regex_match('http://www.php.net/index.html', '@^(?:http://)?([^/]+)@i')

{% endverbatim %} {% set var = regex_match('http://www.php.net/index.html', '@^(?:http://)?([^/]+)@i') %}
{{ print_r(var) }}

regex_split

PHP の preg_split() メソッドの有用なラッパーです。このフィルタを通して、文字列を正規表現で分割します。

{% verbatim %}

regex_split('hypertext language, programming', '/\\s*,\\s*/u')

{% endverbatim %} {% set var = regex_split('hypertext language , programming', '/\\s*,\\s*/u') %}
{{ print_r(var) }}

[/version]

repeat

文字列を、指定回数繰り返します。

repeat('blah ', 10) {{ repeat('blah ', 10) }}

string

値から文字列を返します。値が配列の場合、jsonエンコードしたものを返します。

string(23) => "23"

string(['test' => 'x']) => {"test":"x"}

[version=17]

svg_image

SVG イメージを返します。必要に応じてクラスを追加します。ページに直接コードを貼り付けることなく、インライン SVG の提供します。ソーシャルメディアのアイコンのような再利用可能な画像に便利です。

{% verbatim %}

{{ svg_image(path, classes, strip_style) }}

{% endverbatim %}

strip_style = remove the svg inline styling - useful for styling with css classes.

example:

{% verbatim %}

{{ svg_image('theme://images/something.svg', 'my-class-here mb-10', true) }}

{% endverbatim %}

[/version]

[version=16,17]

theme_var

ページヘッダーからテーマ変数があればそれを取得し、なければテーマの設定ファイルを使用します。

theme_var('grid-size')

まず page.header.grid-size を試し、設定されていない場合は、テーマ設定ファイルにある theme.grid-size を試します。オプションでデフォルトの指定も可能です。

theme_var('grid-size', 1024)
[/version]

t

文字列を翻訳する。|t filter としても使えます。

t('SITE_NAME') Site Name

ta

|ta filter と同じように機能します。

tl

指定した言語で文字列を翻訳します。詳しくは 多言語ドキュメント を参照してください。

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

url

解決可能な URL を作成します。URL が解決できない場合は、デフォルト値を渡すことができます。

url('theme://images/logo.png')|default('http://www.placehold.it/150x100/f4f4f4') {{ url('theme://images/logo.png')|default('http://www.placehold.it/150x100/f4f4f4') }}

vardump

vardump() 関数は現在の変数を画面に出力します。(dump() のようにデバッガに出力するものではありません。)

{% verbatim %}
{% set my_array = {foo: 'bar', baz: 'qux'} %}
{{ vardump(my_array) }}
{% endverbatim %} {% set my_array = {foo: 'bar', baz: 'qux'} %}
[
  "foo" => "bar"
  "baz" => "qux"
]

[version=16,17]

xss

XSS脆弱性のある文字列を手動でチェックできるようにする

`xss('this string contains a <script>alert("hello");</script> XSS vulnerability')` <i class="fa fa-long-arrow-right"></i> **{{ xss('this string contains a <script>alert("hello");</script> XSS vulnerability') }}**

[/version]


オリジナル : https://learn.getgrav.org/17/themes/twig-tags-filters-functions/functions