フィルタ
Craft の Twig テンプレートで利用可能なフィルタ (opens new window)は、以下の通りです。
フィルタ | 説明 |
---|---|
abs (opens new window) | 数値の絶対値を返します。 |
append | 別の要素の最後に HTML を追加します。 |
ascii | 文字列を ASCII 文字に変換します。 |
atom | 日付を ISO-8601 タイムスタンプに変換します。 |
attr | HTML タグの属性を変更します。 |
batch (opens new window) | 配列内のアイテムをバッチ処理します。 |
camel | 文字列を camelCase にフォーマットします。 |
capitalize (opens new window) | 文字列の最初の文字を大文字にします。 |
column | 配列内の単一のプロパティ、または、キーから値を返します。 |
contains | 指定されたキーと値のペアを持つネストされたアイテムを配列が含むかどうかを返します。 |
convert_encoding (opens new window) | 文字列をあるエンコーディングから別のエンコーディングに変換します。 |
currency | 数値を通貨としてフォーマットします。 |
date | 日付をフォーマットします。 |
date_modify (opens new window) | 日付を変更します。 |
datetime | 日付と時刻をフォーマットします。 |
default (opens new window) | 値、または、空の場合はデフォルト値を返します。 |
diff | 配列間の差分を返します。 |
duration | DateInterval オブジェクトを返します。 |
encenc | 文字列を暗号化し、base64 エンコードします。 |
escape (opens new window) | 文字列をエスケープします。 |
explodeClass | class 属性値をクラス名の配列に変換します。 |
explodeStyle | style 属性値をプロパティ名と値のペアの配列に変換します。 |
filesize | バイト数を他の何かにフォーマットします。 |
filter | 配列内のアイテムをフィルタします。 |
first (opens new window) | 文字列/配列の最初の文字/アイテムを返します。 |
format (opens new window) | プレースホルダを置き換えて文字列をフォーマットします。 |
group | 配列内のアイテムをグループ化します。 |
hash | メッセージ認証コード(HMAC)の鍵付ハッシュを文字列の先頭に追加します。 |
id | エレメント ID を英数字、アンダースコア、ダッシュのみに正規化します。 |
indexOf | 配列内の指定された値のインデックス、または、別の文字列内の渡された文字列の位置を返します。 |
index | 配列内のアイテムをインデックス化します。 |
intersect | 2つの配列の交差するアイテムを返します。 |
join (opens new window) | 複数の文字列を1つに連結します。 |
json_decode | 値を JSON デコードします。 |
json_encode | 値を JSON エンコードします。 |
kebab | 文字列を kebab-case にフォーマットします。 |
keys (opens new window) | 配列のキーを返します。 |
last (opens new window) | 文字列/配列の最後の文字/アイテムを返します。 |
lcfirst | 文字列の最初の文字を小文字にします。 |
length (opens new window) | 文字列や配列の長さを返します。 |
literal | エレメントクエリのパラメータで利用するための信頼できない文字列をエスケープします。 |
lower (opens new window) | 文字列を小文字にします。 |
map (opens new window) | 配列内のアイテムにアローファンクションを適用します。 |
markdown | 文字列を Markdown として処理します。 |
merge (opens new window) | 配列を別の配列とマージします。 |
multisort | サブ配列内の1つ以上のキーで配列をソートします。 |
namespace | CSS セレクタだけでなく、入力項目の name や HTML 属性に名前空間を割り当てます。 |
namespaceInputId | エレメント ID に名前空間を割り当てます。 |
namespaceInputName | 入力項目の name に名前空間を割り当てます。 |
nl2br (opens new window) | 改行を <br> タグに置き換えます。 |
number | 数値をフォーマットします。 |
number_format (opens new window) | 数値をフォーマットします。 |
parseRefs | リファレンスタグの文字列を解析します。 |
pascal | 文字列を PascalCase にフォーマットします。 |
percentage | パーセンテージをフォーマットします。 |
prepend | 別の要素の先頭に HTML を追加します。 |
purify | HTML コードに HTML Purifier を実行します。 |
push | 1つ以上のアイテムを配列の最後に追加します。 |
raw (opens new window) | 現在のエスケープ方針にとって安全な値であると評価します。 |
reduce (opens new window) | シーケンスやマッピングを反復的に単一の値に減らします。 |
replace | 文字列の一部を他のものに置き換えます。 |
reverse (opens new window) | 文字列や配列を反転します。 |
round (opens new window) | 数値を丸めます。 |
rss | 日付を RSS データフォーマットに変換します。 |
slice (opens new window) | 文字列や配列のスライスを抽出します。 |
snake | 文字列を snake_case にフォーマットします。 |
sort (opens new window) | 配列をソートします。 |
spaceless (opens new window) | HTML タグ間の空白を削除します。 |
split (opens new window) | 文字列をデリミタで分割します。 |
striptags (opens new window) | 文字列から SGML/XML タグを取り除きます。 |
time | 時刻をフォーマットします。 |
timestamp | 人が読めるタイムスタンプをフォーマットします。 |
title (opens new window) | 文字列を Title Case にフォーマットします。 |
translate | メッセージを翻訳します。 |
trim (opens new window) | 文字列の最初と最後から空白を取り除きます。 |
ucfirst | 文字列の最初の文字を大文字にします。 |
unique | 配列から重複する値を取り除きます。 |
unshift | 1つ以上のアイテムを配列の先頭に追加します。 |
upper (opens new window) | 文字列を大文字にします。 |
url_encode (opens new window) | 文字列を URL セグメント、または、クエリ文字列の配列としてパーセントエンコードします。 |
values | キーをリセットして、配列内のすべての値を返します。 |
where | キーと値のペアで配列をフィルタします。 |
withoutKey | 指定されたキーを除いた配列を返します。 |
without | 指定されたエレメントを除いた配列を返します。 |
# append
別の要素の最後に HTML を追加します。
{{ '<div><p>Lorem</p></div>'|append('<p>Ipsum</p>') }}
{# Output: <div><p>Lorem</p><p>Ipsum</p></div> #}
同じタイプの要素がまだ存在しないときのみ新しい要素を追加したい場合、第二引数に 'keep'
を渡します。
{{ '<div><p>Lorem</p></div>'|append('<p>Ipsum</p>', 'keep') }}
{# Output: <div><p>Lorem</p></div> #}
同じタイプの既に存在する要素を置き換えたい場合、第二引数に 'replace'
を渡します。
{{ '<div><p>Lorem</p></div>'|append('<p>Ipsum</p>', 'replace') }}
{# Output: <div><p>Ipsum</p></div> #}
# ascii
文字列を ASCII 文字に変換します。
{{ 'über'|ascii }}
{# Output: uber #}
デフォルトでは、ASCII 文字のマッピングを選択するときに現在のサイトの言語が利用されます。別のロケール ID を渡すことで、上書きできます。
{{ 'über'|ascii('de') }}
{# Output: ueber #}
# atom
とりわけ Atom フィードで使用される、ISO-8601 タイムスタンプ(例:2019-01-29T10:00:00-08:00
)に日付を変換します。
{{ entry.postDate|atom }}
# attr
yii\helpers\BaseHtml::renderTagAttributes() (opens new window) でサポートされるのと同じ属性定義を利用して、HTML タグの属性を変更します。
{% set tag = '<div>' %}
{{ tag|attr({
class: 'foo'
}) }}
{# Output: <div class="foo"> #}
最初のタグだけが変更され、それより前の HTML コメントや doctype 宣言は無視されます。
{% set svg %}
<?xml version="1.0" encoding="utf-8"?>
<svg>...</svg>
{% endset %}
{{ svg|attr({
class: 'icon'
}) }}
{# Output:
<?xml version="1.0" encoding="utf-8"?>
<svg class="icon">...</svg> #}
false
をセットすることで、属性を削除できます。
{% set tag = '<input type="text" disabled>' %}
{{ tag|attr({
disabled: false
}) }}
{# Output: <input type="text"> #}
class
および style
属性は、セットされている場合、要素の既存の属性と結合されます。
{% set tag = '<div class="foo" style="color: black;">' %}
{{ tag|attr({
class: 'bar',
style: {background: 'red'}
}) }}
{# Output: <div class="foo bar" style="color: black; background: red;"> #}
他のすべての属性は、既存の属性値を置き換えます。
{% set tag = '<input type="text">' %}
{{ tag|attr({
type: 'email'
}) }}
{# Output: <input type="email"> #}
class
または style
属性を完全に置き換えたい場合、はじめにそれを削除してから新しい値をセットします。
{% set tag = '<div class="foo">' %}
{{ tag|attr({class: false})|attr({class: 'bar'}) }}
{# Output: <div class="bar"> #}
# camel
「camelCase」でフォーマットされた文字列を返します。
{{ 'foo bar'|camel }}
{# Output: fooBar #}
# column
配列内の単一のプロパティ、または、キーから値を返します。
{% set entryIds = entries|column('id') %}
返される値が配列要素のプロパティやキーとして存在しない場合、代わりにアローファンクションを渡すことができます。
{% set authorNames = entries|column(e => e.author.fullName) %}
PHP の array_column() (opens new window) ファンクションではなく ArrayHelper::getColumn() (opens new window) を利用していることを除けば、Twig コアの column
(opens new window) フィルタと同様に機能します。
# contains
特定のキー/属性が指定された値を持つ、ネストされた配列/オブジェクトを渡された配列に含むかどうかを返します。
{% set works = craft.entries()
.section('artwork')
.all() %}
{# See if any of the artwork has a mature rating #}
{% if works|contains('rating', 'm') %}
<p class="mature">Some of this artwork is meant for mature viewers.</p>
{% endif %}
# currency
ユーザーが優先する言語に応じて指定された通貨で、数値をフォーマットします。
{{ 1000000|currency('USD') }}
{# Output: $1,000,000.00 #}
フォーマットされる値が小数値(例:cents)を持たない場合、小数部の桁を削除するために stripZeros=true
を渡すことができます。
{{ 1000000|currency('USD', stripZeros=true) }}
{# Output: $1,000,000 #}
# date
タイムスタンプ、または、DateTime (opens new window) オブジェクトをフォーマットします。
{{ entry.postDate|date }}
{# Output: Dec 20, 1990 #}
Twig コアの date
(opens new window) フィルタのように、カスタムの日付フォーマットを渡すことで、日付の表示方法をカスタマイズできます。
{{ 'now'|date('m/d/Y') }}
{# Output: 12/20/1990 #}
Craft はロケール固有の日付フォーマットを出力するいくつかの特別なフォーマットキーワードも提供します。
フォーマット | 実例 |
---|---|
short | 12/20/1990 |
medium (デフォルト) | Dec 20, 1990 |
long | December 20, 1990 |
full | Thursday, December 20, 1990 |
{{ entry.postDate|date('short') }}
{# Output: 12/20/1990 #}
デフォルトでは、現在のアプリケーションのロケールが利用されます。別のロケールで日付をフォーマットしたい場合、引数 locale
を利用します。
{{ entry.postDate|date('short', locale='en-GB') }}
{# Output: 20/12/1990 #}
timezone
パラメータを利用して、出力する時刻のタイムゾーンをカスタマイズできます。
{{ entry.postDate|date('short', timezone='UTC') }}
{# Output: 12/21/1990 #}
date フィルタに渡された値が null
の場合、デフォルトで現在の日付を返します。
# datetime
タイムスタンプ、または、DateTime (opens new window) オブジェクトを時刻を含めてフォーマットします。
{{ entry.postDate|datetime }}
{# Output: Dec 20, 1990, 5:00:00 PM #}
Craft はロケール固有の日付と時刻のフォーマットを出力するいくつかの特別なフォーマットキーワードを提供します。
{{ entry.postDate|datetime('short') }}
{# Output: 9/26/2018, 5:00 PM #}
利用可能な format
値は、次の通りです。
フォーマット | 実例 |
---|---|
short | 12/20/1990, 5:00 PM |
medium (デフォルト) | Dec 20, 1990, 5:00:00 PM |
long | December 20, 1990 at 5:00:00 PM PDT |
full | Thursday, December 20, 1990 at 5:00:00 PM PDT |
デフォルトでは、現在のアプリケーションのロケールが利用されます。別のロケールで日付と時刻をフォーマットしたい場合、引数 locale
を利用します。
{{ entry.postDate|datetime('short', locale='en-GB') }}
{# Output: 20/12/1990, 17:00 #}
timezone
パラメータを利用して、出力する時刻のタイムゾーンをカスタマイズできます。
{{ entry.postDate|datetime('short', timezone='UTC') }}
{# Output: 12/21/1990, 12:00 AM #}
# diff
array_diff() (opens new window) を利用して、配列間の差分を返します。
フィルタに渡されたどの配列にも存在しない、最初の配列に含まれるすべての値を持つ新しい配列を返します。
{% set arr1 = ['foo', 'bar'] %}
{% set arr2 = ['bar', 'baz'] %}
{% set arr3 = arr1|diff(arr2) %}
{# Result: ['foo'] #}
# duration
DateInterval (opens new window) オブジェクトに craft\helpers\DateTimeHelper::humanDurationFromInterval() (opens new window) を実行します。
<p>Posted {{ entry.postDate.diff(now)|duration(false) }} ago.</p>
# encenc
文字列を暗号化し、base64 エンコードします。
{{ 'secure-string'|encenc }}
# explodeClass
class
属性値をクラス名の配列に変換します。
配列が渡された場合、そのまま返されます。
{% set classNames = 'foo bar baz'|explodeClass %}
{# Result: ['foo', 'bar', 'baz'] #}
# explodeStyle
style
属性値をプロパティ名と値のペアの配列に変換します。
配列が渡された場合、そのまま返されます。
{% set styles = 'font-weight: bold; color: red;'|explodeStyle %}
{# Result: {'font-weight': 'bold', 'color': 'red'} #}
# filesize
バイト数をより良い何かにフォーマットします。
{{ asset.size }}
{# Output: 1944685 #}
{{ asset.size|filesize }}
{# Output: 1.945 MB #}
# filter
配列の要素をフィルタします。
何も渡されなかった場合、「空の」要素は削除されます。
{% set array = ['foo', '', 'bar', '', 'baz'] %}
{% set filteredArray = array|filter %}
{# Result: ['foo', 'bar', 'baz'] #}
アローファンクションが渡された場合、Twig コアの filter
(opens new window) フィルタと同様に機能します。
{% set array = ['foo', 'bar', 'baz'] %}
{% set filteredArray = array|filter(v => v[0] == 'b') %}
{# Result: ['bar', 'baz'] #}
# group
配列内のアイテムをアローファンクションの結果でグループ化します。
{% set allEntries = craft.entries.section('blog').all() %}
{% set allEntriesByYear = allEntries|group(e => e.postDate|date('Y')) %}
{% for year, entriesInYear in allEntriesByYear %}
<h2>{{ year }}</h2>
<ul>
{% for entry in entriesInYear %}
<li><a href="{{ entry.url }}">{{ entry.title }}</a></li>
{% endfor %}
</ul>
{% endfor %}
# hash
不正に変更されるべきではないフォームのデータを安全に渡すために、メッセージ認証コード(HMAC)の鍵付ハッシュを指定された文字列の先頭に追加します。
<input type="hidden" name="foo" value="{{ 'bar'|hash }}">
PHP スクリプトは、Security::validateData() (opens new window) を経由して値を検証できます。
$foo = Craft::$app->request->getBodyParam('foo');
$foo = Craft::$app->security->validateData($foo);
if ($foo !== false) {
// data is valid
}
# id
craft\web\View::formatInputId() (opens new window) を経由して、HTML の input 要素の id
としてうまく動作するよう、文字列をフォーマットします。
{% set name = 'input[name]' %}
<input type="text" name="{{ name }}" id="{{ name|id }}">
# index
配列に ArrayHelper::index() (opens new window) を実行します。
{% set entries = entries|index('id') %}
# indexOf
配列内の渡された値のインデックス、または、他の文字列に含まれる渡された文字列のインデックスを返します。(返される位置は、0 からはじまることに注意してください。)見つからなかった場合、代わりに -1
が返されます。
{% set colors = ['red', 'green', 'blue'] %}
<p>Green is located at position {{ colors|indexOf('green') + 1 }}.</p>
{% set position = 'team'|indexOf('i') %}
{% if position != -1 %}
<p>There <em>is</em> an “i” in “team”! It’s at position {{ position + 1 }}.</p>
{% endif %}
# intersect
渡された配列内にある値だけを含む配列を返します。
{% set ownedIngredients = [
'vodka',
'gin',
'triple sec',
'tonic',
'grapefruit juice'
] %}
{% set longIslandIcedTeaIngredients = [
'vodka',
'tequila',
'rum',
'gin',
'triple sec',
'sweet and sour mix',
'Coke'
] %}
{% set ownedLongIslandIcedTeaIngredients =
ownedIngredients|intersect(longIslandIcedTeaIngredients)
%}
# json_encode
値の JSON 表記を返します。
これは Twig コアの json_encode
(opens new window) フィルタと同様に機能しますが、引数 options
がセットされておらず、 レスポンスのコンテンツタイプが text/html
または application/xhtml+xml
の場合、デフォルトで JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_QUOT
になります。
# json_decode
yii\helpers\Json::decode() (opens new window) を通して、文字列を配列に JSON デコードします。
{% set arr = '[1, 2, 3]'|json_decode %}
# kebab
「kebab-case」でフォーマットされた文字列を返します。
類推できない方のために、シシカバブ (opens new window)の参照です。
{{ 'foo bar?'|kebab }}
{# Output: foo-bar #}
# lcfirst
文字列の最初の文字を小文字にします。
{{ 'Foobar'|lcfirst }}
{# Output: foobar #}
# literal
文字列に craft\helpers\Db::escapeParam() (opens new window) を実行します。
{{ 'SELECT id, * FROM table'|literal }}
{# Output: SELECT id\, \* FROM table #}
# markdown
or md
Markdown (opens new window) で文字列を処理します。
{% set content %}
# Everything You Need to Know About Computer Keyboards
The only *real* computer keyboard ever made was famously
the [Apple Extended Keyboard II] [1].
[1]: https://www.flickr.com/photos/gruber/sets/72157604797968156/
{% endset %}
{{ content|markdown }}
このフィルタは、2つの引数をサポートしています。
flavor
は、'original'
(デフォルト値)、'gfm'
(GitHub-Flavored Markdown)、'gfm-comment'
(改行が<br>
に変換された GFM)、 または、'extra'
(Markdown Extra)にできます。inlineOnly
は、<p>
タグを除き、インライン要素だけを解析するかどうかを決定します。(デフォルトはfalse
)
# multisort
配列内の1つ以上のプロパティまたはキーで、配列をソートします。
単一のプロパティまたはキーでソートするには、その名前を文字列で渡します。
{% set entries = entries|multisort('title') %}
複数のプロパティまたはキーでソートするには、それらを配列で渡します。例えば、これははじめに投稿日、次にタイトルでエントリをソートします。
{% set entries = entries|multisort(['postDate', 'title']) %}
ソートされる値が配列要素のプロパティやキーとして存在しない場合、代わりにアローファンクションを渡すことができます。
{% set entries = entries|multisort(e => e.author.fullName) %}
デフォルトでは、値は昇順でソートされます。direction
パラメータを利用して、降順に切り替えることができます。
{% set entries = entries|multisort('title', direction=SORT_DESC) %}
sortFlag
パラメータを利用して、並び替えの振る舞いをカスタマイズすることもできます。例えば、アイテムを数値でソートするには、SORT_NUMERIC
を利用します。
{% set entries = entries|multisort('id', sortFlag=SORT_NUMERIC) %}
利用可能なソートフラグについては、PHP の sort() (opens new window) ドキュメントを参照してください。
複数のプロパティやキーでソートする際、direction
および sortFlag
パラメータも配列としてセットしなければなりません。
{% set entries = entries|multisort([
'postDate',
'title',
], sortFlag=[SORT_NATURAL, SORT_FLAG_CASE]) %}
# namespace
|namespace
フィルタは、CSS セレクタだけでなく、入力項目の name や HTML 属性の名前空間を割り当てるために利用されます。
例えば、これは
{% set html %}
<style>
.text { font-size: larger; }
#title { font-weight: bold; }
</style>
<input class="text" id="title" name="title" type="text">
{% endset %}
{{ html|namespace('foo') }}
次のようになるでしょう。
<style>
.text { font-size: larger; }
#foo-title { font-weight: bold; }
</style>
<input class="text" id="foo-title" name="foo[title]" type="text">
CSS セレクタの #title
が #foo-title
、id
属性が title
から foo-title
、さらに、name
属性が title
から foo[title]
へ変わったことに注目してください。
クラス名にも名前空間を割り当てたい場合、withClasses=true
を渡してください。クラス CSS セレクタと class
属性の両方に影響します。
{{ html|namespace('foo', withClasses=true) }}
次のような結果になるでしょう。
<style>
.foo-text { font-size: larger; }
#foo-title { font-weight: bold; }
</style>
<input class="foo-text" id="foo-title" name="foo[title]" type="text">
# namespaceInputId
エレメント ID に名前空間を割り当てます。
例えば、これは
{{ 'bar'|namespaceInputId('foo') }}
次のように出力するでしょう。
foo-bar
これが namespace タグ内で利用されている場合、タグによって適用される名前空間がデフォルトで利用されます。
# namespaceInputName
入力項目の name に名前空間を割り当てます。
例えば、これは
{{ 'bar'|namespaceInputName('foo') }}
次のように出力するでしょう。
foo[bar]
これが namespace タグ内で利用されている場合、タグによって適用される名前空間がデフォルトで利用されます。
# number
ユーザーが優先する言語に応じて、数値をフォーマットします。
グループシンボル(例えば、英語のコンマ)を省略したい場合は、オプションで false
を渡すことができます。
{{ 1000000|number }}
{# Output: 1,000,000 #}
{{ 1000000|number(false) }}
{# Output: 1000000 #}
# parseRefs
リファレンスタグの文字列を解析します。
{% set content %}
{entry:blog/hello-world:link} was my first blog post. Pretty geeky, huh?
{% endset %}
{{ content|parseRefs|raw }}
# pascal
「PascalCase」(別名「UpperCamelCase」)でフォーマットされた文字列を返します。
{{ 'foo bar'|pascal }}
{# Output: FooBar #}
# percentage
ユーザーが優先する言語に応じて、パーセンテージをフォーマットします。
# prepend
別の要素の先頭に HTML を追加します。
{{ '<div><p>Ipsum</p></div>'|prepend('<p>Lorem</p>') }}
{# Output: <div><p>Lorem</p><p>Ipsum</p></div> #}
同じタイプの要素がまだ存在しないときのみ新しい要素を追加したい場合、第二引数に 'keep'
を渡します。
{{ '<div><p>Ipsum</p></div>'|prepend('<p>Lorem</p>', 'keep') }}
{# Output: <div><p>Ipsum</p></div> #}
同じタイプの既に存在する要素を置き換えたい場合、第二引数に 'replace'
を渡します。
{{ '<div><p>Ipsum</p></div>'|prepend('<p>Lorem</p>', 'replace') }}
{# Output: <div><p>Lorem</p></div> #}
# purify
与えられたテキストに HTML Purifier を実行します。
{{ user.bio|purify }}
カスタムの HTML Purifier 設定ファイルを指定することもできます。
{{ user.bio|purify('user_bio') }}
config/htmlpurifier/user_bio.json
によって定義された設定に基づいて、HTML Purifier を設定します。
# push
1つ以上のアイテムを配列の最後に追加し、新しい配列を返します。
{% set array1 = ['foo'] %}
{% set array2 = array|push('bar', 'baz') %}
{# Result: ['foo', 'bar', 'baz'] #}
# replace
文字列の一部を他のものに置き換えます。
マッピング配列が渡された場合、Twig コアの replace
(opens new window) フィルタと同様に機能します。
{% set str = 'Hello, FIRST LAST' %}
{{ str|replace({
FIRST: currentUser.firstName,
LAST: currentUser.lastName
}) }}
または、一度に1つのものを置き換えることができます。
{% set str = 'Hello, NAME' %}
{{ str|replace('NAME', currentUser.name) }}
置換文字列の値の最初と最後にスラッシュを付けてマッチするものを検索することで、正規表現も利用できます。
{{ tag.title|lower|replace('/[^\\w]+/', '-') }}
# rss
RSS フィードに必要な形式(D, d M Y H:i:s O
)で日付を出力します。
{{ entry.postDate|rss }}
# snake
「snake_case」でフォーマットされた文字列を返します。
{{ 'foo bar'|snake }}
{# Output: foo_bar #}
# time
タイムスタンプ、または、DateTime (opens new window) オブジェクトのフォーマットされた時刻を出力します。
{{ entry.postDate|time }}
{# Output: 10:00:00 AM #}
Craft はロケール固有の時刻のフォーマットを出力するいくつかの特別なフォーマットキーワードを提供します。
{{ entry.postDate|time('short') }}
{# Output: 10:00 AM #}
利用可能な format
値は、次の通りです。
フォーマット | 実例 |
---|---|
short | 5:00 PM |
medium (デフォルト) | 5:00:00 PM |
long | 5:00:00 PM PDT |
デフォルトでは、現在のアプリケーションのロケールが利用されます。別のロケールで日付と時刻をフォーマットしたい場合、引数 locale
を利用します。
{{ entry.postDate|time('short', locale='en-GB') }}
{# Output: 17:00 #}
timezone
パラメータを利用して、出力する時刻のタイムゾーンをカスタマイズできます。
{{ entry.postDate|time('short', timezone='UTC') }}
{# Output: 12:00 AM #}
# timestamp
craft\i18n\Formatter::asTimestamp() (opens new window) 経由で、人が読めるタイムスタンプとして日付をフォーマットします。
{{ now|timestamp }}
{# Output: 9:00:00 AM #}
# translate
または t
Craft::t() (opens new window) でメッセージを翻訳します。
{{ 'Hello world'|t('myCategory') }}
カテゴリの指定がない場合、デフォルトで site
になります。
{{ 'Hello world'|t }}
これがどのように機能するかの詳細については、静的メッセージの翻訳を参照してください。
# ucfirst
文字列の最初の文字を大文字にします。
{{ 'foobar'|ucfirst }}
{# Output: Foobar #}
# unique
配列に array_unique() (opens new window) を実行します。
{% set array = ['Larry', 'Darryl', 'Darryl'] %}
{{ array|unique }}
{# Result: ['Larry', 'Darryl'] #}
# unshift
1つ以上のアイテムを配列の先頭に追加し、新しい配列を返します。
{% set array1 = ['foo'] %}
{% set array2 = array|unshift('bar', 'baz') %}
{# Result: ['bar', 'baz', 'foo'] #}
# values
指定された配列のすべての値の配列を返しますが、カスタムキーは除かれます。
{% set arr1 = {foo: 'Foo', bar: 'Bar'} %}
{% set arr2 = arr1|values %}
{# arr2 = ['Foo', 'Bar'] #}
# where
配列に craft\helpers\ArrayHelper::where() (opens new window) を実行します。
{% set array = { 'foo': 'bar', 'bar': 'baz', 'bat': 'bar' } %}
{{ array|filterByValue(v => v == 'bar') }}
{# Result: { 'foo': 'bar', 'bat': 'bar' } #}
# without
指定されたエレメントを除いた配列を返します。
{% set entries = craft.entries.section('articles').limit(3).find %}
{% set firstEntry = entries[0] %}
{% set remainingEntries = entries|without(firstEntry) %}
# withoutKey
指定されたキーを除いた配列を返します。
{% set array = {
foo: 'foo',
bar: 'bar',
baz: 'baz'
} %}
{% set filtered = array|withoutKey('baz') %}