Information för mall-konstruktörer

Mallarna i tjänsten är uppbyggda med hjälp av Pebble Templates.

Några korta punkter om mallar i tjänsten:

  • Mallar behöver inte använda HTML, utan kan bestå av ren text, även om man då tappar möjligheten till mer eller mindre avancerad formatering och möjlighet att styra exempelvis färger och typsnitt.

  • Pebble-mallar använder klammerparenteser (“måsvingar”) i olika varianter för olika uttryck, men det finns inget krav på mellanslag eller inte mellan dem och uttrycket. T.ex. vid användning av en variabel så är det ingen skillnad på {{minVariabel}} eller {{ minVariabel }}. Rekommendationen för ökad läsbarhet är dock att använda mellanslag.

  • I normalfallet är Pebble-mallar skiftlägeskänsliga, men i denna tjänst görs ingen skillnad på skiftläge. Det vill säga att t.ex. {{ efternamn }} tolkas likadant som {{ EFTERNAMN }}.

  • Om ett uttryck i en mall resulterar i HTML-kod kommer denna inte att escape:as.

En exempel-mall för en fiktiv orderbekräftelse skulle kunna se ut som nedan:

<!DOCTYPE html> <html> <head> ... </head> <body> {% include 'resource.logo' %} [1] Hej {{ FIRSTNAME }} {{ LASTNAME }}, och tack för din order! [2] Du har beställt (alla priser angivna i {{ CURRENCY }}): [2] <table> <tr> <th>#</th> <th>Produkt</th> <th>Pris</th> </tr> {% set ORDER_TOTAL = 0 %} [3] {% for ORDER_ITEM in ORDER_ITEMS %} [4] {% set ORDER_TOTAL = ORDER_TOTAL + ORDER_ITEM.PRICE %} [3] <tr> <td>{{ ORDER_ITEM.PRODUCT_ID }}</td> [5] <td>{{ ORDER_ITEM.PRODUCT_NAME }}</td> [5] <td>{{ ORDER_ITEM.PRICE }}</td> [5] </tr> {% endfor %} [4] <tr> <td colspan="2" style="text-align: right">Totalt</td> <td>{{ ORDER_TOTAL }}</td> [2] </tr> </table> Vi meddelar dig när ordern skickas. Med vänlig hälsning // Butiken </body> </html>

[1] - Inkluderar en annan namngiven mall, i det här fallet resource.logo.
[2] - Skriver ut innehållet i enkla variabler, i det här fallet FIRSTNAME, LASTNAME, CURRENCY resp. ORDER_TOTAL.
[3] - Sätter en variabel lokal för mallen - ORDER_TOTAL sätts först till noll och räknas sedan upp.
[4] - En for-loop över listan ORDER_ITEMS, där aktuell post i listan sätts till ORDER_ITEM.
[5] - Skriver ut innehållet i “nästlade” variabler, i det här fallet PRODUCT_ID, PRODUCT_NAME resp. PRICE i objektet ORDER_ITEM (som är en post i listan ORDER_ITEMS i [4] ovan).

Ett exempel-request för att rendera exempel-mallen ovan skulle kunna se ut som följer (förutsatt att mallen heter order-confirmation:

{ "templateIdentifier": "order-confirmation", "parameters": { "FIRSTNAME": "Kalle", "LASTNAME": "Karlsson", "CURRENCY": "SEK", "ORDER_ITEMS": [ { "PRODUCT_ID": 12345, "PRODUCT_NAME": "Red Baseball Cap", "PRICE": "149" }, ... ] } }