HubLでサポートされるフィルター

Last updated:

フィルターはHubLの最終的な出力に影響を与えます。さまざまなHubL文と式にフィルターを適用することで、サーバーから出力されるテンプレートマークアップを変更できます。

フィルターの基本構文は|filternameです。フィルターは、文または式のすぐ後に、区切り記号で囲んで追加します。パラメーターを括弧内に追加指定できるフィルターもあります。文字列パラメーター、数値パラメーター、ブールパラメーターを含むフィルターの基本構文は、|filtername("stringParameter", 10, true)です。文字列パラメーターについては引用符で囲む必要があることに注意してください。また、HubLフィルターにはエイリアスがあり、プライマリーフィルターと同じ目的で使用できます。

サポートされる全てのHubLフィルターを以下に示します。

注:HubSpot CMSとブログページでは、コンタクトトークンや会社トークンなどのパーソナライズトークンにHubLフィルターを適用できますが、Eメールでは適用できません。 

abs

数値の絶対値を取得します。このフィルターを使用すると、常に正の数値が得られます。

{% set my_number = -53 %} {{ my_number|abs }}53

add

1つの数値を別の数値に追加します。このフィルターは+演算子と同様に機能します。括弧内のパラメーターは、最初の数値に加えられる加数です。

{% set my_num = 40 %} {{ my_num|add(13) }}53

attr

ディクショナリー(辞書型)の属性をレンダリングします。このフィルターの機能は、content.absolute_urlなど、ディクショナリーに含まれる変数を出力する機能と同等です。

ParameterDescription
attribute_name
必須

どの属性を出力するかを指定します

{{ content|attr("absolute_url") }} http://developers.hubspot.com/docs/cms/hubl/hubl-filters

batch

batchフィルターは、1つのシーケンス内の複数項目をグループ化します。

ParameterDescription
linecount
必須

バッチに含める項目の数

fill_with
任意

項目の欠落がある場合に何で埋めるかを指定します

以下の例では、一連のフルーツの種類からなるシーケンスが変数に格納されています。batchフィルターは、シーケンスを反復処理するループに適用します。ネストされたループが3回実行されて行ごとに3種類のフルーツを出力した後、外側のループが再び実行されます。フルーツが5種類しかないので、最終的な出力では最後の項目が&nbsp(2番目のパラメーター)に置き換えられる点にご注目ください。

{% set rows = ["apples", "oranges", "pears", "grapes", "blueberries"] %} <table> {% for row in rows|batch(3, "&nbsp;") %} <tr> {% for column in row %} <td>{{ column }}</td> {% endfor %} </tr> {% endfor %} </table><table> <tbody> <tr> <td>apples</td> <td>oranges</td> <td>pears</td> </tr> <tr> <td>grapes</td> <td>blueberries</td> <td>&nbsp;</td> </tr> </tbody> </table>

between_times

指定された時間単位を使用して、2つの日時オブジェクト間の差異を計算します。

ParameterDescription
end
必須

終了日時オブジェクト

timeunit
必須

有効な時間単位はnanosmicrosmillissecondsminuteshourshalf_daysdaysweeksmonthsyearsdecadescenturiesmillenniaerasです。

{% set begin = "2018-07-14T14:31:30+0530"|strtotime("yyyy-MM-dd'T'HH:mm:ssZ") %} {% set end = "2018-07-20T14:31:30+0530"|strtotime("yyyy-MM-dd'T'HH:mm:ssZ") %} {{ begin|between_times(end, "days") }}6

bool

テキスト文字列値をブール値に変換します。

{% if "true"|bool == true %}hello world{% endif %}hello world

capitalize

変数値の最初の文字を大文字にします。最初の文字が大文字になり、その他の文字は全て小文字になります。スペースまたはハイフンで区切られている後続の単語については、最初の文字が大文字になりません。

{% set sentence = "the first letter of a sentence should always be capitalized." %} {{ sentence|capitalize }}The first letter of a sentence should always be capitalized.

center

centerフィルターは空白を使用して、指定されたフィールド長の中でテキストを中央に配置します。ここには説明上記載していますが、HubSpotのHTMLコンパイラーでは空白が自動的に除去されるので、このフィルターは推奨されることもなく、特に有効でもありません。

ParameterDescription
width
必須

テキストを中央揃えするための空白の長さを指定します

以下の例では、空白が除去されないようにpreタグ内の変数にcenterフィルターを適用しています。

<pre> {% set var = "string to center" %} before{{ var|center(80) }}after </pre><pre> before string to center after </pre>

convert_rgb

HEX値をRGB文字列に変換します。これは、色の変数をRGBに変換してRGBA CSS宣言で使用する場合に便利です。以下の例では、色モジュールによって設定された値がRGB値に変換され、RGBA CSS宣言で使用されます。

{% set my_color = "#FFFFFF" %} {{ my_color|convert_rgb }} {% color "my_color" color="#000000", export_to_template_context=True %} <div style="background: rgba({{ widget_data.my_color.color|convert_rgb }}, .5)"></div>255, 255, 255 <div style="background: rgba(0, 0, 0, .5)"></div>

cut

値から文字列を除去します。このフィルターを使用すると、一致する特定の部分文字列を除外できます。パラメーターには、削除対象となる部分文字列を指定します。以下の例では、スペースと単語「world」が元の変数値から除去されます。

ParameterDescription
characters_to_cut
必須

削除対象となる部分文字列

{% set my_string = "Hello world." %} {{ my_string|cut(" world") }}Hello.

datetimeformat

日時オブジェクトの書式を設定します。datetimeformatフィルターを使用すると、そのタイムスタンプを読みやすい日付、時刻、あるいは日時に変換できます。以下の表に示すフィルターのパラメーターによって、時間変数が最終的にどのようにレンダリングされるかが決まります。

  • フィルターの日付入力がnullの場合は、現在の日時と見なされます。
  • 2番目のパラメーター(任意)は、タイムゾーンの指定に使用します。タイムゾーンは、サポートされるJava 8形式にしてください。
  • また、サポートされるJava 8形式で、ロケールを3番目のパラメーターとして指定することもできます。

このフィルターには日時タイムスタンプが必要です。日時情報の書式が異なる場合は、最初にstrtotimeフィルターを使用して、データの書式を調整しておきます。

ParameterDescription
format
必須

日時オブジェクトのディレクティブ形式。値の例の下にあるディレクティブ表を参照してください。

timezone
任意

タイムゾーンを指定します。サポートされるJava 8形式にしてください

locale
任意

ロケールを指定します。サポートされるJava 8形式にしてください

{{ content.updated|datetimeformat("%B %e, %Y") }} {{ content.publish_date|datetimeformat("%B %e, %Y %l %p") }} {{ content.publish_date|datetimeformat("%B %e, %Y %l %p", "America/Los_Angeles") }} {{ content.publish_date|datetimeformat("%B %e, %Y %l %p", "America/Los_Angeles", "es-US") }}October 17, 2020 October 1, 2020 4 PM October 1, 2020 9 AM octubre 1, 2020 9 a.m.
日時の書式設定
ディレクティブ説明
%a
Sun, Mon, ..., Sat (en-US);So, Mo, ..., Sa (de-DE)曜日(ロケールで設定された短縮名)
%A
Sunday, Monday, ..., Saturday (en-US);Sonntag, Montag, ..., Samstag (de-DE)

曜日(ロケールで設定されたフルネーム)

%w
1, 2, ..., 7

10進数で表した曜日。1は日曜日、7は土曜日

注:0で始まるPythonの曜日とは異なります

%d
01, 02, ..., 31

月の日付(ゼロ埋めされた10進数)

%e
1, 2, ..., 31

月の日付(ゼロ埋めなしの10進数)

%b
Jan, Feb, ..., Dec (en-US);Jan, Feb, ..., Dez (de-DE)

月(ロケールで設定された短縮名)

%B
January, February, ..., December (en-US);Januar, Februar, ..., Dezember (de-DE)

月(ロケールで設定されたフルネーム)

%OB
1月, 2月, ..., 12月 (ja)

数字の月名を取得します

%m
01, 02, ..., 12

月(ゼロ埋めされた10進数)

%y
00, 01, ..., 99

年(世紀なし、ゼロ埋めされた10進数)

%Y
1970, 1988, 2001, 2013

年(世紀あり、10進数)

%H
00, 01, ..., 23

時間(24時間表記、ゼロ埋めされた10進数)

%I
01, 02, ..., 12

時間(12時間表記、ゼロ埋めされた10進数)

%k
0, 1, ..., 24

時間(24時間表記、0~23の範囲の10進数、1桁の場合は前に空白)

%l
1, 2, ..., 12

時間(12時間表記、0~12の範囲の10進数、1桁の場合は前に空白)注:これは小文字のLです

%p
AM, PM (en-US);am, pm (de-DE)

AMまたはPMに相当する、ロケールで設定された表記

%M
00, 01, ..., 59

分(ゼロ埋めされた10進数)

%S
00, 01, ..., 59

秒(ゼロ埋めされた10進数)

%f
000000, 000001, ..., 999999

ミリ秒(左側がゼロ埋めされた10進数)

%z
(empty), +0000, -0400, +1030

+HHMM形式または-HHMM形式のUTCオフセット(オブジェクトがnaiveの場合は空の文字列)

%Z
(empty), UTC, EST, CST

タイムゾーン名(オブジェクトがnaiveの場合は空の文字列)

%j
001, 002, ..., 366

年内での日付(ゼロ埋めされた10進数)

%U
00, 01, ..., 53

(日曜日を週の第1日とする)年内での週番号(ゼロ埋めされた10進数)。年初の日曜日より前にある全ての日は、第0週と見なされます

%W
00, 01, ..., 53

(月曜日を週の第1日とする)年内での週番号(10進数)。年初の月曜日より前にある全ての日は、第0週と見なされます

%c
Tue Aug 16 21:30:00 1988 (en-US);Di 16 Aug 21:30:00 1988 (de-DE)

ロケールの該当する日時表記

%x
08/16/88 (None);08/16/1988 (en-US);16.08.1988 (de-DE)

ロケールの該当する日付表記

%X
21:30:00 (en-US);21:30:00 (de-DE)

ロケールの該当する時刻表記

%%
%

%のリテラル文字

default

値が未定義の場合に、最初のパラメーターを返します。それ以外の場合、変数の値が出力されます。falseと評価される変数でdefaultを使用する場合は、2番目のパラメーターにtrueを指定する必要があります。以下の最初の例では、変数が未定義の場合にメッセージが出力されます。2番目の例では、未定義ではない空の文字列にフィルターを適用していますが、2番目のパラメーターが原因でメッセージが出力されます。

ParameterDescription
default_variable
必須

変数が未定義の場合に返される値。変数が定義されている場合は、変数の値が返されます。

boolean
任意

変数が空の文字列の場合、default_valueが返されます

{{ my_variable|default("my_variable is not defined") }} {{ ""|default("the string was empty", true) }}my_variable is not defined the string was empty

dictsort

ディクショナリー(辞書型)を並べ替えて「キー、値」のペアを生成します。ディクショナリーの並べ替えは既定では行われませんが、キーまたは値を基準に並べ替えたディクショナリーを出力できます。最初のパラメーターは、並べ替えの際に大文字と小文字を区別するかどうかを指定するブール値です。2番目のパラメーターは、キーと値のどちらを基準にディクショナリーを並べ替えるかを指定します。以下の例では、コンタクトについて確認済みの詳細情報を全て含む、並べ替えられたコンタクトディクショナリーを出力します。

ParameterDescription
case_sensitive
必須

並べ替えの際に大文字と小文字を区別するかどうかを指定します

sort_by
必須

keyvalueのどちらを基準に並べ替えるかを指定します

{% for item in contact|dictsort(false, "value") %} {{item}} {% endfor %}A sorted contact dictionary

difference

このフィルターは、2つのセットまたはリストの差異を返します。フィルターから返されるリストには、最初のリストに含まれ、2番目には含まれない一意の要素が全て格納されます。

ParameterDescription
list
必須

最初のリストとの差異を見つけるために比較する2番目のリスト

{{ [1, 2, 3]|difference([2, 3, 4, 5]) }}[1]

divide

現在の値を除数で割ります。渡すパラメーターは除数です。このフィルターは、/演算子の代わりになります。

ParameterDescription
divisor
必須

変数を除算するための数値

{% set numerator = 106 %} {{ numerator|divide(2) }}53

divisible

divisibleフィルターはdivisibleby式による検証の代わりになります。値を特定の数で割り切れる場合、trueと評価されます。

ParameterDescription
divisor
必須

値を割り切れるかどうかを評価するための数値

{% set num = 10 %} {% if num|divisible(2) %} The number is divisble by 2 {% endif %}The number is divisible by 2

escape

文字列内の文字&、<, >、‘、”、を、HTMLで安全に使用できる文字列に変換します。このような文字が含まれる可能性のあるテキストをHTMLで表示する際にこのフィルターを使用します。戻り値はマークアップ文字列としてマークされます。

{% set escape_string = "<div>This markup is printed as text</div>" %} {{ escape_string|escape }}<div>This markup is printed as text</div>

escape_jinjava

文字列内の { } 文字を、Jinjavaで安全に使用できる文字列に変換します。このような文字が含まれる可能性のあるテキストをJinjavaで表示する際にこのフィルターを使用します。戻り値はマークアップ文字列としてマークされます。

{% set escape_string = "{{This markup is printed as text}}" %} {{ escape_string|escape_jinjava }}{{This markup is printed as text}}

escapejs

JavaScript変数宣言に文字列を安全に挿入できるように、文字列をエスケープ処理します

{% set escape_string = "\tThey said "This string can safely be inserted into JavaScript."" %} {{ escape_string|escapejs }}They said \'\\tThis string can safely be inserted into JavaScript.\'

escapejson

文字列をJSON値として使用できるように、文字列をエスケープ処理します

{% set your_string = "\tTesting a \"quote for the week\"" {{ your_string|escapejson }}\\tTesting a \\\"quote for the week\\\"

filesizeformat

値の書式を読みやすいファイルサイズにします(13 kB、4.1 MB、102 Bytesなど)。既定では10進プレフィックス(Mega、Gigaなど)が使用され、パラメーターをTrueに設定した場合はバイナリープレフィックス(Mebi、Gibi)が使用されます。

ParameterDescription
boolean
任意

trueに設定した場合、Mebi、Gibiのようなバイナリープレフィックスが使用されます。

{% set bytes = 100000 %} {{ bytes|filesizeformat }}100.0 KB

first

シーケンス内の最初の項目を返します。

{% set my_sequence = ["Item 1", "Item 2", "Item 3"] %} {{ my_sequence|first }}Item 1

float

値を浮動小数点値に変換します。正常に変換できない場合は0.0が返されます。この既定の動作は最初のパラメーターを使用することで変更できます。

ParameterDescription
default
任意

正常に変換できない場合に返される整数

{% text "my_text" value="25", export_to_template_context=True %} {{ widget_data.my_text.value|float + 28 }}53.0

forceescape

厳密なHTMLエスケープを実行します。HubSpotの環境では2重にエスケープを行うケースがないため、基本的にはescapeフィルターと同じ動作をします。

{% set escape_string = "<div>This markup is printed as text</div>" %} {{ escape_string|forceescape }}<div>This markup is printed as text</div>

format

Python文字列の書式設定をオブジェクトに適用します。%sを別の変数に置換できます。

{{ "Hi %s %s"|format(contact.firstname, contact.lastname) }} Hi Brian Halligan

format_currency

パラメーターとして渡されるポータルの既定の通貨とロケールに基づき、特定の数値の書式を通貨として設定します。

ParameterDescription
locale
任意

Javaローカル言語タグ。既定はページのロケールです。形式:ISO639LanguageCodeInLowercase-ISO3166CountryCodeInUppercase

currency_code
任意

通貨のISO 4217コード。既定は、ポータルの既定の通貨です

use_default_decimal_digits
任意

通貨コードの既定の小数桁を書式設定時に使用する必要があるかどうかを指定するブール値。既定値はfalseです

{% set price = 100 %} {{ price|format_currency("en-US") }} {{ price|format_currency("fr-FR") }} {{ price|format_currency("jp-JP", "JPY", true) }}$100<br> 100 $<br> ¥ 100

fromjson

JSON文字列をオブジェクトに変換します。

{% set obj ="{ "name":"Brian","role":"Owner" }" %} {{ obj|fromjson }}{role=Owner, name=Brian}

geo_distance

地上の2地点間の楕円2D距離を計算します。

<!-- in the example below the HubDB Location = 42.3667, -71.1060 (Cambridge, MA) | Chicago, IL = 37.3435, -122.0344 --> {{ row.location | geo_distance(37.3435, -122.0344, "mi") }} MI861.1655563461395 MI

groupby

groupbyフィルターは、共通の属性を基準にしてオブジェクトのシーケンスをグループ化します。パラメーターは、グループ化の基準となる共通属性を設定します。

ParameterDescription
attribute
必須

グループ化の基準となる属性

<ul> {% for group in contents|groupby("blog_post_author") %} <li>{{ group.grouper }} <ul> {% for content in group.list %} <li>{{ content.name }}</li> {% endfor %} </ul> </li> {% endfor %} </ul><ul> <li>Blog author 1 <ul> <li>Post by Blog author 1<li> <li>Post by Blog author 1<li> <li>Post by Blog author 1<li> </ul> </li> <li>Blog author 2 <ul> <li>Post by Blog author 2<li> <li>Post by Blog author 2<li> <li>Post by Blog author 2<li> </ul> </li> <li>Blog author 3 <ul> <li>Post by Blog author 3<li> <li>Post by Blog author 3<li> <li>Post by Blog author 3<li> </ul> </li> </ul>

indent

indentフィルターは空白を使用して、特定のフィールド長の範囲内でテキストのインデントを設定します。ここには説明上記載していますが、HubSpotのHTMLコンパイラーでは空白が自動的に除去されるので、このフィルターは推奨されることもなく、特に有効でもありません。以下の例では、空白が除去されないようにpreタグ内の変数にcenterフィルターを適用しています。最初のパラメーターは空白の量を制御し、2番目のブール値は第1行をインデントするかどうかを切り替えます。

ParameterDescription
width
必須

適用される空白の量

boolean
必須

最初の行をインデントするかどうかを示すブール値

<pre> {% set var = "string to indent" %} {{ var|indent(2, true) }} </pre> string to indent

int

値を整数に変換します。正常に変換できない場合は0が返されます。この既定の動作は最初のパラメーターを使用することで変更できます。

ParameterDescription
default
必須

正常に変換できない場合に返される整数

{% text "my_text" value="25", export_to_template_context=True %} {{ widget_data.my_text.value|int + 28 }}53

intersect

このフィルターは、2つのセットまたはリストの共通部分を返します。フィルターから返されるリストには、両方のリストに含まれる一意の要素が全て格納されます。

ParameterDescription
list
必須

最初のリストとの共通部分を見つけるために比較される2番目のリスト

{{ [1, 2, 3]|intersect([2, 3, 4, 5]) }}[2, 3]

ipaddr

値が有効なIPv4またはIPv6アドレスの場合には、trueと評価されます。

{% set ip = "1.0.0.1" %} {% if ip|ipaddr %} The string is a valid IP address {% endif %} The string is a valid IP address

join

シーケンスの文字列を連結した1つの文字列を返します。要素間は既定では空文字列で区切られますが、任意のパラメーターで区切り文字を定義できます。2番目のパラメーターを使用すると、結合する属性を指定できます。

ParameterTypeDescription
delimiter
任意
String

文字列の連結に使用する区切り文字

attribute
任意
HubL Variable

区切り文字として使用する属性

{% set my_list = [1, 2, 3] %} {% set sep = "---" %} {{ my_list|join }} {{ my_list|join("|") }} {{ my_list|join(sep) }}123 1|2|3 1---2---3

last

シーケンスの最後の項目を返します。

{% set my_sequence = ["Item 1", "Item 2", "Item 3"] %} {% my_sequence|last %}Item 3

length

シーケンスまたはマッピング内の項目数を返します。

{% set services = ["Web design", "SEO", "Inbound Marketing", "PPC"] %} {{ services|length }}4

list

数値を変換して1つのリストにします。文字列の場合は、文字のリストが返されます。シーケンスに文字列を追加するには、それをシーケンス区切り[ ]と共に文字列変数に追加します。

{% set one = 1 %} {% set two = 2 %} {% set three = 3 %} {% set four = ["four"] %} {% set list_num = one|list + two|list + three|list + four|list %} {{ list_num }}[1,2,3]

log

数値の自然対数を計算します。

ParameterDescription
base
任意

nを低とする対数を計算できます

{{ 10|log }} {{ 65536|log(2) }}2.302585092994046 16.0

lower

値を全て小文字に変換します。

{{ text "text" value="Text to MAKE Lowercase", export_to_template_context=True }} {{ widget_data.text.value|lower }}text to make lowercase

map

オブジェクトのシーケンスにフィルターを適用するか、属性を検索します。オブジェクトのリストを扱い、その中の特定の値にだけ対象を絞り込む際に便利です。

基本的な使用法は、属性に対するマッピングです。例えば、ディクショナリーの特定の属性に特定の値が存在するかどうかを検査する条件付きロジックを使用する場合です。または、フィルター名と引数を渡してフィルターを起動することもできます。

以下に示すパラメーターのいずれか1つを使用できます。
ParameterDescription
attribute

複数オブジェクトからなるシーケンスで返される属性

filter

オブジェクトのシーケンスに適用するフィルター

{% set seq = ["item1", "item2", "item3"] %} {{ seq|map("upper") }} {{ content|map("currentState")}}[ITEM1, ITEM2, ITEM3] DRAFT

md5

特定のオブジェクトのmd5ハッシュを計算します

{{ content.absolute_url|md5 }} 923adb4ce05a4c6342c04c80be88d15e

minus_time

日時オブジェクトで一定の時間を差し引きます。

ParameterDescription
diff
必須

差し引く数量

timeunit
必須

有効な時間単位はnanosmicrosmillissecondsminuteshourshalf_daysdaysweeksmonthsyearsdecadescenturiesmillenniaerasです

{% set date = "2018-07-14T14:31:30+0530"|strtotime("yyyy-MM-dd'T'HH:mm:ssZ") %} {{ date }} {{ date|minus_time(2, "months") }}2018-07-14 14:31:30 2018-05-14 14:31:30

multiply

1つの値を数値で乗算します。*演算子と同様に機能します。

{% set n = 20 %} {{ n|multiply(3) }}60

plus_time

日時オブジェクトに一定の時間を加えます。

ParameterDescription
diff
必須

加える数量

timeunit
必須

有効な時間単位はnanosmicrosmillissecondsminuteshourshalf_daysdaysweeksmonthsyearsdecadescenturiesmillenniaerasです

{% set date = "2018-07-14T14:31:30+0530"|strtotime("yyyy-MM-dd'T'HH:mm:ssZ") %} {{ date }} {{ date|plus_time(5, "days") }}2018-07-14 14:31:30 2018-07-19 14:31:30

pprint

変数を整形して出力します。変数の型など、デバッグに役立つ情報を出力します。

{% set this_var ="Variable that I want to debug" %} {{ this_var|pprint }}(String: Variable that I want to debug)

random

シーケンスからランダムな1つの項目を返します。

注:このフィルターを使用すると、ページがキャッシュされなくなります。その結果、ページのプリレンダリングがページコンテンツの更新時ではなく、定期的に実行されます。つまり、フィルタリングされたコンテンツは、ページの再読み込みのたびに更新されるわけではありません。これは、ブログ記事のランダムなリストの表示など、特定のタイプのコンテンツでは特に問題ではありません。ただし、ページを読み込むたびにコンテンツをランダムに変更する必要がある場合には、代わりにJavaScriptを使用してコンテンツをクライアント側でランダム化する必要があります。

{% for content in contents|random %} <div class="post-item">Post item markup</div> {% endfor %}<div class="post-item">Random post</div>

regex_replace

正規表現パターンを検索して、文字シーケンスで置換します。最初の引数はRE2形式の正規表現パターン、2つ目は置換文字列です。

RE2正規表現の構文については、こちらをご覧ください。

{{ "contact-us-2"|regex_replace("[^a-zA-Z]", "") }} contactus

reject

オブジェクトに式による検証を適用して、該当する要素を拒否することにより、オブジェクトのシーケンスをフィルタリングします。

ParameterDescription
exp_text

オブジェクトを検証する式

{% set some_numbers = [10, 12, 13, 3, 5, 17, 22] %} {{ some_numbers|reject("even") }}[13, 3, 5, 17]

rejectattr

オブジェクトの属性を検証して該当する要素を拒否することにより、オブジェクトのシーケンスをフィルタリングします。 

ParameterDescription
attribute_name
必須

選択する属性を指定します。ドット表記を使用すると、ネストされた属性にアクセスできます

exp_test
任意

検証する式

val
任意

検証の対象となる値

{% for content in contents|rejectattr("post_list_summary_featured_image") %} <div class="post-item"> {% if content.post_list_summary_featured_image %} <div class="hs-featured-image-wrapper"> <a href="{{content.absolute_url}}" title="" class="hs-featured-image-link"> <img src="{{ content.post_list_summary_featured_image }}" class="hs-featured-image"> </a> </div> {% endif %} {{ content.post_list_content|safe }} </div> {% endfor %}<div class="post-item">Post with no featured image</div> <div class="post-item">Post with no featured image</div> <div class="post-item">Post with no featured image</div>

render

HubLを含む文字列を早期にレンダリングして、出力を他のフィルターに渡すことができるようにします。

{{ personalization_token("contact.lastname", "default value")|render|lower }} mclaren

replace

部分文字列の全てのインスタンスを、新しいものに置換します。 

ParameterDescription
old
必須

置換の対象にする部分文字列

new
必須

置換文字列

count
任意

指定した場合、最初の出現数分のみが置換されます

{% if topic %} <h3>Posts about {{ page_meta.html_title|replace("Blog | ", "") }}</h3> {% endif %} <h3>Posts about topic name</h3>

reverse

オブジェクトを反転します。または、オブジェクトを逆順に反復処理するイテレーターを返します。リストを反転するには.reverse()を使用します

{% set nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] %} {% for num in nums|reverse %} {{ num }} {% endfor %}10 9 8 7 6 5 4 3 2 1

root

値の平方根を計算します。

ParameterDescription
nth_root
任意

数値のn乗根を計算します

{{ 16|root }} {{ 625|root(4) }}4 5

round

数値を特定の精度に丸めます。

ParameterDescription
precision
任意

丸め処理の精度を指定します

rounding_method
任意

common(四捨五入:既定)、ceil(常に切り上げ)、floor(常に切り下げ)などのオプションがあります

方法を指定しない場合commonが使用されます

{{ 52.5|round }} {{ 52.5|round(0, "floor") }}53 52

safe

値に「セーフ」のマークを付けます。つまり、自動エスケープが有効になっている環境で、この変数はエスケープされません。

{{ content.post_list_content|safe }} <p>HTML post content that is not escaped. </p>

select

オブジェクトを検証して該当する要素だけを選ぶことにより、オブジェクトのシーケンスをフィルタリングします。

ParameterDescription
exp_text

オブジェクトを検証する式

{% set some_numbers = [10, 12, 13, 3, 5, 17, 22] %} {{ some_numbers|select("even") }}[10, 12, 22]

selectattr

オブジェクトの属性を検証して該当する要素だけを選ぶことにより、オブジェクトのシーケンスをフィルタリングします。

ParameterDescription
attribute_name
必須

選択する属性を指定します。ドット表記を使用すると、ネストされた属性にアクセスできます

exp_test
任意

検証する式

val
任意

検証の対象となる値

{% for content in contents|selectattr("post_list_summary_featured_image") %} <div class="post-item"> {% if content.post_list_summary_featured_image %} <div class="hs-featured-image-wrapper"> <a href="{{content.absolute_url}}" title="" class="hs-featured-image-link"> <img src="{{ content.post_list_summary_featured_image }}" class="hs-featured-image"> </a> </div> {% endif %} {{ content.post_list_content|safe }} </div> {% endfor %}<div class="post-item"> <div class="hs-featured-image-wrapper"> <a href="http://blog.hubspot.com/marketing/how-to-get-a-job" title="" class="hs-featured-image-link"> <img src="//cdn2.hubspot.net/hub/53/hubfs/00-Blog-Related_Images/landing-a-job-featured-image.png?t=1431452322770&width=761" class="hs-featured-image"> </a> </div> Post with featured image </div>

shuffle

シーケンス内の反復の順序をランダムにします。以下の例は、標準的なブログのループをシャッフルします。

注:このフィルターを使用すると、ページがキャッシュされなくなります。その結果、ページのプリレンダリングがページコンテンツの更新時ではなく、定期的に実行されます。つまり、フィルタリングされたコンテンツは、ページの再読み込みのたびに更新されるわけではありません。これは、ブログ記事のランダムなリストの表示など、特定のタイプのコンテンツでは特に問題ではありません。ただし、ページを読み込むたびにコンテンツをランダムに変更する必要がある場合には、代わりにJavaScriptを使用してコンテンツをクライアント側でランダム化する必要があります。

{% for content in contents|shuffle %} <div class="post-item">Markup of each post</div> {% endfor %}<div class="post-item">Markup of each post 5</div> <div class="post-item">Markup of each post 3</div> <div class="post-item">Markup of each post 1</div> <div class="post-item">Markup of each post 2</div> <div class="post-item">Markup of each post 4</div>

slice

イテレーターをスライスして、これらの項目を含むリストの一覧を返します。最初のパラメーターにはスライスされる項目数を指定し、2番目のパラメーターには空のスライスに埋める文字を指定します。

ParameterDescription
slices
必須

スライスされる項目の数

filler
必須

空のスライスに埋める文字を指定します 

{% set items = ["laptops", "tablets", "smartphones", "smart watches", "TVs"] %} <div class="columwrapper"> {% for column in items|slice(3," ") %} <ul class="column-{{ loop.index }}"> {% for item in column %} <li>{{ item }}</li> {% endfor %} </ul> {% endfor %} </div><div class="columwrapper"> <ul class="column-1"> <li>laptops</li> <li>tablets</li> <li>smartphones</li> </ul> <ul class="column-2"> <li>smart watches</li> <li>TVs</li> <li>&nbsp;</li> </ul> </div>

sort

反復可能データを並べ替えます。このフィルターを使ってHubSpotの属性を基準に並べ替える際には、全てのパラメーターが必要になります。最初のパラメーターは、並べ替え順序を逆にするブール値です。2番目のパラメーターは、並べ替えの際に大文字と小文字を区別するかどうかを指定します。最後のパラメーターは、並べ替え基準にする属性を指定します。以下の例ではブログ内の記事が、名前のアルファベット順でレンダリングされます。

ParameterDescription
reverse
必須

並べ替え順序を逆にするブール値

case_sensitive
必須

並べ替えの際に大文字と小文字を区別するかどうかを指定するブール値

attribute
必須

並べ替え基準にする属性。リストを並べ替えるときには省略

{% set my_posts = blog_recent_posts("default", limit=5) %} {% for item in my_posts|sort(False, False, "name") %} {{ item.name }}<br> {% endfor %}A post<br> B post<br> C post<br> D post<br> E post<br>

split

入力文字列を特定の区切り文字で分割して、リストにします。最初のパラメーターは、変数を分割する区切り文字を指定します。2番目のパラメーターは、変数の分割回数を決定します。残りの項目(ある場合)はグループ化されたままになります。以下の例では、複数の名前からなる1つの文字列が「;」を基準に最初の4回だけ分割されます。

ParameterDescription
character_to_split_by
必須

変数を分割する区切り文字を指定します

number_of_splits
任意

変数を分割する回数を指定します。残りの項目(ある場合)はグループ化されたままになります

{% set string_to_split = "Stephen; David; Cait; Nancy; Mike; Joe; Niall; Tim; Amanda" %} {% set names = string_to_split|split(";", 4) %} <ul> {% for name in names %} <li>{{ name }}</li> {% endfor %} </ul><ul> <li>Stephen</li> <li>David</li> <li>Cait</li> <li>Nancy; Mike; Joe; Niall; Tim; Amanda</li> </ul>

string

他の型の変数を文字列に変換します。以下の例では、整数が文字列に変換されます(変数の型の変化を確認するためにpprintを使用しています)。

{% set number_to_string = 45 %} {{ number_to_string|string|pprint }}(String: 45)

striptags

SGML/XMLタグを除去して、隣接する空白を1つのスペースで置換します。このフィルターは、変数内のHTMLタグを除去する際に使用できます。

{% set some_html = "<div><strong>Some text</strong></div>" %} {{ some_html|striptags }} some text

strtotime

日時文字列と日時書式を変換して、日時オブジェクトにします。

ParameterDescription
datetimeFormat
必須

日付と時刻のパターン

{{ "2018-07-14T14:31:30+0530"|strtotime("yyyy-MM-dd'T'HH:mm:ssZ")|unixtimestamp }} 1531558890000

sum

シーケンス内の数値を全て合算します。最初のパラメーターには任意の属性を指定し、2番目のパラメーターには、変数内に加算するものがない場合に返す値を設定します。

ParameterDescription
attribute
任意

合算する属性

return_if_nothing
任意

変数内に加算するものがない場合に返す値

{% set sum_this = [1, 2, 3, 4, 5] %} {{ sum_this|sum }} Total: {{ items|sum(attribute="price:") }}15 Total: 20

symmetric_difference

このフィルターは、2つのセットまたはリストの対称差を返します。フィルターから返されるリストには、最初のリストに含まれ、2番目には含まれない一意の要素、または2番目のリストに含まれ、最初には含まれない一意の要素が全て格納されます。

ParameterDescription
list
必須

最初のリストとの対称差を見つけるために比較する2番目のリスト

{{ [1, 2, 3]|symmetric_difference([2, 3, 4, 5]) }}[1, 4, 5]

title

見出し表記の値を返します。つまり、単語の先頭が大文字に、残りの文字は全て小文字になります。

{% text "my_title" label="Enter a title", value="My title should be titlecase", export_to_template_context=True %} {{ widget_data.my_title.value|title }}My Title Should Be Titlecase

tojson

オブジェクトをJSON文字列として書き出します。

{% for content in contents %} {{ content.blog_post_author|tojson }} {% endfor %}{ "portalId":1234567, "id":12312253109, "created":1566413741989, "updated":1566414012799, "deletedAt":0, "fullName":"Sample User", "email":"sampleUser@example.com", "userId":null, "username":null, "slug":"sample-user", "jsonBody":{ "avatar":"https://app.hubspot.com/settings/avatar/109d6874a0cb066c1c7263ac5df6ce7a", "bio":"Sample Bio", "facebook":"", "linkedin":"", "twitter":"", "website":"https://www.hubspot.com" }, "bio":"Sample Bio", "facebook":"", "linkedin":"", "avatar":"https://app.hubspot.com/settings/avatar/109d6874a0cb066c1c7263ac5df6ce7a", "gravatarUrl":"https://app.hubspot.com/settings/avatar/108bb5ac667ded34796271437dfe8d58", "twitterUsername":"", "hasSocialProfiles":false, "website":"https://www.hubspot.com", "twitter":"", "displayName":"Sample User" }

trim

先頭および末尾にある空白を除去します。このフィルターは説明上記載していますが、HubSpotでは標準でマークアップから前後の空白が削除されます。

{{ " remove whitespace " }} {{ " remove whitespace "|trim }} remove whitespace remove whitespace

truncate

特定の文字数よりも後ろにあるテキストを切り捨てます。既定は255文字です。このカウントにはHTML文字が含まれることに注意してください。長さは最初のパラメーターで指定し、既定は255文字です。2番目のパラメーターがtrueの場合、この長さでテキストが切り捨てられます。それ以外の場合は、最後の単語が破棄されます。テキストが実際に切り捨てられた場合、省略記号(...)が付加されます。...とは別の省略記号を使用する場合は、3番目のパラメーターに指定できます。

Use this table to describe parameters / fields
ParameterDescription
number_of_characters
必須

テキストを切り捨てる文字数。既定値は255文字

breakword
任意

ブール値。trueの場合、長さでテキストが切り捨てられます。falseの場合、最後の単語が破棄されます

end
任意

切り捨て後に付加される既定の文字「...」を変更します

{{ "I only want to show the first sentence. Not the second."|truncate(40) }} {{ "I only want to show the first sentence. Not the second."|truncate(35, True, "..........") }}I only want to show the first sentence. I only want to show the first sente..........

truncatehtml

htmlマークアップを考慮しながら(つまり、ネストしている全てのタグが適切に閉じられ)、特定の文字列を切り捨てます。これにより、切り捨て後にタグが開いたままになることが防止されます。HTML文字は、合計文字数にカウントされません。このフィルターには長さパラメーターと切り捨て記号パラメーターがあります。3番目のブール値パラメーター(任意)には、長さで単語を切り離すかどうかを指定します。単語の長さを保持する目的で、このパラメーターは既定でfalseになっています。任意のパラメーターのうち1つだけを使用する場合は、例えばtruncatehtml(70, breakwords = false)のようにキーワード引数を使用します。

ParameterDescription
number_of_characters
必須

テキストを切り捨てる文字数。既定値は255文字

end
任意

切り捨て後に付加される既定の文字「...」を変更します

breakword
任意

ブール値。trueの場合、長さでテキストが切り捨てられます。falseの場合、最後の単語が破棄されます

{% set html_text = "<p>I want to truncate this text without breaking my HTML<p>" %} {{ html_text|truncatehtml(28, "..." , false) }}<p>I want to truncate this..</p>

union

このフィルターは、2つのセットまたはリストの和集合を返します。フィルターから返されるリストには、いずれかのリストに含まれる一意の要素が全て格納されます。

ParameterDescription
list
必須

最初のリストに対して結合される2番目のリスト

{{ [1, 2, 3]|union([2, 3, 4, 5]) }}[1, 2, 3, 4, 5]

unique

このフィルターは、オブジェクトのシーケンスまたはディクショナリーから一意のセットを抽出します。(関数から戻される記事リストなどの)ディクショナリーをフィルタリングする場合、どの属性を基準にディクショナリー項目の重複を排除するかを指定できます。

ParameterDescription
attr
任意

ディクショナリー値を絞り込む際に使用する属性を指定します

{% set my_sequence = ["one", "one", "two", "three" ] %} {{ my_sequence|unique }}[one, two, three]

unixtimestamp

このフィルターは日時オブジェクトをUnixタイムスタンプに変換します。

{{ local_dt }} {{ local_dt|unixtimestamp }}2017-01-30 17:11:44 1485814304000

upper

値を全て大文字に変換します。

{% text "text" value="text to make uppercase", export_to_template_context=True %} {{ widget_data.text.value|upper }}TEXT TO MAKE UPPERCASE

urlencode

文字列をエスケープしてUTF-8形式でURLエンコードします。ディクショナリーと通常の文字列、およびペアワイズ反復を受け入れます。

{% text "encode" value="Escape & URL encode this string", label="Enter slug", export_to_template_context=True %} {{ widget_data.encode.value|urlencode }}Escape+%26+URL+encode+this+string

urldecode

エンコードされたURL文字列を元のURLにデコードします。ディクショナリーと通常の文字列、およびペアワイズ反復を受け入れます。

{% text "decode" value="Escape+%26+URL+decode+this+string", label="Enter slug", export_to_template_context=True %} {{ widget_data.decode.value|urldecode }}Escape & URL encode this string

urlize

プレーンテキスト内のURLを、クリック可能なリンクに変換します。追加的な整数をこのフィルターに渡した場合、URLがその長さに短縮されます。2番目のパラメーターは、リンクをrel="no follow"にするかどうかを指示するブール値です。最後のパラメーターでは、リンクを新しいタブで開くかどうかを指定できます。

ParameterDescription
shorten_text
任意

URLを指定の数に短縮する整数

no_follow
任意

リンクをrel="no follow"にするかどうかを指定するブール値

target="_blank"
任意

リンクを新しいタブで開くかどうかを指定します

{{ "http://hubspot.com/"|urlize }} {{ "http://hubspot.com/"|urlize(10,true) }} {{ "http://hubspot.com/"|urlize("",true) }} {{ "http://hubspot.com/"|urlize("",false,target="_blank") }}<a href="//hubspot.com/">http://hubspot.com/</a> <a href="//hubspot.com/" rel="nofollow">http://...</a> <a href="//hubspot.com/" rel="nofollow">http://hubspot.com/</a> <a href="//hubspot.com/" target="_blank">http://hubspot.com/</a>

wordcount

文字列内の単語数をカウントします。

HTMLが含まれている文字列の正確なカウントを取得する場合は、striptagsフィルターを使用します。

{% set count_words = "Count the number of words in this variable" %} {{ count_words|wordcount }}8

wordwrap

指定された文字数で折り返します。HubSpotでは既定で空白が除去されるため、この機能は<pre>で特に役立ちます。

ParameterDescription
character_count
必須

コンテンツを折り返す文字数

{% set wrap_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam efficitur, ipsum non sagittis euismod, ex risus rhoncus lectus, vel maximus leo enim sit amet dui. Ut laoreet ultricies quam at fermentum." %} {{ wrap_text|wordwrap(10) }}Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam efficitur, ipsum non sagittis euismod, ex risus rhoncus lectus, vel maximus leo enim sit amet dui. Ut laoreet ultricies quam at fermentum.

xmlattr

ディクショナリー内の項目に基づいてHTML/XML属性文字列を作成します。「値なし」および未定義値を除き、
全ての値が自動的にエスケープされます。最初のパラメーターがfalseの場合以外は、フィルターから返された項目の前に自動的にスペースが追加されます。

ParameterDescription
autospace
必須

ブール値。falseに設定した場合以外は、項目の前に自動的にスペースが追加されます

{% set html_attributes = {"class": "bold", "id": "sidebar"} %} <div {{ html_attributes|xmlattr }}></div><div class="bold" id="sidebar"></div>

参考になりましたか?
こちらのフォームではドキュメントに関するご意見をご提供ください。HubSpotがご提供しているヘルプはこちらでご確認ください。