Zum Hauptinhalt springen
Um die Logik und Funktionalität Ihrer Vorlagen zu erweitern, unterstützt HubL mehrere wichtige Operatoren und Ausdruckstests. Operatoren ermöglichen es Ihnen, mathematische Funktionen auszuführen, Vergleiche durchzuführen, die Logik von Vorlagen komplexer zu machen und die Darstellung durch Markup zu ändern. Darüber hinaus enthält dieser Artikel eine umfassende Liste von Ausdruckstests, die in HubL verwendet werden können.

Operatoren

Operatoren sind Symbole, die den HubL-Compiler anweisen, verschiedene Operationen auszuführen, die zur endgültigen Ausgabe führen. Operatoren werden zwischen Operanden platziert, um die beiden Werte zueinander in Beziehung zu setzen, sei es zur Ausführung mathematischer Funktionen, zum Erstellen von Vergleichen oder zum Implementieren von booleschen Ausdrücken.
operators-and-operands-diagram
Nachfolgend finden Sie die Operatoren, die Sie in HubL verwenden können, nach Typ geordnet.

Mathematik

Mathematische Standardoperatoren können zur Berechnung von Werten im Kontext einer Vorlage verwendet werden.

Vergleich

Vergleichsoperatoren können verwendet werden, um Werte für Vorlagenlogik auszuwerten. Einige Beispiele für die Verwendung von Vergleichsoperatoren finden Sie in if-Anweisungen.
Die Kurzschreibweise der Vergleichsoperatoren kann in HubL-Filtern verwendet werden, bei denen ein Ausdruck getestet wird, z. B. |selectattr().

Logisch

Mit logischen Operatoren können Sie boolesche Ausdrücke implementieren sowie mehrere Ausdrücke in einzelnen Anweisungen kombinieren.
Verwenden von und/oder-Operatoren In HubL verhält sich der or-Operator wie der or-Operator in Python und der ||-Operator in JavaScript. Der erste Operand wird zurückgegeben, wenn der Ausdruck als true ausgewertet wird, andernfalls wird der zweite Operand zurückgegeben. Ein häufiger Anwendungsfall für diesen or Operator ist das Festlegen eines Fallback-Werts, wenn kein Variablenwert definiert ist.
Der and-Operator verhält sich jedoch anders als der and-Operator in Python und der &&-Operator in JavaScript. In HubL gibt and immer einen booleschen Wert zurück: Wenn der Ausdruck als true ausgewertet wird, wird true zurückgegeben, andernfalls wird false zurückgegeben. Die Python- und JavaScript-Operatoren hingegen geben einen Operandenwert zurück, der darauf basiert, ob die Anweisung als true oder false ausgewertet wird.
In HubL werden leere Listen ([]) und leere Dicts ({}) als falsch betrachtet. Dies entspricht dem Verhalten in Python, unterscheidet sich jedoch von JavaScript, wo [] und {} truthy sind.

Andere HubL-Operatoren

Nachfolgend sind weitere wichtige HubL-Operatoren aufgeführt, die zur Durchführung verschiedener Aufgaben verwendet werden können.

Ausdrucktests

Ausdruckstests sind verschiedene boolesche Bedingungen, die mithilfe von logischen Operatoren ausgewertet werden können.

boolean

Überprüft, ob das Objekt boolesch ist (im strengen Sinne, nicht in seiner Fähigkeit, zu einem wahrheitsgemäßen Ausdruck auszuwerten).

containing

Überprüft, ob eine Listenvariable einen Wert enthält.

containingall

Überprüft, ob eine Listenvariable alle Werte einer anderen Liste enthält.

defined

Überprüft, ob eine Variable im Kontext der Vorlage definiert ist. Sie können diesen Ausdruckstest zwar verwenden, aber beim Schreiben einer if-Anweisung ohne Operatoren wird standardmäßig geprüft, ob die Variable definiert ist. In dem folgenden Beispiel wird der color-Parameter eines Farbmoduls getestet. Hätte der color-Parameter keinen Wert, würde die Vorlage standardmäßig eine schwarze Hintergrundfarbe darstellen. Wenn er angegeben ist, wird die vom Benutzer festgelegte Hintergrundfarbe dargestellt.

divisibleby

Überprüft, ob ein Objekt durch eine andere Zahl teilbar ist. Im Folgenden wird zum Beispiel eine for-Schleife erstellt, die eine Liste von Tierarten durchläuft. Jede Tierart wird in einem div gedruckt, und jedes 5. div hat ein anderes Inline-Styling (Breite:100 %). Dieses Konzept könnte auf einen Blog angewendet werden, in dem für ein bestimmtes Muster von Beiträgen ein anderes Markup gerendert wird. Weitere Informationen zu for-Schleifen und loop.index finden Sie in diesem Artikel.

equalto

Überprüft, ob der Wert einer Variablen gleich einer Konstanten oder einer anderen Variablen ist. Sie können auch den Operator == verwenden, um denselben Test durchzuführen. Im folgenden Beispiel wird die Breite der Blogbeiträge auf der Grundlage der Gesamtzahl der Beiträge in der Schleife angepasst. In der Beispielausgabe wird davon ausgegangen, dass der Blog 4 Beiträge enthält.

even

Überprüft, ob eine numerische Variable eine gerade Zahl ist. Das folgende Beispiel zeigt eine vereinfachte Blog-Listing-Schleife. Wenn die aktuelle Iteration der Schleife gerade ist, wird dem post item-div die even-post-Klasse zugewiesen. Andernfalls wird die odd-post-Klasse zugewiesen.

float

Überprüft, ob eine numerische Variable eine Gleitkommazahl ist.

integer

Überprüft, ob eine Variable eine ganze Zahl ist.

iterable

Überprüft, ob eine Variable in einer Schleife durchlaufen werden kann. In diesem Beispiel wird eine Variable namens jobs daraufhin überprüft, ob sie durchlaufen werden kann. Da die Variable eine Liste von Jobs enthält, würde die if-Anweisung als true ausgewertet werden, und die Schleife würde ausgeführt werden. Hätte die Variable einen einzelnen Wert enthalten, würde die if-Anweisung diesen Wert stattdessen mit anderem Markup ausgeben. Erfahren Sie mehr über for-Schleifen.

lower

Überprüft, ob eine Zeichenfolge kleingeschrieben ist. Im folgenden Beispiel wird mithilfe einer unless-Anweisung und eines lower-Filter sichergestellt, dass eine in einen Textbaustein eingegebene Textzeichenfolge immer kleingeschrieben wird.

mapping

Überprüft, ob ein Objekt ein Dict (Dictionary/Wörterbuch) ist. Im folgenden Beispiel wird überprüft, ob das Kontaktobjekt ein Dictionary ist.

none

Überprüft, ob eine Variable einen null-Wert enthält.

number

Überprüft, ob der Wert einer Variablen eine Zahl ist. Im folgenden Beispiel wird überprüft, ob es sich bei einer Variablen um eine Variable handelt, und wenn ja, wird sie in Millionen umgewandelt.

odd

Überprüft, ob eine numerische Variable eine ungerade Zahl ist. Im Folgenden wird dasselbe Beispiel wie der zuvor beschriebene inverse-even-Ausdruckstest verwendet.

sameas

Überprüft, ob zwei Variablen den gleichen Wert haben. Im folgenden Beispiel werden zwei Variablen festgelegt und dann wird überprüft, ob sie gleich sind.

sequence

Ähnlich wie der iterable-Test wird mit diesem Ausdruckstest überprüft, ob eine Variable eine Sequenz ist. Im folgenden Beispiel wird überprüft, ob eine Variable eine Sequenz ist, und dann wird diese Sequenz von Musikgenres durchlaufen.

string

Überprüft, ob der in einer Variablen gespeicherte Wert ein Text ist. Im folgenden Beispiel wird überprüft, ob eine Variable eine Zeichenkette ist, und wenn ja, wird ein title-Filter angewendet, um die Großschreibung zu ändern.

string_containing

Überprüft, ob ein bereitgestellter Substring in einer anderen Zeichenfolge enthalten ist. Dieser Ausdruckstest wird in Verbindung mit dem Operator is verwendet.

string_startingwith

Überprüft, ob eine Zeichenkette mit einer bestimmten Zeichenkette beginnt. Er wird in Verbindung mit dem Operator is verwendet.

truthy

Überprüft, ob ein Ausdruck als True ausgewertet wird. Im folgenden Beispiel wird ein boolesches Kontrollkästchenmodul verwendet, um eine Warnmeldung anzuzeigen.

undefined

Überprüft, ob eine Variable im Kontext der Vorlage undefiniert ist. Dieser Test unterscheidet sich vom none-Ausdruckstest dadurch, dass undefined true ist, wenn die Variable vorhanden ist, aber keinen Wert hat; none hingegen ist true, wenn die Variable einen Nullwert hat. Im folgenden Beispiel wird eine Vorlage auf das Vorhandensein der Variablen “my_var” überprüft.

upper

Überprüft, ob eine Zeichenkette durchgehend in Großbuchstaben geschrieben ist. Nachfolgend finden Sie ein umgekehrtes Beispiel für den obigen Test des lower-Ausdrucks.

within

Überprüft, ob eine Variable in einer Liste vorhanden ist.
Zuletzt geändert am 10. Februar 2026