Twig の関数はパラメータの指定して呼び出されます。
array
値を配列にキャストします。
{% verbatim %}{% set value = array(value) %}
array_diff
配列の差を計算します。
{% verbatim %}{% set diff = array_diff(array1, array2...) %}
array_key_value
array_key_value
関数は、連想配列にキーと値のペアを追加します。
{% set my_array = {fruit: 'apple'} %}
{% set my_array = array_key_value('meat','steak', my_array) %}
{{ print_r(my_array)}}
outputs: {{ print_r(my_array) }}
array_key_exists
PHP の array_key_exists
関数のラッパーで、連想配列にキーが存在するかどうかを返します。
{% set my_array = {fruit: 'apple', meat: 'steak'} %}
{{ array_key_exists('meat', my_array) }}
outputs: {{ array_key_exists('meat', my_array) }}
array_intersect
array_intersect
関数は、2 つの配列または Grav コレクションの差を返します。
{% set array_1 = {fruit: 'apple', meat: 'steak'} %}
{% set array_2 = {fish: 'tuna', meat: 'steak'} %}
{{ print_r(array_intersect(array_1, array_2)) }}
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
exif
画像の EXIF データをファイルパスに基づいて出力します。これには system.yaml
で media: auto_metadata_exif: true
が設定されていることが必要です。Twig-template の例。
{% set image = page.media['sample-image.jpg'] %}
{% set exif = exif(image.filepath, true) %}
{{ exif.MaxApertureValue }}
これはカメラで設定された 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) }}
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.*/")
{{ 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'])
{{ var }}
[/version]
[version=17]
regex_match
PHP の preg_match() メソッドの有用なラッパーで、 このフィルタを通してテキストに対して複雑な正規表現によるマッチングを行うことができます。
{% verbatim %}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')
{{ 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) }}
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) }}
[/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()
のようにデバッガに出力するものではありません。)
{% set my_array = {foo: 'bar', baz: 'qux'} %}
{{ vardump(my_array) }}
[
"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