Twig is a templating Engine for PHP that helps to keep the code clean and organized by separating what is coded from what people see on the website. This makes the task of managing and updating templates a bit easier.

GLPI has brought since the version 10, the ability to use Twig variables on followups, tasks and solution templates. But you may ask, what is it useful for?

Well. Let’s take a template you use on a daily basis and have to always change some fields. Start with a welcome message in a ticket, as an example:

Dear {Client’s Name},

Thank you for reaching out to our support team. We wanted to let you know that your support ticket has been successfully inserted into our support area. Our team is already on it and will start the process of analysis within {specified time frame}.

If you need to add any additional information or have further questions, you can simply reply to this email or visit our website at upport.yourdomain.com to update your ticket.

We appreciate your patience and will get back to you as soon as possible.

Best regards,

I know. Sometimes we forget to manually change the fields by the correct ones, or we just let general information there as don’t make any mistakes.

The twig variables are exactly for this.

Every ticket has some pre-filled fields. Be it by the user, by the technicians, by automatic business rules. The only thing we want here is to be accurate, quick and informative.

Let’s change this same message to add

  1. The first name of the requester
  2. The Time to Own the ticket received at this moment
  3. The group that is responsible for the ticket at the moment

Dear {% for user in ticket.requesters.users %} {{ user.firstname }} ,
{% endfor %}

Thank you for reaching out to our support team. We wanted to let you know that your support ticket has been successfully inserted into our support area. Our team is already on it and will start the process of analysis within {{ ticket.tto | date("d/m/y H:i") }}.

The group {{ group.name }} is responsible for this ticket at this level.

If you need to add any additional information or have further questions, you can simply reply to this email or visit our website at upport.yourdomain.com to update your ticket.

We appreciate your patience and will get back to you as soon as possible.

Best regards,

As you can see, there are some variables in this template. It means that every time a technician selects this Followup template, GLPI will insert:

  • Every first name of users at the requesters field
    • {% for user in ticket.requesters.users %} {{ user.firstname }} , {% endfor %}
  • The Time to Own date and time added manually or automatically via business rules
    • {{ ticket.tto | date("d/m/y H:i") }}
  • The responsible group of the ticket
    • {{ group.name }}

The best part is that, once these fields change during the lifecycle of the ticket, the new followups, tasks and solutions will get updated information to be inserted during the time.

Here are some other ideas of templates you may use

  • Fill with a KB article
    • If you have a knowledge base article that may be useful for the user, you may:
      • relate this article with the ticket using the knowledge base tab in a ticket
      • create the followup or solution template with the following variable {{ knowbaseitem.answer | raw }}
      • select the template you’ve previously created. GLPI will insert the content of the article to the solution or followup template.
      • here is a template example


{% for user in ticket.requesters.users %} {{ user.fullname }}
{% endfor %}
There is a possible article on our knowledge base that may be of help:
{% for knowbaseitem in ticket.knowbaseitems %}

{{ knowbaseitem.link | raw }}

{{ knowbaseitem.answer | raw }}

{% endfor %}

  • Use it for pending reasons
    • relate this article with the ticket using the knowledge base tab in a ticket
    • create the followup template with the important variables
    • create the pending reasons
    • connect the template you created to the pending reason you’ve previously created
    • here is a template example

Hi {% for user in ticket.requesters.users %} {{ user.firstname }} ,
{% endfor %}

Hope you’re doing well! We’re just dropping a quick note to remind you that your response is needed to proceed with ticket # {{ ticket.id }} regarding {{ ticket.name }}.

Your input is crucial for us to move forward. If you could spare a few moments to provide the necessary information or feedback, we’d greatly appreciate it.

If the issue has already been resolved, or you have other questions, please let us know.

Thanks for your attention to this matter!

Best,

{% for user in ticket.assignees.users %} {{ user.firstname }}

{% endfor %}

The Twig variables may be found at the followup, task and solution templates. Explore it and make me know what are the projects you have created with them. We will have news about those same twigs in next versions.

YouTube video:

Stay connected so you don’t miss any of our news!