Przejdź do treści głównej

Przygotowywanie szablonu do wysyłki oferty w treści wiadomości

Przygotowywanie szablonu do wysyłki oferty w treści wiadomości

System umożliwia przygotowanie szablonów wiadomości email, które pozwalają wysyłać ofertę bezpośrednio w treści wiadomości. Dzięki temu możesz zautomatyzować komunikację i personalizować treści dla klientów.


Jak dodać szablon?

  1. Z menu bocznego wybierz:
    Ustawienia → Wysyłka wiadomości → Szablony wiadomości email

  2. Kliknij Dodaj i uzupełnij formularz:

    • pola obowiązkowe oznaczone są gwiazdką (*)
    • możesz ustawić szablon domyślny
    • treść przygotujesz w edytorze lub przez kod źródłowy (HTML)
  3. Po uzupełnieniu wszystkich pól kliknij Zapisz


Edycja lub usuwanie szablonu

  • Kliknij ⋯ (3 kropki) obok wybranego szablonu
  • Wybierz:
    • Edytuj – aby wprowadzić zmiany
    • Usuń – aby usunąć szablon

Obsługa znaczników (Twig)

Szablony obsługują dynamiczne dane dzięki znacznikom Twig.

UWAGA:
Znaczniki dodane w kodzie źródłowym ({% code %}, {{ code }}) nie będą widoczne w edytorze, ale zostaną poprawnie przetworzone.


Dostępne obiekty

  • employee – dane pracownika
  • clients – dane klientów
  • elements – elementy oferty
  • investment – inwestycja
  • company – spółka
  • productBundles – pakiety produktów

Podstawowe tagi

Warunek

{% if company.address %}
  {{ company.address.street }} {{ company.address.buildingNumber }},
  {{ company.address.postalCode }} {{ company.address.city }}
{% endif %}

Pętla

{% set produkt = 'DOM' %}
{{ produkt }}

do (bez wyświetlania)

{% do 1 + 2 %}

Dostępne filtry

  • escape – znaki specjalne
  • lower / upper
  • capitalize / title
  • length
  • merge
  • number_format
  • format_currency
  • slice
  • filter

Dostępne funkcje

specificationArea(product: Product, optionName: string)

Zwraca powierzchnie z BuiltSpecifications jeśli istnieją, w przeciwnym razie ze Specifications.
Wiele wartości scala znakiem /.

Przykład: Powierzchnie „Komórka lokatorska”:
{{ specificationArea(element.product, 'Komórka lokatorska') }}


getCardinalDirection(product: Product)

Zwraca kierunki świata dla lokalu (np. „północ, wschód”, „południowy zachód”).

Przykład: Ekspozycja:
{{ getCardinalDirection(element.product) }}


downloadURL(file: File)

Funkcja pozwala na pobranie plików załączonych do produktu poprzez generowanie publicznego linku.

Przykład:

{% for productFile in element.product.files %}
    {% if productFile.fileType.systemName == 'IMG_PDF' %}
        <a href="{{ downloadUrl(productFile.file) }}">
            Zobacz kartę mieszkania
        </a>
        <br/>
    {% endif %}
{% endfor %}

footer()

Funkcja zwraca zawartość pola stopka z ustawień konta pracownika.

Przykład:
Przykładowa stopka pracownika

Przykładowy wygląd oferty

Przykładowe pola – Employee

  • {{ employee.name }}
  • {{ employee.surname }}
  • {{ employee.email }}
  • {{ employee.phone }}

Przykładowe pola – Client

  • {{ client.name }}
  • {{ client.surname }}
  • {{ client.displayName }}
  • {{ client.email }}
  • {{ client.phone }}

Przykładowe pola – Company

  • {{ company.name }}
  • {{ company.krs }}
  • {{ company.regon }}
  • {{ company.email }}

Przykładowe pola – Investment

  • {{ investment.name }}
  • {{ investment.getPlannedStartDate }}
  • {{ investment.getRealEndDate }}

Przykładowe pola – Product

  • {{ product.number }}
  • {{ product.area }}
  • {{ product.priceOffer }}
  • {{ product.roomsCount }}

Przykładowe pola – Address

  • {{ address.city }}
  • {{ address.street }}
  • {{ address.postalCode }}

Dobre praktyki

  • Udostępniaj tylko potrzebne dane
  • System działa w sandboxie (ograniczone możliwości Twig)
  • footer() zwraca HTML – nie używaj escape

Przykłady użycia

Przykład 1 – wiadomość

Szanowni klienci:

{% for client in clients %}
- {{ client.name | capitalize }} {{ client.surname | upper }}
{% endfor %}

Dziękujemy za zainteresowanie inwestycją {{ investment.name | title }}.

###  Przykład 2 – tabela pakietów

```html
<table>
  <thead>
    <tr>
      <td>Pakiet</td>
      <td>Pow. [m²]</td>
      <td>Ogród</td>
      <td>Cena</td>
    </tr>
  </thead>
  <tbody>
  {% for b in productBundles %}
    <tr>
      <td>{{ b.name }}</td>
      <td>{{ b.area }}</td>
      <td>{{ b.garden }}</td>
      <td>{{ b.price }}</td>
    </tr>
  {% endfor %}
  </tbody>
</table>

Przykład 3 – tabela elementów

<table>
  <thead>
    <tr>
      <td>ID</td>
      <td>PIĘTRO</td>
      <td>POWIERZCHNIA</td>
      <td>CENA</td>
    </tr>
  </thead>
  <tbody>
    {% for element in elements %}
    <tr>
      <td>{{ element.product.number }}</td>
      <td>{{ element.product.floor }}</td>
      <td>{{ element.area }}</td>
      <td>{{ element.nettoPrice }}</td>
    </tr>
    {% endfor %}
  </tbody>
</table>