> ## Documentation Index
> Fetch the complete documentation index at: https://developers.hubspot.de/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# if-Anweisungen

> Ein praktischer Leitfaden zu HubSpots HubL if-Anweisungen für CMS-Entwickler.

Sie können bedingte Logik in Ihre Module und Vorlagen aufnehmen, indem Sie [if-Anweisungen](#basic-if-statement-syntax) und [unless-Anweisungen](#unless-statements) von HubL verwenden. if-Anweisungen enthalten oft von HubL [unterstützte Operatoren](/cms/reference/hubl/operators-and-expression-tests) und können zur Ausführung von [Ausdruckstests](/cms/reference/hubl/operators-and-expression-tests#expression-tests) verwendet werden.

<Warning>
  ### Bitte beachten:

  Wenn Sie [Personalisierungstoken](/cms/reference/hubl/functions#personalization-token) innerhalb einer bedingten Anweisung Ihres E-Mail-Moduls verwenden, müssen Sie [programmierbare E-Mails für das Modul aktivieren](/cms/start-building/features/data-driven-content/emails-with-programmable-content).

  Informationen, die über [v3](/api-reference/marketing-marketing-emails-v3/guide)- oder [v4](/api-reference/marketing-single-send-v4/guide)-Single-Send-APIs übermittelt werden, funktionieren nicht innerhalb von `if`-Anweisungen, da die Vorlagen kompiliert werden, bevor die Informationen ausgefüllt werden.
</Warning>

## Grundlegende Syntax der if-Anweisung

HubL verwendet if-Anweisungen, um die Logik einer Vorlage zu definieren. Die Syntax von HubL if-Anweisungen ist der bedingten Logik in Python sehr ähnlich. `if`-Anweisungen sind in [Anweisungstrennzeichen](/cms/reference/hubl/variables-macros-syntax) eingeschlossen, beginnend mit einer öffnenden `if`-Anweisung und mit einer `endif`-Anweisung am Ende.

Das folgende Beispiel zeigt die grundlegende Syntax einer if-Anweisung, wobei „Bedingung“ durch die boolesche Regel ersetzt wird, die Sie als wahr oder falsch auswerten wollen.

```hubl theme={null}
{% if condition %}
	If the condition is true print this to template.
{% endif %}
```

Nachdem Sie nun die grundlegende Syntax kennengelernt haben, wollen wir uns nun ein paar konkrete Beispiele für einfache if-Anweisungen ansehen. Die folgenden Beispiele zeigen if-Anweisungen, die prüfen, ob ein HubL-Modul mit dem Namen `my_module` und eine Variable mit dem Namen `my_module` in einer Vorlage vorhanden sind oder nicht. Beachten Sie, dass ohne jegliche Operatoren die if-Anweisung auswertet, ob das Modul im Kontext der Vorlage definiert ist oder nicht.

```hubl theme={null}
{% module "my_module" path="@hubspot/rich_text", label="My rich text module", html="Default module text" export_to_template_context=true %}

{% if widget_data.my_module %}
	A module named "my_module" is defined in this template.
{% endif %}

{% set my_variable = "A string value for my variable" %}
{% if my_variable %}
	The variable named my_variable is defined in this template.
{% endif %}
```

Beachten Sie, dass bei der Auswertung des HubL-Moduls der Modulname innerhalb der `if`-Anweisung in Anführungszeichen gesetzt wird und beim Testen der Variablen keine Anführungszeichen um den Variablennamen herum verwendet werden. In beiden obigen Beispielen sind das Modul und die Variable in der Vorlage vorhanden, sodass die Anweisungen so ausgewertet werden, dass das Markup gedruckt wird. Bitte beachten Sie, dass in diesen Beispielen nur getestet wird, ob das Modul und die Variable definiert sind, und nicht, ob sie einen Wert haben oder nicht.

Betrachten wir nun eine `if-Anweisung`, die auswertet, ob ein Modul einen Wert hat, anstatt auszuwerten, ob es in der Vorlage vorhanden ist. Hierfür müssen wir den Parameter [export\_to\_template\_context](/cms/reference/modules/export-to-template-context) verwenden. Wenn im folgenden Beispiel der Textbaustein im Content-Editor einen Wert erhält, wird das Markup gedruckt. Wäre das Textfeld des Moduls gelöscht worden, würde kein Markup gerendert. Wenn Sie mit benutzerdefinierten Modulen arbeiten, gibt es eine vereinfachte `widget.widget_name`-Syntax, die in [diesem Beispiel](/cms/reference/modules/configuration) beschrieben wird.

<CodeGroup>
  ```text input.txt theme={null}
  {% module "product_names" path="@hubspot/text", label="Enter the product names that you would like to render the coupon ad for", value="all of our products", export_to_template_context=True %}

  {% if widget_data.product_names.value %}
  <div class="coupon-ad">
  <h3>For a limited time, get 50% off {{ widget_data.product_names.value}}! </h3>
  </div>
  {% endif %}
  ```

  ```text output.txt theme={null}
  <div class="coupon-ad">
  <h3>For a limited time get 50% off all of our products!</h3>
  </div>
  ```
</CodeGroup>

## Verwendung von elif und else

`if-`-Anweisungen können mit zusätzlichen bedingten Anweisungen oder mit einer Regel, die ausgeführt wird, wenn die Bedingung oder die Bedingungen falsch sind, weiter verfeinert werden. `elif`-Anweisungen ermöglichen es Ihnen, zusätzliche Bedingungen zu Ihrer Logik hinzuzufügen, die nach der vorherigen Bedingung ausgewertet werden **`else`**-Anweisungen definieren eine Regel, die ausgeführt wird, wenn alle anderen Bedingungen falsch sind. Sie können eine unbegrenzte Anzahl von `elif`-Anweisungen innerhalb einer einzigen if-Anweisung haben, aber nur eine `else`-Anweisung.

Im Folgenden finden Sie ein Beispiel für die grundlegende Syntax einer if-Anweisung, die den [Operator `<=`](/cms/reference/hubl/operators-and-expression-tests#comparison) verwendet, um den Wert einer Variablen zu überprüfen. In diesem Beispiel würde die Vorlage Folgendes ausgeben: „Die angegebene Zahl der Variablen ist kleiner als oder gleich 6.“

```hubl theme={null}
{% set number = 5 %}

{% if number <= 2 %}
	Variable named number is less than or equal to 2.
{% elif number <= 4 %}
	Variable named number is less than or equal to 4.
{% elif number <= 6 %}
	Variable named number is less than or equal to 6.
{% else %}
	Variable named number is greater than 6.
{% endif %}
```

Nachfolgend ein weiteres Beispiel, bei dem ein Auswahlmodul verwendet wird, um verschiedene Überschriften für eine Karriereseite auf der Grundlage der vom Benutzer gewählten Abteilung darzustellen. Das Beispiel verwendet den [Operator ==](/cms/reference/hubl/operators-and-expression-tests#comparison), um auf bestimmte vordefinierte Werte im Auswahlmodul zu überprüfen.

```hubl theme={null}
{% choice "department" label="Choose department", value="Marketing", choices="Marketing, Sales, Dev, Services" export_to_template_context=True %}

{% if widget_data.department.value == "Marketing" %}

<h3>Want to join our amazing Marketing team?!</h3>
<h4>We have exciting career opportunities on the {{ widget_data.department.value }} team.</h4>

{% elif widget_data.department.value == "Sales" %}

<h3>Are you a Sales superstar?</h3>
<h4>We have exciting career opportunities on the {{ widget_data.department.value }} team.</h4>

{% elif widget_data.department.value == "Dev" %}

<h3>Do you love to ship code?</h3>
<h4>We have exciting career opportunities on the {{ widget_data.department.value }} team.</h4>

{% else %}

<h3>Want to work with our awesome customers?</h3>
<h4>We have exciting career opportunities on the {{ widget_data.department.value }} team.</h4>

{% endif %}
```

## unless-Anweisungen

`unless`-Anweisungen sind genau wie `if`-Anweisungen bedingte Anweisungen, funktionieren aber nach der umgekehrten Logik. Der Code zwischen dem öffnenden und dem schließenden Tag wird gerendert und kompiliert, es sei denn, die einzelne boolesche Bedingung wird zu true ausgewertet. unless-Anweisungen beginnen mit einem **`unless`** und enden mit einem **`endunless`** .`unless`-Anweisungen unterstützen `else`, aber nicht `elif`.

Nachfolgend ein Beispiel, bei dem die Überschrift „Wartungsarbeiten“ ausgegeben wird, sofern das Rich-Text-Feld keinen Wert erhält. Wenn das Rich-Text-Feld über Inhalt verfügt, wird dieser Inhalt angezeigt.

```hubl theme={null}
{% module "my_page_content" path="@hubspot/rich_text", label="Enter your page content", html="" export_to_template_context=true %}

{{ widget_data.my_page_content.html }}

{% unless widget_data.my_page_content.html %}
<h1>This page is under construction.</h1>
<h3>Come back soon!</h3>
{% endunless %}
```

## ifchanged

Zusätzlich zu if- und unless-Anweisungen unterstützt HubL `ifchanged`-Anweisungen. Diese Anweisungen können verwendet werden, um Markup nur dann zu rendern, wenn sich eine Variable seit einem früheren Aufruf dieses Tags geändert hat.

## Inline-if-Anweisungen

HubL unterstützt inline `if-`-Anweisungen. Diese können verwendet werden, um bedingte Logik knapp und gut verständlich mit [Operatoren und Ausdruckstests](/cms/reference/hubl/operators-and-expression-tests) zu schreiben.

```hubl theme={null}
{% set color = "Blue" if is_blue is truthy else "Red" %}     // color == "blue"

{{ "Blue" if is_blue is truthy else "Red" }}     // "Blue"

{% set dl = true %}
<a href="http://example.com/some.pdf" {{"download" if dl }} >Download PDF</a>
```

## Ternäre Operatoren

Es ist auch möglich, ternäre Operatoren zu verwenden, um schnell bedingte Logik mit [Operatoren und Ausdruckstests](/cms/reference/hubl/operators-and-expression-tests#logical) zu schreiben.

```hubl theme={null}
// If the variable is_blue is true, output "blue", otherwise output"red"
{{ is_blue is truthy ? "blue" : "red" }}

// Set the variable is_red to false if is_blue is true, otherwise set to true
{% set is_red = is_blue is truthy ? false : true %}
```
