Tag

Ad ogni pagina possono essere associati uno o più tag, ovvero delle stringhe che identificano degli insiemi di pagine. Per creare e associare un tag è sufficente scriverne il nome all'interno del pannello nella sezione Tags della modifica pagina. L'insieme delle pagine che corrispondono allo stesso tag può essere mostrato nel template tramite la view tag.html.

Dall'implementazione delle Categorie Pagina, i tag sono passati in secondo piano, in quanto più limitati. Consigliamo quindi l'uso delle categorie, specialmente per suddivisioni in più livelli e la possibilità di creare form di ricerca.

Le pagine associate ad un tag vengono mostrate in tag.html al cui interno è possibile estrarre alcune informazioni aggiuntive dalla variabile tag che contiene:

nome tipo descrizione
id string L'id del tag
url string URL della pagina dei tag
lang_code string Codice lingua del tag
slug string Slug del tag (ovvero il nome usato nell'url)
content_id string
value string Nome del tag
created_at string Data e ora di creazione
updated_at string Data e ora dell'ultimo aggiornamento
occurrences string Occorrenze del tag, ovvero il numero di pagine a cui è stato associato

Per estrarre i tag della pagina corrente è possibile utilizzare il parametro content.tags che contiene un array con all'interno l'oggetto tag descritto sopra. È possibile anche ottenere un elenco di tag personalizzato con la funzione get_tags() che ritorna un array dai tag scelti in base ai parametri accettati elencati di seguito nell'ordine:

nome tipo descrizione
content_id string L'id della pagina dalla quale si vogliono estrarre i tag
contains string
lang_code string Codice della lingua dei tag da estrarre
page_type string Il tipo di tag in base alla pagina (pagine, news…)
min_occ string Occorrenza minima dei tag estratti
max_occ string Occorrenza massima dei tag estratti

Mostrare le pagine corrispondenti ad un tag

In questo esempio costruiamo un file tag.html che mostra le pagine associate ad un tag, questo file può essere un'estensione di base.html, oppure, se si vuole mantenere la struttura di base di search.html possiamo modificarne solo i blocchi necessari. Nell'esempio abbiamo scelto di utilizzare la struttura base di search.html e di modificarne solo il blocco dell'intestazione che contiene i termini cercati, per sostituirli con il nome del tag scelto. Il file tag.html risulterà quindi:

tag.html
{# estendiamo la pagina search #}
{% extends 'search' %}
 
{% block search_header %} {# modifichiamo solo il blocco interessato #}
	<div>
		<span>{{ find_label('cms', 'tag_results') }}: </span><span>{{ tag.value }}</span> {# inserisco un'etichetta di default seguita dal nome del tag selezionato #}
	</div>
	<div>
		<span>{{ find_label('cms', 'search_results_count') }}: </span> <span>{{ pagination.total }}</span> {# aggiungo il totale delle pagine associate al tag #}
	</div>
{% endblock %}
 
{# Qui verrà caricato l'elenco delle pagine come configurato nella pagina search.html #}

Se invece si vuole gestire anche l'elenco dei file, basterà eseguire un ciclo sull'array delle pagine contenute in contents, allo stesso modo in cui si fa nella pagina della ricerca.

Mostrare l'elenco dei tag associati alla pagina corrente

I tag delle pagine sono inseriti all'interno di content.tags, basterà quindi eseguire un ciclo su questo collegando ogni tag alla relativa pagina.

{% if content.tags %}
	{% for tag in content.tags %}
	<a href="{{ tag.url }}">
		{{ tag.value }}
	</a>
	{% endfor %}
{% endif %}