Variables allow an HTML template to retrieve information entered in Ezus and display it automatically in the generated webpage.
The variable you use depends on where you are in the HTML template:
Outside a loop, use the variables available in the variable drawer.
Inside a loop, use the corresponding Jinja variable for the item currently being displayed.
Before you start: what is a loop?
A loop is used when you want to repeat the same HTML block for several items.
For example, if a project contains several days, this loop:
{% for day in days %}
tells Ezus to repeat the content inside the loop once for each day.
Inside that loop, day represents the day currently being generated. You can therefore use:
{{ day.title }}
to display the title of each day.
The same principle applies to accommodations, transports, activities, suppliers, products, and other lists.
👉 Using loops in HTML templates
👉 Using custom fields in HTML templates
1. Variables outside a loop
Outside a loop, use the variables available in the variable drawer.
To open it while editing your HTML template, click the Variables button in the template editor.
Click the element you need, then copy the corresponding variable into your HTML template.
💡 You do not need to use Slides to access these variables. The variable drawer is available directly from the HTML template editor.
2. Variables inside a loop
Once you are inside a loop, use the Jinja variable representing the current item.
For example:
{% for day in days %}
creates a loop through the project's days.
Inside that loop:
{{ day.title }}
displays the title of the current day.
Similarly:
{% for supplier in suppliers %}
loops through suppliers, and:
{{ supplier.title }}
displays the title of the supplier currently being processed.
The sections below list the variables available for the main loop types.
3. Days
Use these variables inside:
{% for day in days %}
Information | Variable |
Day index |
|
Title |
|
Date |
|
Images |
|
Price |
|
Sales price |
|
Purchase price |
|
Products |
|
Products with options |
|
Products without options |
|
Activities |
|
Steps |
|
Accommodations |
|
Transports |
|
Destinations |
|
Products |
|
Day date formats
You can choose how the date is displayed by adding a format.
Format | Variable |
Month / short year |
|
Month / full year |
|
Day / month / short year |
|
Day / month / full year |
|
Month / day / short year |
|
Month / day / full year |
|
Day / month |
|
Month / day |
|
Full written date |
|
For example, if the date is 21 September 2026:
{{ day.date.["%d/%m/%Y"] }}
displays:
21/09/2026
while:
{{ day.date.["%A %d %B %Y"] }}
displays the full written date.
4. Items starting on a day
Inside a day loop, you can also retrieve only the items that start on that day.
Information | Loop |
Steps starting this day |
|
Accommodations starting this day |
|
Transports starting this day |
|
Activities starting this day |
|
Destinations starting this day |
|
5. Items ending on a day
You can apply the same logic to items that end on the current day.
Information | Loop |
Steps ending this day |
|
Accommodations ending this day |
|
Transports ending this day |
|
Activities ending this day |
|
Destinations ending this day |
|
6. Activities, steps, accommodations, and transports
Activities, steps, accommodations, and transports share many of the same properties.
In the table below, X represents the current object.
Depending on your loop, replace X with:
activitystepaccomtransp
For example, inside:
{% for step in day.steps %}
use:
{{ step.title }}
Inside a transport loop, use:
{{ transp.title }}
Available information
Information | Variable |
Index |
|
Title |
|
Is an option |
|
Duration |
|
Duration — hours + minutes |
|
Duration — minutes |
|
Duration — hours |
|
Duration — formatted minutes + hours |
|
Nights |
|
Images |
|
Supplier |
|
Long description |
|
Long description |
|
Short description |
|
Price |
|
Sales price |
|
Purchase price |
|
Number of travelers / PAX |
|
Category |
|
Start date |
|
End date |
|
Start time |
|
End time |
|
Products |
|
Products with options |
|
Products without options |
|
Address |
|
Address name |
|
Address label |
|
Postal code |
|
City |
|
Country |
|
Custom fields |
|
Start date formats
Format | Variable |
Month / short year |
|
Month / full year |
|
Day / month / short year |
|
Day / month / full year |
|
Month / day / short year |
|
Month / day / full year |
|
Day / month |
|
Month / day |
|
Full written date |
|
The same formatting options can be applied to date_end.
7. Destinations
Use these variables inside:
{% for destination in destinations %}
Information | Variable |
Index |
|
Destination |
|
Sub-destination |
|
Images |
|
Long description |
|
Long description |
|
Short description |
|
Start date |
|
End date |
|
Duration |
|
Nights |
|
8. Travelers
Use these variables inside:
{% for traveller in travellers %}
Information | Variable |
Index |
|
Full name |
|
First name |
|
Last name |
|
| |
Phone |
|
Custom fields |
|
9. Suppliers
Use these variables inside:
{% for supplier in suppliers %}
Information | Variable |
Index |
|
Title |
|
Destination |
|
Sub-destination |
|
Images |
|
Address |
|
Address name |
|
Address label |
|
Postal code |
|
City |
|
Country |
|
Contacts |
|
Category |
|
Subcategory |
|
Products |
|
Products with options |
|
Products without options |
|
Long description |
|
Long description |
|
Short description |
|
Capacity |
|
Website |
|
Number |
|
Stage |
|
Custom fields |
|
Logo |
|
10. Provider
Provider information has its own set of variables.
To find them in the variable drawer, go to:
Product → Provider
Provider variables follow the same structure and logic as Supplier variables, but retrieve information from the provider associated with the product.
⚠️ Supplier and Provider are not interchangeable.
Make sure you select the correct information source, especially when a product contains both Supplier and Provider information.
11. Supplier contacts
To repeat the contacts associated with a supplier, use:
{% for contact in supplier.contacts %}
Inside that loop, you can use:
Information | Variable |
Index |
|
| |
Title / function |
|
Full name |
|
Civility |
|
Main phone |
|
Secondary phone |
|
First name |
|
Last name |
|
These variables apply to contacts accessed from a supplier.
12. Products
Products can be accessed from different contexts.
For example:
{% for product in x.product %}
or:
{% for product in product %}
When the products belong to another program item, X can represent:
activitystepaccomtransp
Inside the product loop, use:
Information | Variable |
Title |
|
Long description |
|
Long description |
|
Short description |
|
Capacity |
|
Notes |
|
Unit sales price |
|
Quantity |
|
Total sales price |
|
Unit purchase price |
|
Total purchase price |
|
Images |
|
Supplier |
|
Associated step |
|
Packages |
|
Custom fields |
|
⚠️ product.supplier is available only when you are not already inside the context of a supplier.
Similarly, product.step is available only when you are not already inside the context of an activity, accommodation, transport, or step.
13. Images
Images can be accessed from several objects using a loop such as:
{% for image in element %}
Available image collections include:
day.imagesactivity.imagesstep.imagesaccom.imagestransp.imagesdestination.imagessupplier.imagesproduct.imagespackage.images
For example:
{% for image in day.images %}
allows you to repeat a block for each image associated with the current day.
⚠️ The Slides image modifiers [crop], [center], and the default Slides image behavior do not work in HTML.
In HTML templates, image size, crop behavior, alignment, proportions, and positioning must be controlled through CSS.
