">Doc

Introduzione

In alcune parti del plugin come nel template o nei campi calcolati è possibile inserire del codice personalizzato attraverso un template engine.
Questo si divide in due concetti principali le variabili e le funzioni.

Puoi altrimenti eseguire le istruzioni del template engine attraverso lo shortcode adfo_tmpl. Aggiungi dall'editor un blocco shortcode e scrivi:

[adfo_tmpl]2*2 = [^MATH 2 * 2] [/adfo_tmpl]

Nelle liste, ad esempio, i dati estratti sono salvati nella variabile [%data]. Tutte le variabili vengono richiamate con shortcode che iniziano per %. Le funzioni invece ocn shortcode che iniziano con ^ e si comportano sempre nello stesso modo in ogni parte del codice.

[%data.post_title]
Stamperà il titolo di un post in una lista in cui vengono estratti i post.
Per richiamare le proprietà di un oggetto tramite gli shortcode si usa il punto.

STATEMENTS AND FLOW CONTROL

MATH

    [^MATH 3 + 1 + .5] [// 4.5 //]
    [^MATH 3+2 * 2] [// 7 //]
    [^MATH (3+2) * 2] [// 10 //]
    [^MATH 2^3] [// 8 (2*2*2) //]
    [^MATH 9^.5] [// 3 (radice quadra) //]
Si possono usare gli operatori di relazione > >= < <= != o <> in, not in, !
    [^MATH 2 > 1 ] [// 1 //]
    [^MATH 2 <> 1 ] [// 1 //]
    [^MATH 2 in ["1","3","4"] ] [// 0 //]
    [^MATH 2 not in ["1","3","4"] ] [// 1 //]
In math è possibile usare anche gli operatori logici: AND && OR || Tornerà 1 se vero 0 se falso
 [^MATH 4 > 5 OR (3 == 3 AND 2 == 2) ] [// 1 //]

[^IF] ... [^ELSE] ... [^ENDIF]

Conditional statement. If the condition is met, the code between [^IF] and [^ELSE] is executed, otherwise the code between [^ELSE] and [^ENDIF] is executed.

[^SET a=3]
[^IF [%a]*2 == 6] YES [^ENDIF]

FOR...ENDFOR

Cicla i dati.

Attributi:

  • EACH= imposta l'array da ciclare. Setta anche il nome della variabile a cui passare i valori in automatico a partire dalla prima parola incontrata.
  • VAL= Il nome della variabile a cui passare i dati.
  • KEY= Se è un array associativo il nome della chiave dell'array.
<ul>
    [^FOR EACH=[%data] KEY=mykey VAL=myItem]
        <li>[%mykey] = [%myItem]</li>
    [^ENDFOR]
</ul>
[// Oppure se non si usano KEY e VAL //]

<ul>
    [^FOR EACH=[%data]]
        <li>[%key] = [%item]</li>
    [^ENDFOR]
</ul>

Genera un elenco di titoli linkabili dei post. Per interrompere un ciclo si può usare l'istruzione break.

<ul>
    [^FOR EACH=[^POST TYPE=post]]
        <li>[%item.title_link]</li>
    [^ENDFOR]
</ul>
<ul>
    [^FOR EACH=["foo","bar","pippo"] VAL=var]
    [^break [%var] == "bar"]
    <li>[%var]</li>
    [^ENDFOR]
</ul>
The above example will output::
• foo

WHILE... ENDWHILE

Esegue un ciclo fin tanto che la condizione viene soddisfatta. Per maggiori informazioni sulle condizioni puoi vedere MATH

[^WHILE [%var set+=1] < 10]
    [^SET ris.[]=[%var]]
    [^BREAK [%var]>=5]
[^ENDWHILE]
[^RETURN [%ris SEP=;]]
The above example will output::
1 , 2 , 3 , 4 , 5

[^BREAK]

Interrompe l'esecuzione di un ciclo FOR o WHILE o del blocco che si sta eseguendo.

Break viene eseguito se è soddisfatta una condizione. Se non vengono inserite condizioni allora blocca sempre L'esecuzione

[^IF 3==3]
    Lorem ipsum dolor sit amet,
    [^BREAK]
    consectetur adipiscing
[^ENDIF]
Donec et accumsan nulla, at tempus metus
        

Non stama "consectetur adipiscing" perché successivo al break, ma stamap "Donec ..." perché fuori dal blocco if. Break infatti interrompe l'esecuzione di un blocco o di un ciclo.

The above example will output::
Lorem ipsum dolor sit amet, Donec et accumsan nulla, at tempus metus

COMMENTI

I commenti non vengono stampati nella pagina

[// commento //]

[^BLOCK... ENDBLOCK

Cattura il codice all'interno del tag e lo imposta in una variabile senza eseguirlo. Il codice verrà poi eseguito quando la variabile verrà richiamata. È la cosa più vicina ad una funzione che c'è.

FUNCTIONS

[^USER]

Carica un utente wordpress e i suoi metadata. Se non si passa nessun dato ritorna l'utente corrente
I parametri che possono essere passati sono:
id|slug|email|login per il caricamento di un singolo utente.
Se non si passa nessun parametro allora viene caricato l'utente che si è loggato

La funzione ritorna

  • id: int
  • login: string
  • email: string
  • reoles: array
  • registered: string
  • nickname: string
  • wpx_capabilities: array
  • wpx_user_level: int
  • meta_*: Altri metadata
[^user]
{"login":"admin","email":"admin^admin.it","roles":["administrator"],"registered":"2020-01-08 13:31:57","nickname":"admin"}
[^IF [^user]==""]
        non sei loggato
        [^else]
        Sei loggato
        [^endif]
Esegue un codice diverso se si è loggati oppure no.

[^NOW]

Torna la data di oggi

[^now]
        [^now date-format="d-m-Y" date-modify="+2 days"]
        [^now timestamp]
        

[^POST]

Carica i post di wordpress

Gli attributi sono

Per estrarre un articolo singolo

id= trova il post con un determinato id. Se è un array di id trova tutti i post con quegli array

Per estrarre più articoli

type= Il post_type (post, page ecc...) Di default è post. Se si vogliono caricare le immagini vedi l'alias di [^POST]
cat= trova i post di una determinata categoria o di un gruppo di categorie. Accetta l'id, lo slug oppure un array di id
!cat= trova i post che non sono presenti in una determinata categoria o di un gruppo di categorie. Accetta l'id lo slug oppure un array di id
author= trova i post per un determinato autore. Se è un numero usa l'id altrimenti lo user_nicename (NON IL NOME)
slug= Cerca per lo slug.
tag= Certa un post che abbia almeno uno dei tag selezionati. è possibile scriverli in un oggetto oppure in una stringa.
parent_id= L'id del post padre.
limit= Limita il numero di articoli da visualizzare. Per default 10. metti -1 per averli tutti.
offset= Visualizza gli articoli a partire da
order= Il campo su cui ordinare
ASC Ordine crescente
DESC Ordine decrescente
Mostrare gli articoli associati in un certo periodo di tempo.
year= Gli articoli di un determinato anno (es 2020)
month= Gli articoli di un determinato mese (1-12)
week= Gli articoli di una determinata settimana (week)
day= Gli articoli di un determinato giorno (day)
first= Mostra i primi articoli inseriti. Per default 5. Sostituisce order, asc, desc, limit
last= Mostra gli ultimi articoli inseriti. Per default 5. Sostituisce order, asc, desc, limit

Ricerca nei postMeta:

è possibile cercare nei postmeta inserendo il tipo di filtro nell'attributo meta_query. Se si vogliono ricercare più parametri questi possono essere aggiunti divisi da spazi. In automatico verranno collegati come AND. Se si vogliono aggiungere OR e AND all'interno della ricerca questi vengono inseriti come funzioni. Le condizioni all'interno della funzione vengono collegate dalla congiunzione logica inserita.

meta_query=[: AND(a>=b
        OR (
        b<=var c!=ccc L IN (3,2,5,3,52,34) ) .c LIKE ("% ") 
                        .d=" [%pippo]" parametro=) c> 2 :]
        

Altri parametri:

read_more= Il testo da mettere nella variabile link_read_more. Se non presente aggiunge ... . Se light_load è presente il tag è inutilizzabile

image= La dimensione dell'immagine di apertura: thumbnail, medium, large, full. Se non impostata carica post-thumbnail

light_load Esclude dal caricamento i post_meta e altri dati aggiunti per semplificare la gestione dei post. Passare 0 o 1 è opzionale

La funzione ritorna

  • id: int
  • author: text
  • *author_id: int
  • *author_name: text
  • *author_roles: array
  • *author_email: text
  • *author_link
  • date: date
  • content: text
  • title: text
  • *title_link: link
  • *permalink: link
  • guid: link
  • excerpt: text
  • status: text
  • comment_status: text
  • name: text
  • modified: date
  • parent: int
  • menu_order: int
  • type: text
  • mime_type: text
  • comment_count: int
  • filter: text
  • *read_more_link: link
  • *image: html
  • *image_link: text
  • *image_id: int
  • *[postmeta]

Se presente l'attributo light_load questi dati non vengono caricati. Se il post type è attachment e mime_type è image, permalink, image e image_link vengono comunque caricati.

A questi si aggiungono tutti i post meta.

Esempi

[^POSt id=XX for=[:
        [%item for=[:

[%key]: [%item trim_words]

:]] :]]
[^POST get={"id":"id","Titolo":"title_link", "Autore"=>"author_name"} type=post tmpl=table]

[^IMAGE]

Carica le immagini

Gli attributi sono gli stessi di [^ POST]. In particolare puoi utilizzare:

id = trova l'immagine con un certo id. Se è un array di ID, trova tutte le immagini dagli id dell'array

: image_size = La dimensione dell'immagine di apertura: thumbnail, medium, large, full. Se non è impostato, carica la miniatura post. fit ingrandisce l'immagine alla dimensione massima del suo contenitore (larghezza = 100%). winfit: ridimensiona l'immagine in proporzione allo schermo. Vedere il tutorial 2 per ulteriori informazioni.

Viene aggiunto:

post_id= Trova tutte le immagini collegate ad un singolo post

light_load= è impostato su 0 (nei post è impostato su 1). Se si vuole caricare tutto si deve inserire light_load=0

La funzione ritorna

Ritorna gli stessi parametri di POST

  • image: html
  • title: text
  • *title_link: link
  • *permalink: link
  • url: string
  • original_url: string
  • image_link: text
  • image_id: int
  • *attachment_width: int
  • *attachment_height: int
  • *attachment_file: int
  • *attachment_sizes: Array
  • *attachment_image_meta: Array
  • id: int
  • author: text
  • *author_id: int
  • *author_name: text
  • *author_roles: array
  • *author_email: text
  • *author_link
  • date: date
  • content: text
  • guid: link
  • excerpt: text
  • status: text
  • comment_status: text
  • name: text
  • modified: date
  • parent: int
  • menu_order: int
  • type: text
  • mime_type: text
  • comment_count: int
  • filter: text
  • *read_more_link: link
  • *[postmeta]

* Se viene inserito light_load=0 questi dati non vengono caricati. Altrimenti non verranno caricati.

A questi si aggiungono tutti i post meta.

Esempi

[^IMAGE class=my_gallery print=[%item.image] attr={"id":"myGallery"} ]
    :]]

[^CURRENT_POST]

Ritorna il post che si sta visualizzando

[^LINK]

L'equivalente di get_permalink().

Link come dice il nome stesso serve a generare un link del sito.
Per la scelta della pagina o del post il parametro è page_id. SE page_id non è inserito, il link è alla pagina corrente. Qualsiasi altro parametro inserito viene registrato come nuovo elemento dell'url

<a href="[^LINK page_id=xxx id=yyy action=zzz]">link</a>

Examples

[%data.post_title]

Se colleghi a post con post_type personalizzati ricordati di registrare il post_type su function.php del tuo template

add_action( 'init', 'register_my_post_type' );
function register_my_post_type() {
    register_post_type(
    'my_post_type',
    array (
        'public'             => true,
        'rewrite'            => array('slug' => 'my_post_type'),
        'show_in_menu'      => false,
        'show_in_nav_menus' => false,
        'show_in_rest' 		=> false
    )
    );
}

[^ADMIN_URL]

Fa un link ad una lista amministrativa. Puoi passare ulteriori parametri per filtrare i dati passati

Parameters

  • id
    (integer) L'id della lista
  • some_other_params
    (string) Puoi aggiungere altri parametri che verranno passati nell'url

Esempio: In una lista mostra i dati di un'altra lista filtrati e il bottone per andare a modificare i dati.
1. crea una lista collegata ai post con una colonna post_id.
2. Aggiungi un po' di record collegati ai post.
3. Crea una seconda lista in cui estrai i post di wordpress
4. Sulla nuova lista apri List view formatting e clicca in fondo add row

[^GET_LIST ID=xx post_id=[%data.ID]]
            <a href="[^ADMIN_URL id=xx post_id=[%data.ID]]">Edit</a>

[^SET]

Definisce nuove variabili

[^SET variable=value var2=val2]

Per impostare il contenuto di più variabile è possibile scrivere:

[^SET myvar="FOO" mynewvar="bar"]
    [%myvar set="FOO"]

La differenza tra le due scritture è che nel primo caso la funzione [^SET ...] imposta una o più variabili senza stamparle, mentre nel secondo esempio la variabile viene impostata e stampata

Gli shortcode possono lavorare anche con contenuti non impostati in variabili:

[%"Ecco il mio testo"] [//  stampa il testo //]
    [%[1,2,3,4,5,6,7,8,9] ] [// stampa il json dell'array //]
[^SET 
   a="Foo | part1 | part2.3" 
   b=[%a split=|] 
   c=[%b.2 split=.]
]
[^RETURN [%c.1]] [// output 3 //]

è possibile inserire istruzioni sia nei valori che nei nomi delle variabili purché si rispetti la regola di non mettere spazi

    [^SET ser='a:3:{s:1:"a";i:1;s:1:"b";i:2;s:1:"c";i:3;}' unser={"d":4,"e":5,"f":6}]
    [^SET nu=[%ser unserialize]]
    [%nu.c] | [%unser.d]

Nell'esempio vengono impostati un array (unser) e una stringa serializzaa (ser). Poi viene settata una nuova variabile nu con l'array estratto da ser, infine viene ciclato unser e i suoi valori vengono inseriti in nu.

[^COUNTER]

Ogni volta che viene chiamata ritorna un numero nuovo di una sequenza numerica

Gli attributi optzionali sono

name= Il nome del counter che vuole essere richiamato

start= Il numero da cui vuoi far iniziare il counter

step= il numero di unità di per cui aumentre o diminuire il counter ogni volta che viene chiamato

[^GET_THE_ID]

Torna l'id di un post, identico a get_the_id di wordpress

[^RETURN]

Cancella tutta la parte di testo fino a quel punto e stampa unicamente il valore del return. Questa funzione è molto utile se state scrivendo un codice che è composto da più righe per evitare che vengano stampta

Non stamperà "Il mio risultato", ma solo il valore di my_var.

Il mio risultato: [^RETURN [%my_var]]

[^IS_USER_LOGGED_IN]

Torna 1 se l'utente è loggato altrimenti 0

[^IS_ADMIN]

Torna 1 se è una pagina amministrativa

is_*

[^IS_PAGE_AUTHOR], [^IS_PAGE_ARCHIVE], [^IS_PAGE_TAG], [^IS_PAGE_DATE], [^IS_PAGE_TAX] [^IS_PAGE], [^IS_SINGLE]

Torna 1 se è la pagina richiesta, altrimenti 0

[^GET_TAG] or [^GET_CAT]

Ritorna i dati del tag o di una categoria

Attributes

  • id or term_id
  • slug
  • name

Return

  • id
  • term_id
  • name
  • slug
  • term_group
  • taxonomy
  • parent
  • link
  • html
[^GET_TAG.html id=2]

[^GET_POST_TAGS] or [^GET_POST_CATS]

Ritorna i dati dei tag o delle categorie di un post

Attributes

  • post_id

Return

  • id
  • term_id
  • name
  • slug
  • term_group
  • taxonomy
  • parent
  • link
  • html
[^GET_POST_CATS.html post_id=2]

Funzioni specifiche per le liste

[^LINK_DETAIL]

Paramentri item=[%data], dbp_id=xx, action=""

Crea il link per mostrare il dettaglio di una pagina. Funziona solo mentre si sta ciclando una lista

Examples

<a href="[^LINK_DETAIL]" class="js-dbp-popup">popup detail</a>

[^UNIQ_CHARS_ID]

Params item=[%data], dbp_id=xx

Genera una stringa univoca per richiamare il record.
Questo risolve il problema che, se la query è composta da più tabelle, per estrarre una riga specifica bisogna passare gli id di tutte le tabelle.

Examples

1. In list view formatting crea un custom code e aggiungi questo codice:

<a href="?k=[^uniq_chars_id]">[^uniq_chars_id]</a>

2. In functions.php aggiungi il seguente codice sostituendo {the_list_id} con l'id della lista che si sta lavorando.

if (isset($_REQUEST['k'])) {
	var_dump(admin_form\ADFO::get_detail({the_list_id}, $_REQUEST['k']));
    die;
}

[^GET_LIST id=""]

Stampa una lista specifica.

[^GET_SINGLE id=""]

Stampa i risultati di un singolo record.

[^GET_DETAIL dpb_id="" id=""]

Estrae i dati di un record specifico.

[^GET_TOTAL dpb_id="" ]

[^GET_LIST_DATA id=xxx tmpl=[:
    <h3>[%item.title]</h3>
    <p>[%item.description]</p>
:]]

[^BTN_EXPORT id="" format=csv|sql title="" class=""]

Crea il bottone per scaricare una lista.

VARIABLES

Si possono aggiungere variabili o json come valori degli attributi

 [%myvar set=[^POST last]] 
 [%myvar set=["foo","bar"]]
 [%myvar set={"a":"foo","b":"bar"}]

Non si possono mettere variabili al posto dei nomi degli attributi

[%myvar [%var]="foo"] [// NON CORRETTO //] 

Questo è permesso solo dentro la funzione [^SET ] purché non ci siano spazi

[^SET [%var]="foo"] [// CORRETTO //] 
[^SET mypost.[%var]="foo"] [// CORRETTO //] 

Si possono chiamare i parametri di un oggetto tramite il .*

[%post.title] 
[%post.0.title]

Questo ritornerà una stringa se c'è un solo post, altrimenti un array di titoli.

Attributes

Gli attributi modificano una variabile o una funzione. Possono avere un valore associato.

NON SI può mettere lo spazio accanto al simbolo =.

                [%"string" uppercase]
            
[%"1602288000" date-format="Y-m-d"]

default=

Se il valore o l'oggetto è vuoto restituisce il default

            [%novar default="foo"]
            

*=[::]

I valori degli attributi non devono avere spazi.

Se si deve mettere uno spazio bisogna inserire il testo tra virgolette oppure i simboli [: :]. Le virgolette all'interno di un testo già virgolettato devono essere aggiunte col backslash

            [%myvar default=foobar] [// corretto //]
            [%myvar default=foo bar] [// non corretto //]
            
            [%myvar default=[:foo bar:]] [// corretto //]
            [%myvar default="foo bar"] [// corretto //]
            [%myvar default='foo bar'] [//  corretto //]
            

Verifica se è

is_string

Verifica se la variabile è una stringa

is_date

Verifica se una variabile è una data valida

is_object

Verifica se una variabile è un array o un oggetto

Attributi dei testi

val

Nei risultati estratti da una lista ne ritorna il valore non modificato. Ad esempio in un campo select dove i valori sono sostituiti da label ritorna il valore o in un campo media library ritorna l'id dell'immagine.

[data.column val]

upper - (Synonyms: uppercase strtoupper)

Trasforma una stringa tutta maiuscola

[%"foo" upper]
FOO

lower - (Synonyms: strtolower lowercase)

Trasforma una stringa tutta minuscola

[%"MY FOO" lower]
my foo

ucfirst - (Synonyms: capitalize)

Trasforma il primo carattere di una stringa in maiuscolo

[%"my foo" ucfirst]
My foo

strip-comment - (Synonyms: strip_comment stripcomment)

Rimuove i commenti <!-- --> o // o /* */

[^SET myvar=" <div>testo</div>  <!-- un commento--> <i>testo</i>"]
        [%myvar htmlentities]<br>
        [%myvar strip-comment htmlentities]
        
<div>testo</div> <!-- un commento--> <i>testo</i>
<div>testo</div> <i>testo</i>
[^SET myvar="<script> a =\"foo\"; 
        /* other comment 
        * multiline
        */
        alert(a);
        </script>"]
        [%myvar htmlentities nl2br]<br><hr>
        [%myvar strip-comment htmlentities nl2br]
        
<script> a = "foo";
/* other comment
* multiline
*/
alert(a);
</script>
<script> a = "foo";

alert(a);
</script>

strip-tags - (Synonyms: strip_tags striptags)

Rimuove tutti i tag html dal testo

nl2br

Trasforma gli accapi in br

htmlentities

Trasforma i caratteri speciali in entità html

        <textarea>[%"</textarea><b>fff</b>" htmlentities]</textarea>
        

l'esempio mostra come attraverso l'attributo htmlentities è possibile scrivere all'interno di una textarea dei tag html

left=

Accetta un parametro numerico.
Prende i primi n caratteri del testo. Accetta un secondo attributo "more" per aggiungere del testo se left ha effettivamente tagliato la stringa

    [%"A1B2C3D4E5F6G7H8I9" left=5 more=" ..."]
A1B2C ...

se il testo viene tagliato è possibile aggiungere un testo a fine riga utilizzando l'attributo more

        [%"Hello George" left=5 more=" ..."]
        [%"good afternoon" left=25 more=" ..."]
        

Nel primo caso taglia il testo e quindi mette il testo dell'attributo more, nel secondo caso non taglia il testo per cui non mette il testo del more

Hello ... good afternoon

right=

Accetta un parametro numerico.
Prende i primi n caratteri del testo

[%"Hello George" right=6]
George

trim_words=

Accetta un parametro numerico.
Prende le prime n parole del testo

se il testo viene tagliato è possibile aggiungere un testo a fine riga utilizzando l'attributo more

[%"Hello George how are you?" trim_words=2 more=" [^link id=2 text="..."]"]
Hello George ...

sanitize

Esegue la funzione wordpress sanitize_text_field

esc_url

Esegue la funzione wordpress esc_url

trim

Rimuove gli spazi prima e dopo in un testo o di tutti i campi di un array

split=

Divide un testo in un array

[^SET a=[%"Hello | World" split="|"]][%a.1] [// World //]

Search=

Ritorna 1 se trova la sottostringa o 0 se non lo trova.

[%"Nel mezzo del cammin di nostra vita" search="nostra" ]
1

Se viene invece passato il parametro replace sostituisce la stringa

[%"Nel mezzo del cammin di notra vita" search="notra" replace="<b>nostra</b>" ]
Nel mezzo del cammin di nostra vita

if=

Mostra il campo se la condizione viene rispettata. La condizione la si può inserire tra virgolette oppure tra parentesi quadre con due punti [: ... :]

            [^POST type=post if=[: [%item.id]>30 :] length]
        

Conta il numero di articoli con id > 30

set=

Imposta il valore di una variabile

[%myvar set="foo"]
foo

set+= o set-= per sommare o sottrarre la variabile passata

zero= - (Synonyms: empty)

Stampa un testo alternativo se la variabile è 0 o vuota.

one= - (Synonyms: singular)

Stampa un testo alternativo se la variabile è 1.

one= - (Synonyms: singular)

Stampa un testo alternativo se la variabile è 1.

[^SET a=["foo"] ]
[%a count] [%a singular="Item" plural="Items"]

plural=

Stampa un testo alternativo se la variabile è maggiore di 1.

[^SET a=["3","23","65"] ]
[%a count] [%a singular="Item" plural="Items"]

negative=

Stampa un testo alternativo se la variabile è negativa

decode_ids

Nella pagina del dettaglio ritorna l'array degli id del record.

[^SET ids=[%request.dbp_ids decode_ids]] [%ids]

json

Converte una stringa formattata come un json in un array

[%my_json_var json tmpl[:<p>[%key]=[%item.title]</p>:]]]

unserialize

Converte una stringa formattata come un serialize php in un array

[%my_serialize_var json tmpl[:<p>[%key]=[%item.title]</p>:]]]

Attributi per i numeri

set+= set-=

Per sommare o sottrarre la variabile passata.

decimal=

Imposta il numero di valori dopo la virgola da mostrare. Accetta altri due parametri dec_point e thousands_sep

[%"1203.23" decimal=1]<br>
[%"1203.23" decimal=1 dec_point=, thousands_sep=.]
1203.2 1.203,2

euro

Formatta un numero come valuta euro

floor

Arrotonda per difetto il valore di un numero

round

Arrotonda il valore un numero

ceil

Arrotonda per eccesso il valore di un numero

Attributi per le date

date-format=

Accetta un parametro di testo.
Cambia il formato della data

            [%"2020-10-10" date-format='Y']
            
2020

Accetta sia date, timestamp o stringhe anno mese giorno tutto attaccato o anche con orario

[%"1602288000" date-format="Y-m-d"]
2020-10-10

Il seguente esempio prende una variabile item.post_date in formato testo day/month/year, lo converte in year-month-day e stampa Y-m-d H:i:S

[^SET date=[:[%item.post_date left=10 right=4]-[%item.post_date left=5 right=2]-[%item.post_date left=2]:]][%date date-format="Y-m-d H:is"]

date-modify=

Accetta un parametro di testo.
Modifica una data

[%"2020-10-10" date-modify="+2 days"]
2020-10-12

last-day

Prende una data e imposta l'ultimo giorno del mese

[%"2020-10-10" last-day]
2020-10-31

timestamp

Prende una data e la converte in un timestamp

[%"2020-10-10" timestamp]
1602288000

datediff-year=

Ritorna la differenza in anni tra due date

datediff-month=

Ritorna la differenza in mesi tra due date

datediff-day=

Ritorna la differenza in giorni tra due date

Sono passati: [%a set='2001-10-04 10:20:10' datediff-day='2001-09-02 10:30:00']

datediff-hour=

Ritorna la differenza in ore tra due date

datediff-minute=

Ritorna la differenza in minuti tra due date

timenum-to-timestr

I campi time vengono salvati in secondi nel database. Questo attributo trasforma i secondi nel formato time hh:mm

timestr-to-timenum

I campi time vengono salvati in secondi nel database. Questo attributo trasforma i il valore dal formato time hh:mm in secondi.

time-to-hour

Questo attributo calcola il numero di ore da un campo time, quindi in secondi, o da un valore time nel formato hh:mm .

Attributi negli array

Tmpl= - (Synonyms: for, print)

Stampa i dati all'interno di un template. Questo può essere in una variabile*, un template in php esterno oppure scritto all'interno del valore dell'attributo. I dati dentro il template vengono ciclati all'interno della variabile [%item] e [%key] per il nome o il numero della variabile passata.

* Le variabili vengono trasformate, ma il codice al loro interno non viene eseguito per problemi di performace... bisogna mettere [::] allora il codice all'interno se è una singola variabile viene rielaborata!

[^POST post_type=post tmpl=[:<p>[%key]=[%item.title]</p>:]]
        
[%["1","2","3","4","5"] for=[: 
    <h2>ID=[%item]</h2>
    [^POST id=[%item] tmpl=[:
        <p>[%key]=[%item.title]</p>
    :]]
:]]

.(variable_name)=

È possibile aggiungere valori ad un array semplicemente aggiungendo attributi preceduti dal punto

sep=

Accetta un parametro di testo.
unisce i valori di un array in un testo separato dal testo indicato. Sinonimo di implode in php

qsep=

Uguale a sep ma unisce con le virgolette il testo

if=

Mostra il campo se la condizione viene rispettata. La condizione la si può inserire tra virgolette oppure tra parentesi quadre con due punti [: ... :]

[^POST type=post if=[: [%item.id]>30 :] length]

Conta il numero di articoli con id > 30

[^POST type=post if=[:[%item.author_name] == 'admin':] ]

Estrae solo gli articoli con autore = 2

sum

Fa la somma di un vettore.

TODO può essere passato un parametro aggiuntivo per cui fa la somma di un campo di un oggetto (ad esempio age, fa le somme dell'età degli utenti)

mean

Fa la media matematica

count - (Synonyms: length)

Se è un array conta il numero di righe. Se è una stringa conta il numero di caratteri

[%["bar","foo"] length]<br>
    [%"foo" length]
2 // è un array di due elementi 3 // il numero di caratteri della stringa

get= - (Synonyms: show, fields)

Restituisce solo alcuni determinati campi di un array. Se l'array è associativo sostituisce il nome del campo con la nuova chiave

[^post id=3 fields={"titolo":"title"}]
array (size=1) 'titolo' => string '...' (length=14)
[^post type=page fields=["id","author","title"]]
0 => array (size=3) 'ID' => int 1 'author' => string '1' (length=1) 'title' => string '...' (length=9) 1 => array (size=3) 'ID' => int 2 'author' => string '1' (length=1) 'title' => string '...' (length=15)
[^post type=page fields=id]
array (size=2) 0 => int 1 1 => int 2
[^post type=page fields={"id":"id", "autore":"author"} tmpl=table]

Stampa una tabella i cui titoli sono id e autore.