Ricerca avanzata

La ricerca avanzata permette di trovare le pagine a seconda dei valori contenuti nei relativi campi dei form pagina. Questo tipo di ricerca si differenzia da quella testuale in quanto può ricercare più valori combinati tra loro.

I campi di ricerca sono definiti all'interno del pannello in Forms > Ricerca e possono essere riempiti automaticamente con i parametri dei form pagina, inoltre vanno inseriti in particolari posizioni nel tema che possiamo definire in theme.php.

Creare e mostrare un form per la ricerca avanzata

Per attivare la ricerca avanzata dobbiamo innanzitutto creare una posizione per la ricerca, in modo simile a quanto facciamo con menu e vetrine. Modifichiamo quindi l'oggetto search_positions in theme.php: nell'esempio creiamo la posizione chiamata "top", associata al riferimento del nome in lingua.

'search_positions' => [
	'top' => 'theme::common.search_positions.top',
],

Diamo quindi un nome, per ciascuna lingua, alla posizione modificando search_position anche nei file common.php, questo comparirà nel pannello in Aspetto > Ricerca:

'search_positions' => [
	'top' => 'In alto',
],

Dal pannello, in Forms > Ricerca, possiamo ora definire un nuovo form con contenuto, campi e regole per la ricerca avanzata. Associamo quindi il form alla posizione "In alto" da Aspetto > Ricerca.

Definiamo nel tema dove inserire la posizione della ricerca con la funzione search_position() che ha come unico parametro obbligatorio il nome della posizione, nel nostro caso "top".

La funzione ritornerà un oggetto Form, simile a quello dei contatti, corrispondente al form associato alla posizione.

I risultati della ricerca avanzata vengono mostrati nella view search.html, come quelli della ricerca base, i termini cercati terms saranno mostrati come una lista chiave-valore.