Form Pagina
Panoramica
I form pagina permettono di associare dei campi aggiuntivi (di tipo chiave-valore) alle pagine, che possono essere compilati nel pannello e poi mostrati in front-end. Ogni form pagina può essere associato a una o più pagine e può contenere illimitati campi di diverso tipo: generico, password, nascosto, data, area di testo, elenco, selezione, opzione, paragrafo, file, link. Inoltre ogni form pagina ha un suo contenuto che comprende titolo e descrizione.
Lo scopo delle form pagina è principalmente quello di mostrare una tabella di chiavi e valori, come ad esempio un elenco di caratteristiche tecniche, tuttavia vengono spesso usate per aggiungere opzioni e funzionalità da applicare ad alcune pagine.
I valori delle form pagina sono ricercabili attraverso la ricerca avanzata.
Implementazione
Creazione di un form pagina
Una form pagina può essere creata dalla sezione Form del pannello, ad ogni campo verrà associato un nome, che utilizzeremo per estrarne il valore in front-end, e un'etichetta che verrà mostrata nel tema come "chiave". Una volta creato, il form può essere associato ad una pagina e, una volta salvata, si possono compilare i campi nell'apposita tab. I campi hanno valori diversi per ogni pagina, e se viene scelto "SOLO per questa lingua" avranno valori differenti anche per ogni lingua attiva.
Estrazione di un form pagina
Ad ogni pagina possono essere associati più form, per ottenerli è sufficiente utilizzare la funzione get_page_form()
con questi parametri, nell'ordine:
nome | tipo | descrizione | valore di default |
---|---|---|---|
content_id | int | Id del contenuto della pagina da cui si vogliono estrarre i form. Se non specificato verrà preso quello della pagina visualizzata | content.id |
form | string | Nome del form da estrarre, se non specificato verranno estratti tutti | null |
except | string | Nome di un form da escludere | null |
take | int | Limite massimo di form da estrarre | null |
Se viene indicato un form specifico, la funzione ritornerà quel form, altrimenti un array di tutti quelli cercati. Ogni form pagina sarà composto da:
nome | tipo | descrizione |
---|---|---|
id | string - int | Id del form associato alla pagina |
form_id | string - int | Id del form pagina generico |
lang_code | string | Codice della lingua dei valori del form |
title | string | Titolo del form pagina |
description | string | Descrizione del form pagina |
stauts | string | Può essere "enabled" o "disabled" in base alla spunta "Abilitato" nel pannello |
is_custom | string | |
created_at | string - date | Data di creazione |
updated_at | string - date | Data dell'ultimo aggiornamento |
fields | collection | Contiene i campi del form coi loro valori |
Nella collection fields
sono contenuti i campi del form. Ogni campo, identificato secondo il suo nome, contiene le seguenti informazioni:
nome | tipo | descrizione |
---|---|---|
id | string - int | Id del campo |
form_id | string - int | Id del form |
config_id | string - int | |
is_fixed | string - int | |
type | string | Tipo di campo (text, textarea…) |
name | string | Nome del campo |
label | string | Etichetta del campo |
options | string - array | "Options" del campo se è di tipo select . Viene generato come array: ["chiave|valore", "chiave2|valore2"] |
value | string | Valore associato al campo |
descr | string | Descrizione del campo |
rules | string | Regole di validazione applicate al campo. Vengono scritte in una stringa divise da carattere | |
autofill | string | Se non è riempito automaticamente da pannello (autofill) ha valore 0 |
autofill_category | string | Categoria dell'autofill |
autofill_form | string | Form dell'autofill |
autofill_field | string | Campo dell'autofill |
sequence | float | Numero che indica l'ordinamento del campo |
created_at | string - date | Data di creazione |
updated_at | string - date | Ultima data di modifica |
Per estrarre il valore di un campo della form pagina basterà estrarre prima il form:
{% set VARIABILE_FORM = get_page_form(content_id = content.id, form = 'NOME_FORM') %}
e poi il valore del campo desiderato in base al suo nome:
{{ VARIABILE_FORM.fields.NOME_CAMPO.value }}
Esempi
Mostrare in una tabella chiavi e valori di un form pagina
In questo esempio mostreremo le chiavi e i valori di tutti i form associati ad una pagina, ognuno in una sua tabella.
Per prima cosa estraiamo i form ed inseriamoli in una variabile che chiamiamo page_forms
.
{% set page_forms = get_page_form() %}
Eseguiamo un ciclo per estrarre un form alla volta, per ciascuno mostriamo titolo e creiamo una tabella con due colonne, la prima avrà l'etichetta della chiave e la seconda quella del valore. Controlliamo inoltre che il campo non sia di tipo hidden
, altrimenti lo nascondiamo, e che in caso i valori siano multipli (come nel caso di più checkbox selezionate) questi vengano mostrati uno sotto l'altro, andando a capo.
{% for form in page_forms %} {# cicliamo ogni form #} <h4>{{ form.title }}</h4> {# mostriamo il contenuto della form #} <table> <tbody> {% for field in form.fields %} {# Cicliamo i campi e ne inseriamo uno per riga #} {% if field.type != 'hidden' %} {# Controlliamo che il campo non sia di tipo hidden #} <tr> <td>{{ field.label }}</td> {# Nella prima colonna inseriamo l'etichetta del campo #} <td> {% if field.value is iterable %} {# Se il valore è un array (in caso di campi di tipo checkbox ad esempio) mostriamo i valori dell'array uno sotto l'altro #} {{ field.value|join('<br />') }} {% else %} {{ field.value }} {% endif %} </td> </tr> {% endif %} {% endfor %} </tbody> </table> {% endfor %}