基本構文
Liquidは2つの主な構文構造を使用します:- 出力タグ:
{{ ... }}— 変数またはオブジェクトからデータを表示します。 - ロジックタグ:
{% ... %}— 条件文またはループを実行します。
条件文
演算子
==、!=、>、<、>=、<=and、orcontains(文字列または配列)
liquid
if、elsif、else
liquid
unless
liquid
フィルター
{{ variable | filter }}を使用してフィルターを適用し、データの表示方法を調整します。
default
プロパティが空または存在しない場合にデフォルト値を割り当てます。
liquid
date
dateフィルターは、タイムスタンプを別の日付形式に変換します。この構文の形式はstrftimeと同じです。入力はRubyのTime.parseと同じ形式を使用します。
タグを使用して日付をUnixタイムスタンプ(秒単位)として設定します。これにより、Liquid構文のパーソナライゼーションと時間演算子を使用したセグメンテーションの両方を使用できます。たとえば、タグは次のようになります:bill_due : 1687968776
liquid
Result
liquid
Result
liquid
Result
now(またはtoday)を渡します。
liquid
Result
現在の時刻は、メッセージが受信者に送信されたときに基づいてメッセージにレンダリングされます。メッセージをテストしている場合、テストメッセージが送信されたときの現在の時刻が表示されます。
capitalize
このフィルターは、文字列の最初の文字を大文字にし、残りの文字を小文字に変換します。
liquid
Result
round
このフィルターは、数値を最も近い整数に丸めます。引数として数値が渡された場合は、その小数点以下の桁数に丸めます。
liquid
Result
pluralize
このフィルターは、指定された数値に基づいて文字列の単数形または複数形を返します。数値は整数である必要があり、文字列として提供できます。文字列の単数形と複数形の両方を提供する必要があります。
liquid
Result
イテレーション
forループ
コードブロックを繰り返し実行します。forループ内で使用可能な属性の完全なリストについては、Liquid forループドキュメントを参照してください。
liquid
Request Body
Result
limitとoffset
ループを指定された反復回数に制限します。たとえば、メッセージに4つの製品のみを表示する場合、LimitsとOffsetsを使用して表示される製品の数を指定できます。
Data
liquid
Result
Data
liquid
Result
where
指定されたプロパティ値を持つオブジェクトのみを含む配列を作成します。デフォルトでは、真の値を持つオブジェクトを含みます。
この例では、製品のリストがあり、キッチン製品を別々に表示したいと仮定します。whereを使用すると、typeがkitchenである製品のみを含む配列を作成できます。
Data
liquid
Result
文字列操作
文字列フィルターを適用して、メッセージ内のタグ値またはインライン文字列の表示方法を調整します。| コマンド | 説明 | 例 | 出力例 |
|---|---|---|---|
replace | 部分文字列を別の文字列に置き換えます。 | {{ 'hello world' | replace: 'world', 'there' }} | hello there |
capitalize | 文字列の最初の文字を大文字にします。 | {{ 'hello' | capitalize }} | Hello |
upcase | 文字列を大文字に変換します。 | {{ 'hello' | upcase }} | HELLO |
downcase | 文字列を小文字に変換します。 | {{ 'HELLO' | downcase }} | hello |
strip | 文字列から先頭と末尾の空白を削除します。 | {{ ' hello ' | strip }} | hello |
strip_html | 文字列からすべてのHTMLタグを削除します。 | {{ '<p>hello</p>' | strip_html }} | hello |
truncate | 文字列を指定された長さに短縮し、必要に応じて省略記号(…)を追加します。 | {{ 'This is a long sentence' | truncate: 10 }} | This is a… |
truncatewords | 指定された単語数の後で文字列を切り詰めます。 | {{ 'This is a long sentence' | truncatewords: 2 }} | This is… |
replace_first | 部分文字列の最初の出現を置き換えます。 | {{ 'hello world' | replace_first: 'world', 'there' }} | hello there |
prepend | 別の文字列の先頭に文字列を追加します。 | {{ 'world' | prepend: 'hello ' }} | hello world |
append | 文字列の末尾に文字列を追加します。 | {{ 'hello' | append: ' world' }} | hello world |
lstrip | 文字列から先頭の空白を削除します。 | {{ ' hello' | lstrip }} | hello |
rstrip | 文字列から末尾の空白を削除します。 | {{ 'hello ' | rstrip }} | hello |
FAQ
置換が機能しないのはなぜですか?
- アプリ内メッセージはプロパティ置換をサポートしていません。
- 「テストメッセージを送信」を使用する場合、タグ置換は機能しません。
- タグキーは英数字である必要があります。または、_と-を使用します(ピリオドやスペースは使用できません)。
- 置換はプレビューモードには表示されません。テストするには実際のメッセージを送信してください。
defaultとif/elseはどちらを使うべきですか?
変数値のみにフォールバックが必要で、周囲のテキストが変わらない場合は、defaultフィルターを使用します。
liquid
Result (name = "Jon")
Result (nameが空の場合)
if/else条件ロジックを使用します。
liquid
Result (name = "Jon")
Result (nameが空の場合)
空白と改行を制御するには?
ハイフンを使用します:{{- ... -}}、{%- ... -%}で周囲の空白をトリミングします。
詳細については、空白制御を参照してください。
ユーザー生成コンテンツを処理するには?
ユーザー生成テキストを{% raw %}と{% endraw %}でラップして、Liquid解析を防止します。“raw”構文を参照してください。
関連ページ
メッセージパーソナライゼーション
Liquid、Data Feeds、カスタムイベントを含むすべてのパーソナライゼーションオプションの概要。
Data Feeds
送信時にAPIからメッセージにリアルタイムデータを取得します。
タグ
セグメンテーションとLiquidパーソナライゼーションのためにユーザーにキーと値のペアを保存します。
テンプレート
Liquidパーソナライゼーションが組み込まれた再利用可能なメッセージテンプレートを作成します。