HubSpotのHubL if文に関する、CMS開発者向けの実践的なガイド。
if
文の中では機能しません。これは、情報が入る前にテンプレートがコンパイルされるためです。if
文は文の区切り文字に囲まれ、if
文で始まりendif
で終わります。
if文の基本構文の例を以下に示します。「condition」は、trueまたはfalseを評価するブール値の条件で置き換えます。
my_module
という名前のHubLモジュールとmy_module
という名前の変数がテンプレートに含まれているかどうかをチェックしています。演算子を指定しないif文では、テンプレートのコンテキストにおいてモジュールが定義されているかどうかが評価されることに注意してください。
if
文内のモジュール名が引用符で囲まれている一方で、変数の検証時には変数名が引用符で囲まれていない点に注意してください。上記の例では、モジュールも変数もテンプレート上に存在するため、文が評価された結果、マークアップが出力されます。これらの例では、モジュールと変数が定義済みかどうかだけが確認され、モジュールと変数に値が含まれているかどうかは確認されないことに注意してください。
次に、モジュールがテンプレート上に存在しているかどうかではなく、モジュールに値が含まれているかどうかを評価するif
文について説明します。この場合はexport_to_template_contextパラメーターを使用する必要があります。以下の例では、コンテンツエディター上でテキストモジュールに値が割り当てられている場合に、マークアップが出力されます。モジュールのテキストフィールドがクリアされている場合は、マークアップがレンダリングされません。カスタムモジュールについては、簡略化されたwidget.widget_name
構文があります。この構文についてはこの例で説明しています。
if
文を作成できます。elif
文を使用すると、直前の条件の後に評価される条件をロジックに追加できます。**else
**文は、他の全ての条件がfalseの場合に実行されるルールを定義します。1つのif文の中で使用できるelif
文の数に制限はありませんが、else
文の使用は1つに限られます。
<=
演算子を使用して変数の値をチェックするif文の基本構文の例を以下に示します。この例では、テンプレートで「Variable named number is less than or equal to 6.(変数numberは6以下です)」と出力されます。
unless
文は、if
文と似た条件文ですが、if文とは逆のロジックとして機能します。1つのブール値条件がtrueと評価されない場合に、初めのタグと終わりのタグで囲まれたコードがレンダリングおよびコンパイルされます。unless文は**unless
で始まりendunless
で終わります。**unless
文ではelse
を使用できますが、elif
は使用できません。
以下の例では、リッチ テキスト フィールドに値が割り当てられていない場合に「Under construction」(準備中)という見出しが出力されます。リッチ テキスト フィールドに値が含まれている場合は、その値が表示されます。
ifchanged
文があります。この文は、このタグを前回呼び出した後で特定の変数が変更された場合にだけマークアップをレンダリングする場合に使用します。
if
文がサポートされています。演算子と式の検証による簡潔な条件ロジックを作成する際に使用できます。