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