HubLフィルター
フィルターはHubLの最終出力に影響を与えます。さまざまなHubL文と式にフィルターを適用することで、サーバーから出力されるテンプレートマークアップを変更できます。
フィルターの基本構文は|filtername
です。フィルターは文または式のすぐ後に、区切り記号で囲んで追加します。パラメーターを括弧内に追加指定できるフィルターもあります。文字列パラメーター、数値パラメーター、ブールパラメーターを含むフィルターの基本構文は、|filtername("stringParameter", 10, true)
です。文字列パラメーターについては、引用符で囲む必要があることに注意してください。また、HubLフィルターにはエイリアスが存在し、それをプライマリーフィルターと同じ目的に使用できます。
サポートされる全てのHubLフィルターを以下に示します。
注:HubSpot CMSページとブログページでは、コンタクトトークンや会社トークンなどのパーソナライズトークンにHubLフィルターを適用できますが、Eメールでは適用できません。
1つの数値を別の数値に追加します。このフィルターは+演算子と同様に機能します。括弧内のパラメーターは、最初の数値に加えられる加数です。
batchフィルターは、1つのシーケンス内の複数項目をグループ化します。
Parameter | Description |
---|---|
linecount
必須
| バッチに含める項目の数。 |
fill_with
任意
| 項目の欠落がある場合に何で埋めるかを指定します。 |
以下の例では、一連のフルーツの種類からなるシーケンスが変数に格納されています。batchフィルターは、シーケンスを反復処理するループに適用します。ネストされたループが3回実行されて行ごとに3種類のフルーツを出力した後、外側のループが再び実行されます。フルーツが5種類しかないので、最終的な出力では最後の項目が (2番目のパラメーター)に置き換えられる点にご注目ください。
指定された時間単位を使用して、2つの日時オブジェクト間の差異を計算します。
Parameter | Description |
---|---|
end
必須
| 終了日時オブジェクト |
timeunit
必須
| 有効な時間単位はnanos、micros、millis、seconds、minutes、hours、half_days、days、weeks、months、years、decades、centuries、millennia、erasです。 |
centerフィルターは空白を使用して、指定されたフィールド長の中でテキストを中央に配置します。ここには説明上記載していますが、HubSpotのHTMLコンパイラーでは空白が自動的に除去されるので、このフィルターは推奨されることもなく、特に有効でもありません。
Parameter | Description |
---|---|
width
必須
| テキストを中央揃えするための空白の長さを指定します。 |
以下の例では、空白が除去されないようにpreタグ内の変数にcenterフィルターを適用しています。
HEX値をRGB文字列に変換します。これは、色の変数をRGBに変換してRGBA CSS宣言で使用する場合に便利です。以下の例では、色モジュールによって設定された値がRGB値に変換され、RGBA CSS宣言で使用されます。
注:このフィルターは非推奨になりました。代わりに、より標準化された構文を使用するformat_datetimeフィルターを使用してください。
値が未定義の場合に、最初のパラメーターを返します。それ以外の場合、変数の値が出力されます。falseと評価される変数でdefaultを使用する場合は、2番目のパラメーターにtrueを指定する必要があります。以下の最初の例では、変数が未定義の場合にメッセージが出力されます。2番目の例では、未定義ではない空の文字列にフィルターを適用していますが、2番目のパラメーターが原因でメッセージが出力されます。
Parameter | Description |
---|---|
default_variable
必須
| 変数が未定義の場合に返される値。変数が定義されている場合は、変数の値が返されます。 |
boolean
任意
| 変数が空の文字列の場合、default_valueが返されます |
ディクショナリー(辞書型)を並べ替えて「キー、値」のペアを生成します。ディクショナリーの並べ替えは既定では行われませんが、キーまたは値を基準に並べ替えたディクショナリーを出力できます。最初のパラメーターは、並べ替えの際に大文字と小文字を区別するかどうかを指定するブール値です。2番目のパラメーターは、キーと値のどちらを基準にディクショナリーを並べ替えるかを指定します。以下の例では、コンタクトについて確認済みの詳細情報を全て含む、並べ替えられたコンタクトディクショナリーを出力します。
Parameter | Description |
---|---|
case_sensitive
必須
| 並べ替えの際に大文字と小文字を区別するかどうかを指定します |
sort_by
必須
| keyとvalueのどちらを基準に並べ替えるかを指定します |
HTML属性入力の内容をエスケープします。文字列を受け入れ、文字&
、<
、‘
、”
、およびescape_jinjava
をHTMLで安全に使用できる文字列に変換します。このフィルターは、HTML属性に追加されるHubL変数に使用します。
href
などの、URLを受け入れる属性の値をエスケープする場合は、代わりにescape_url
フィルターを使用する必要があることに注意してください。
JavaScript変数宣言に文字列(escape_jinjava
を含む)を安全に挿入できるように、文字列をエスケープ処理します。このフィルターは、HTML script要素内で使用されるHubL変数に使用します。
文字列をJSON値として使用できるように、文字列をエスケープ処理します
パラメーターとして渡されるポータルの既定の通貨とロケールに基づき、特定の数値の書式を通貨として設定します。非推奨になったformat_currencyフィルターの後継となるものです。
Parameter | Description |
---|---|
locale
任意
| Javaローカル言語タグ。既定はページのロケールです。形式:ISO639LanguageCodeInLowercase-ISO3166CountryCodeInUppercase |
currency
任意
| 通貨の英字のISO 4217コード。既定は、ポータルの既定の通貨です。数値コードは使用できません。 |
minDecimalDigits
任意
| 使用する小数桁数の最小値。既定で、通貨の既定の小数桁数に設定されます。 |
maxDecimalDigits
任意
| 使用する小数桁数の最大値。既定で、通貨の既定の小数桁数に設定されます。 |
Parameter | Description |
---|---|
format
任意
| 使用する形式。次のいずれかを使用できます。
|
timeZone
任意
| IANA TZDB形式(英語)で出力される日付のタイムゾーン。 |
locale
任意
| ロケール対応の形式に使用するロケール。 |
Parameter | Description |
---|---|
format
任意
| 使用する形式。次のいずれかを使用できます。
|
timeZone
任意
| IANA TZDB形式(英語)で出力される日付のタイムゾーン。デフォルトでは、UTC時間を返します。 |
locale
任意
| ロケール対応の形式に使用するロケール。 |
Parameter | Description |
---|---|
format
任意
| 使用する形式。次のいずれかを使用できます。
|
timeZone
任意
| IANA TZDB形式(英語)で出力される日付のタイムゾーン。 |
locale
任意
| ロケール対応の形式に使用するロケール。 |
groupbyフィルターは、共通の属性を基準に、一連のオブジェクトをグループ化します。パラメーターで、グループ化の基準となる共通属性を設定します。
Parameter | Description |
---|---|
attribute
必須
| グループ化の基準となる属性。 |
indentフィルターは空白を使用して、特定のフィールド長の範囲内でテキストのインデントを設定します。ここには説明上記載していますが、HubSpotのHTMLコンパイラーでは空白が自動的に除去されるので、このフィルターは推奨されることもなく、特に有効でもありません。以下の例では、空白が除去されないようにpreタグ内の変数にcenterフィルターを適用しています。最初のパラメーターは空白の量を制御し、2番目のブール値は第1行をインデントするかどうかを切り替えます。
Parameter | Description |
---|---|
width
必須
| 適用される空白の量。 |
boolean
必須
| 最初の行をインデントするかどうかを示すブール値。 |
シーケンスの文字列を連結した1つの文字列を返します。要素間は既定では空文字列で区切られますが、任意のパラメーターで区切り文字を定義できます。2番目のパラメーターを使用すると、結合する属性を指定できます。
Parameter | Type | Description |
---|---|---|
delimiter
任意
| 文字列 | 文字列の連結に使用する区切り文字。 |
attribute
任意
| HubL変数 | オブジェクトに結合する値の属性。 |
オブジェクトのシーケンスにフィルターを適用するか、属性を検索します。オブジェクトのリストを扱い、その中の特定の値にだけ対象を絞り込む際に便利です。
基本的な使用法は、属性に対するマッピングです。例えば、ディクショナリーの特定の属性に特定の値が存在するかどうかを検査する条件付きロジックを使用する場合です。または、フィルター名と引数を渡してフィルターを起動することもできます。
Parameter | Description |
---|---|
attribute
| 複数オブジェクトからなるシーケンスで返される属性。 |
filter
| オブジェクトのシーケンスに適用するフィルター。 |
日時オブジェクトで一定の時間を差し引きます。
Parameter | Description |
---|---|
diff
必須
| 差し引く数量。 |
timeunit
必須
| 有効な時間単位はnanos、micros、millis、seconds、minutes、hours、half_days、days、weeks、months、years、decades、centuries、millennia、erasです。 |
日時オブジェクトに一定の時間を加えます。
Parameter | Description |
---|---|
diff
必須
| 加える数量。 |
timeunit
必須
| 有効な時間単位はnanos、micros、millis、seconds、minutes、hours、half_days、days、weeks、months、years、decades、centuries、millennia、erasです。 |
シーケンスからランダムな1つの項目を返します。
注:このフィルターを使用すると、ページのプリレンダリングがページコンテンツの更新時ではなく、定期的に実行されます。つまり、フィルタリングされたコンテンツは、ページの再読み込みのたびに更新されるわけではありません。
これは、ブログ記事のランダムなリストの表示など、特定のタイプのコンテンツでは特に問題ではありません。ただし、ページを読み込むたびにコンテンツをランダムに変更する必要がある場合には、代わりにJavaScriptを使用してコンテンツをクライアント側でランダム化する必要があります。
正規表現パターンを検索して、文字シーケンスで置換します。最初の引数はRE2形式の正規表現パターン、2つ目は置換文字列です。
RE2正規表現の構文については、こちらをご覧ください。
オブジェクトに式による検証を適用して、該当する要素を拒否することにより、オブジェクトのシーケンスをフィルタリングします。
Parameter | Description |
---|---|
exp_text
| オブジェクトを検証する式。 |
オブジェクトの属性を検証して該当する要素を拒否することにより、オブジェクトのシーケンスをフィルタリングします。
Parameter | Description |
---|---|
attribute_name
必須
| 選択する属性を指定します。ドット表記を使用すると、ネストされた属性にアクセスできます。 |
exp_test
任意
| 検証する式 |
val
任意
| 検証の対象となる値。 |
オブジェクトを反転します。または、オブジェクトを逆順に反復処理するイテレーターを返します。リストを反転するには.reverse()を使用します
リッチ テキスト コンテンツの出力用にHTML入力のコンテンツをサニタイズ処理をします。文字列を受け入れ、許可されていないHTMLタグを削除します。HTMLで使用されており、安全なHTMLを許可するHubL変数に、このフィルターを使用します。
このフィルターを使用する場合、HTMLタグの特定のタイプを許可するために次のパラメーターを含めることができます:FORMATTING
、BLOCKS
、STYLES
、LINKS
、TABLES
、IMAGES
。例えば、sanitize_html(IMAGES)
などです。
sanitize_html
を使用すると、フィルターに全てのパラメーターが含まれます。
STRIP
パラメーターを含めて、全てのHTMLを削除することもできます。全てのコンテンツは、ネストされた解釈を防ぐためにescape_jinjava
を介しても実行されます。
オブジェクトの属性を検証して該当する要素だけを選ぶことにより、オブジェクトのシーケンスをフィルタリングします。
Parameter | Description |
---|---|
attribute_name
必須
| 選択する属性を指定します。ドット表記を使用すると、ネストされた属性にアクセスできます。 |
exp_test
任意
| 検証する式 |
val
任意
| 検証の対象となる値。 |
シーケンス内の反復の順序をランダムにします。以下の例は、標準的なブログのループをシャッフルします。
注:このフィルターを使用すると、ページのプリレンダリングがページコンテンツの更新時ではなく、定期的に実行されます。つまり、フィルタリングされたコンテンツは、ページの再読み込みのたびに更新されるわけではありません。
これは、ブログ記事のランダムなリストの表示など、特定のタイプのコンテンツでは特に問題ではありません。ただし、ページを読み込むたびにコンテンツをランダムに変更する必要がある場合には、代わりにJavaScriptを使用してコンテンツをクライアント側でランダム化する必要があります。
イテレーターをスライスして、これらの項目を含むリストの一覧を返します。最初のパラメーターにはスライスされる項目数を指定し、2番目のパラメーターには空のスライスに埋める文字を指定します。
Parameter | Description |
---|---|
slices
必須
| スライスされる項目の数。 |
filler
必須
| 空のスライスに埋める文字を指定します。 |
反復可能データを並べ替えます。このフィルターを使ってHubSpotの属性を基準に並べ替える際には、全てのパラメーターが必要になります。最初のパラメーターは、並べ替え順序を逆にするブール値です。2番目のパラメーターは、並べ替えの際に大文字と小文字を区別するかどうかを指定します。最後のパラメーターは、並べ替え基準にする属性を指定します。以下の例ではブログ内の記事が、名前のアルファベット順でレンダリングされます。
Parameter | Description |
---|---|
reverse
必須
| 並べ替え順序を逆にするブール値。 |
case_sensitive
必須
| 並べ替えの際に大文字と小文字を区別するかどうかを指定するブール値。 |
attribute
必須
| 並べ替え基準にする属性。リストを並べ替えるときには省略。 |
入力文字列を特定の区切り文字で分割して、リストにします。最初のパラメーターは、変数を分割する区切り文字を指定します。2番目のパラメーターは、変数の分割回数を決定します。残りの項目(ある場合)はグループ化されたままになります。以下の例では、複数の名前からなる1つの文字列が「;」を基準に最初の4回だけ分割されます。
Parameter | Description |
---|---|
character_to_split_by
必須
| 変数を分割する区切り文字を指定します。 |
number_of_splits
任意
| 変数を分割する回数を指定します。残りの項目(ある場合)はグループ化されたままになります。 |
日時文字列と日時書式を変換して、日時オブジェクトにします。
Parameter | Description |
---|---|
datetimeFormat
必須
|
オブジェクトをJSON文字列として書き出します。
特定の文字数よりも後ろにあるテキストを切り捨てます。既定は255文字です。このカウントにはHTML文字が含まれることに注意してください。長さは最初のパラメーターで指定し、既定は255文字です。2番目のパラメーターがtrueの場合、この長さでテキストが切り捨てられます。それ以外の場合は、最後の単語が破棄されます。テキストが実際に切り捨てられた場合、省略記号(...)が付加されます。...とは別の省略記号を使用する場合は、3番目のパラメーターに指定できます。
Parameter | Description |
---|---|
number_of_characters
必須
| テキストを切り捨てる文字数。既定値は255文字です。 |
breakword
任意
| ブール値。trueの場合、長さでテキストが切り捨てられます。falseの場合、最後の単語が破棄されます。 |
end
任意
| 切り捨て後に付加される既定の文字「...」を変更します。 |
htmlマークアップを考慮しながら(つまり、ネストしている全てのタグが適切に閉じられ)、特定の文字列を切り捨てます。これにより、切り捨て後にタグが開いたままになることが防止されます。HTML文字は、合計文字数にカウントされません。このフィルターには長さパラメーターと切り捨て記号パラメーターがあります。3番目のブール値パラメーター(任意)には、長さで単語を切り離すかどうかを指定します。単語の長さを保持する目的で、このパラメーターは既定でfalseになっています。任意のパラメーターのうち1つだけを使用する場合は、例えばtruncatehtml(70, breakwords = false)のようにキーワード引数を使用します。
Parameter | Description |
---|---|
number_of_characters
必須
| テキストを切り捨てる文字数。既定値は255文字です。 |
end
任意
| 切り捨て後に付加される既定の文字「...」を変更します。 |
breakword
任意
| ブール値。trueの場合、長さでテキストが切り捨てられます。falseの場合、最後の単語が破棄されます。 |
プレーンテキスト内のURLを、クリック可能なリンクに変換します。追加的な整数をこのフィルターに渡した場合、URLがその長さに短縮されます。2番目のパラメーターは、リンクをrel="no follow"にするかどうかを指示するブール値です。最後のパラメーターでは、リンクを新しいタブで開くかどうかを指定できます。
Parameter | Description |
---|---|
shorten_text
任意
| URLを指定の数に短縮する整数。 |
no_follow
任意
| リンクをrel="no follow"にするかどうかを指定するブール値。 |
target="_blank"
任意
| リンクを新しいタブで開くかどうかを指定します。 |
指定された文字数で折り返します。HubSpotでは既定で空白が除去されるため、この機能は<pre>で特に役立ちます。
Parameter | Description |
---|---|
character_count
必須
| コンテンツを折り返す文字数。 |
ディクショナリー内の項目に基づいてHTML/XML属性文字列を作成します。「値なし」および未定義値を除き、
全ての値が自動的にエスケープされます。最初のパラメーターがfalseの場合以外は、フィルターから返された項目の前に自動的にスペースが追加されます。
Parameter | Description |
---|---|
autospace
必須
| ブール値。falseに設定した場合以外は、項目の前に自動的にスペースが追加されます。 |
貴重なご意見をありがとうございました。