Form Pagina

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.

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 }}

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 %}