wiki
Benvenuto Ospite, sei in: Login
RSS RSS

Navigazione (Tech)





Ricerca wiki
»

Tustena Liquid il markup facile per le stampe personalizzate

Liquid è un linquaggio per la definizione di markup facile per le configurazione di stampe personalizzate. Pur essendo di recente concezione si può ben considerare uno standard indistriale percui abbiamo deciso di essere tra i primi ad implementarlo in Tustena CRM.

In questa pagina trovate la spiegazione del funzionamento della sintassi generale e degli operatori disponibili; alla pagina relativa agli esempi

Ci sono due tipi di markup in Liquid: Output e Tag.

  • Output - stampa il testo inserito applicando eventuali filtri ed è incluso tra due graffe consecutive
    {{ testo da stampare }}


  • Tag - esegue una funzione e stampa il risultato. E' incluso in tra il simbolo graffa seguito dal percento e viceversa
    {% comando da eseguire %}


Per esempio le seguenti righe:

The word "tobi" in uppercase: {{ 'tobi' | upcase }}
The word "tobi" has {{ 'tobi' | size }} letters!
Change "Hello world" to "Hi world": {{ 'Hello world' | replace: 'Hello', 'Hi' }}
The date today is {{ now | date: 'yyyyMMdd' }}

daranno come risultato:

The word "tobi" in uppercase: TOBI
The word "tobi" has 4 letters!
Change "Hello world!" to "Hi world!": Hi world
The date today is (la data corrente)

I tag disponibili sono:

  • assign - assegna un valore ad una variabile
  • capture - cattura il testo contenuto nel blocco e lo assegna ad una variabile
  • case - è lo standard case ... when
  • cycle - è utilizzato per ciclare dei valori all'interno di un loop (utile per alternare i colori ad ogni riga in una tabella)
  • for - il classico ciclo for
  • if - la codizione if/else
  • unless - la codizione inversa di if/else
  • include - include un altro template - {% include nomefile.html %}
  • comment - non stampa il contenuto
  • ifchanged - è utilizzato all'interno di un loop per stampare solo se il dato è cambiato

Capture

Capture inserisce il risultato in una variabile senza stamparlo.

{% capture heading %}
  Tustena is the best!
{% endcapture %}
 ...
<h1>{{ heading }}</h1>

Capture è utile per salvare il contenuto e utilizzarlo in seguito all'interno del template.

Assign

Assign assegna un valore ad una variabile.
{% assign foo = 'monkey' %}
 
{{ foo }}
Puoi utilizzare il valore in seguito nel template

Cycle

Cycle è normalmente utilizzato all'interno di un loop per alternare i valori, come i colori o le classi.
{% for item in items %}
<div class="{% cycle 'red', 'green', 'blue' %}"> {{ item }} </div>
{% end %}

il risultato è:
Item one
Item two
Item three
Item four
Item five

Case

Se va verificata più di una condizione usare il Case

{% case template %}
  {% when 'index' %}
     Welcome
  {% when 'product' %}
     {{ product.vendor | link_to_vendor }} / {{ product.title }}
  {% else %}
     {{ page_title }}
{% endcase %}

For

"For" cicla su un array o una collection. Ci sono molte variabili utili da utilizzare all'interno del ciclo.

Basic usage:
{% for item in collection %}
{{ forloop.index }}: {{ item.name }}
{% endfor %}

Advanced usage:
{% for item in collection %}
<div {% if forloop.first %}class="first"{% endif %}>
     Item {{ forloop.index }}: {{ item.name }}
</div>
{% endfor %}

Si può anche definire un limite e un offset come in SQL. Ricorda che l'offset inizia a 0 per il primo elemento.
{% for item in collection limit:5 offset:10 %}
     {{ item.name }}
{% end %}

Per invertire il ciclo utilizzare
{% for item in collection reversed %}

Variabili disponibili:
  • forloop.name 'Il nome della collezione'
  • forloop.length La dimensione del loop
  • forloop.index La posizione corrente dell'elemento all'interno della collection; forloop.index inizia a 1.
  • forloop.index0 La posizione corrente dell'elemento all'interno della collection dove il primo elemento inizia a 0.
  • forloop.rindex Numero di elementi che rimangono nel loop (length - index) dove 1 è l'ultimo.
  • forloop.rindex0 Numero di elementi che rimangono nel loop dove 0 è l'ultimo.
  • forloop.first Restituisce true se è il primo elemento.
  • forloop.last Restituisce true se è l'ultimo elemento.

Uso di limit:
 # array = [1,2,3,4,5,6]
  {% for item in array limit:2 offset:2 %} 
    {{ item }}
  {% endfor %} 
  # results in 3,4 

Unless

Unless is a conditional just like 'if' but works on the inverse logic.
{% unless x &lt; 0 %} x is greater than zero {% end %}

If

If e' un blocco condizionale

{% if user.admin %}
   Admin user!
{% else %}
   Not admin user
{% endif %}

There are {% if count &lt; 5 %} less {% else %} more {% endif %} items than you need.

IfChanged

The ifchanged block tag is used within a loop. It checks its own rendered contents against its previous state and only displays its content if the value has changed.

For example, in order to show the date only when a post is published on a new day (always displaying the time):

{% ifchanged %}
  <div class="date">{{ article.published_at | date: '%B %d'  }}</div>
{% endifchanged %}
<div class="time">{{ article.published_at | date: '%I:%M %p'  }}</div>

Tables

{% tablerow item in items cols: 3 limit: 12 %}
    {{ item.variable }}
  {% endtablerow %}

  • tablerowloop.length quanti elementi ci sono nel loop
  • tablerowloop.index la posizione nel loop corrente
  • tablerowloop.index0 la posizione nel loop corrente (zero based)
  • tablerowloop.rindex quanti elementi mancano?
  • tablerowloop.rindex0 quanti elementi mancano? (zero based)
  • tablerowloop.first è il primo elemento?
  • tablerowloop.last è l'ultimo elemento?
  • tablerowloop.col indice della colonna nella riga corrente
  • tablerowloop.col0 indice della colonna nella riga corrente (zero based)
  • tablerowloop.col_first è la prima colonna della riga?
  • tablerowloop.col_last è l'ultima colonna della riga?

{% tablerow item in items cols: 3 %}
    {% if col_first %}
      First column: {{ item.variable }}
    {% else %}
      Different column: {{ item.variable }}
    {% endif %}
  {% endtablerow %}

I filtri implementati sono:

  • date - formatta la data con la sintassi .Net
  • capitalize - Capitalizza tutte la parole
  • downcase - converte il testo in minuscolo
  • upcase - converte il testo in maiuscolo
  • first - restituisce il primo valore di un array
  • last - restituisce l'ultimo valore di un array
  • join - unisce gli elementi di un array intramezzando un carattere
  • sort - ordina gli elementi di un array
  • map -
  • size - restituisce la dimensione di un array di stringhe
  • escape - l'escape di una string
  • escape_once - esegue l'escape di una string html senza modificare gli elementi già convertiti.
  • strip_html - rimuove i tag html da una stringa
  • strip_newlines - rimuove gli 'a capo' (\n) da una stringa
  • newline_to_br - sostituisce gli 'a capo' (\n) con un break html
  • replace - sostituisce ogni occorrenza
  • replace_first - sostituisce la prima occorrenza
  • remove - rimuove ogni occorrenza
  • remove_first - rimuove la prima occorrenza
  • truncate - tronca la stringa a n caratteri
  • truncatewords - tronca la stringa a n parole
  • prepend - prepone alla stringa il valore
  • append - accoda alla stringa il valore
  • minus - sottrae il valore
  • plus - somma il valore
  • times - moltiplica il valore
  • divided_by - divide il valore

Estensioni custom di Tustena:

  • sum - somma il valore considerando le come numeri e restituendo un valore decimale
  • multiply - moltiplica il valore considerando le come numeri e restituendo un valore decimale
  • divide - divide il valore considerando le come numeri e restituendo un valore decimale
  • subtract - sottrae il valore considerando le come numeri e restituendo un valore decimale
  • format_as_money - formatta il dato numerico arrotondando al secondo decimale
  • empty_cell - inserisce una cella vuota nel caso il risultato sia un valore nullo
  • split - divide la stringa in due stringhe divise
  • format_date - formatta la stringa in formato data
  • is_date - verifica se la stringa è di tipo data
  • chars - conta il numero di caratteri
  • newline_to_br - nel caso di un campo testo con più righe, serve per mandare a capo come nella formattazione originale del testo
  • capitalize_all - restituisce la stringa in maiuscolo
  • format_as_percentage - restituisce la stringa formattata in percentuale
  • format_discount_formula -
  • format_time - formatta la stringa in formato ora
  • format_decimal - formatta la stringa in formato decimale (con un numero decimali a piacere)
  • default - se la stringa da stampare risulta vuota, questo funzione stampa un valore predefinito
  • get_lead_cross_string -
  • discount - ritorna la formula di sconto dell'oggetto
  • str_len - calcola la lunghezza della stringa
  • now / tustena_now - Restituisce la data odierna
  • tustena_url - Restituisce l'indirizzo di Tustena impostato nella chiave TustenaUrldel settings.config