Template tag¶
Il tema fornisce due moduli di template tag.
agesci_components¶
Componenti UI opzionali implementati come inclusion_tag. Si caricano con:
{% load agesci_components %}
I template dei componenti si trovano in agesci_theme/components/ e sono
sovrascrivibili creando file con lo stesso percorso nel progetto figlio.
ag_hero¶
Sezione hero di apertura pagina.
{% ag_hero [title=""] [subtitle=""] [cta_text=""] [cta_url="#"] [variant="subtle"] [image_url=""] %}
Parametro |
Default |
Descrizione |
|---|---|---|
|
|
Titolo principale ( |
|
|
Testo lead |
|
|
Testo pulsante call-to-action (non mostrato se vuoto) |
|
|
URL del pulsante |
|
|
|
|
|
URL immagine (layout a due colonne se valorizzato) |
{% ag_hero title="Benvenuti" subtitle="AGESCI Campania — Regione Campania"
cta_text="Scopri di più" cta_url="/chi-siamo/" variant="subtle" %}
ag_feature_card¶
Card singola per sezioni feature (icona + titolo + descrizione).
{% ag_feature_card [title=""] [description=""] [icon=""] [variant=""] %}
Parametro |
Descrizione |
|---|---|
|
Nome icona Bootstrap (es. |
|
Classe colore icona (es. |
{% ag_feature_card icon="people-fill" title="Comunità" description="Oltre 180.000 soci in Italia." %}
ag_feature_grid¶
Griglia di feature card.
{% ag_feature_grid items [cols=3] %}
Parametro |
Descrizione |
|---|---|
|
Lista di dict con chiavi |
|
Colonne su desktop: |
# views.py
features = [
{"icon": "people-fill", "title": "Comunità", "description": "..."},
{"icon": "geo-alt-fill","title": "Territorio", "description": "..."},
{"icon": "star-fill", "title": "Formazione", "description": "..."},
]
{% ag_feature_grid items=features cols=3 %}
ag_jumbotron¶
Jumbotron (rimosso da Bootstrap 5, riproposto come componente custom).
{% ag_jumbotron [title=""] [lead=""] [cta_text=""] [cta_url="#"] [variant=""] %}
|
Sfondo |
|---|---|
|
|
|
|
{% ag_jumbotron title="Unisciti a noi" lead="Entra nel movimento scout più grande d'Italia."
cta_text="Contattaci" cta_url="/contatti/" %}
ag_badge¶
Badge Bootstrap con colori del tema.
{% ag_badge [text=""] [variant="primary"] [pill=False] %}
{% ag_badge text="Nuovo" variant="primary" pill=True %}
{% ag_badge text="Attenzione" variant="warning" %}
ag_dropdown¶
Menu dropdown Bootstrap.
{% ag_dropdown [label=""] [items=None] [variant="primary"] [split=False] [direction=""] %}
Parametro |
Descrizione |
|---|---|
|
Lista di dict con |
|
|
|
|
voci = [
{"label": "Profilo", "url": "/profilo/"},
{"label": "Impostazioni","url": "/impostazioni/"},
{"divider": True},
{"label": "Esci", "url": "/logout/"},
]
{% ag_dropdown label="Account" items=voci variant="primary" %}
ag_list_group¶
List group Bootstrap.
{% ag_list_group [items=None] [flush=False] [numbered=False] %}
Parametro |
Descrizione |
|---|---|
|
Lista di dict con |
|
|
|
|
voci = [
{"label": "Branca L/C", "badge": "12"},
{"label": "Branca E/G", "badge": "8", "active": True},
{"label": "Branca R/S", "badge": "5"},
]
{% ag_list_group items=voci %}
{% ag_list_group items=voci flush=True %}
ag_modal_trigger¶
Bottone che apre un modal Bootstrap.
{% ag_modal_trigger modal_id [label="Apri"] [variant="primary"] [size=""] %}
Va accoppiato con il template agesci_theme/components/modal.html tramite {% include %}:
{# Pulsante trigger #}
{% ag_modal_trigger modal_id="conferma" label="Conferma" %}
{# Shell del modal (in fondo alla pagina, fuori dal flusso) #}
{% include "agesci_theme/components/modal.html" with
modal_id="conferma"
title="Conferma operazione"
body="<p>Sei sicuro di voler procedere?</p>"
size="sm" %}
Per contenuto più complesso, prepara il corpo nella view come stringa mark_safe:
from django.utils.safestring import mark_safe
context["modal_body"] = mark_safe("<p>Contenuto <strong>HTML</strong>.</p>")
{% include "agesci_theme/components/modal.html" with
modal_id="info" title="Informazioni" body=modal_body centered=True %}
Parametri di modal.html:
Parametro |
Default |
Descrizione |
|---|---|---|
|
— |
ID univoco (obbligatorio) |
|
|
Titolo nell’intestazione |
|
|
Corpo (HTML come |
|
|
|
|
|
|
ag_masonry_grid¶
Griglia Masonry a cascata.
{% ag_masonry_grid [items=None] [cols=3] %}
Requisito: la libreria JavaScript Masonry deve essere caricata nel blocco
extra_js del template che usa il componente:
{% block extra_js %}{{ block.super }}
<script src="https://cdn.jsdelivr.net/npm/masonry-layout@4/dist/masonry.pkgd.min.js" defer></script>
{% endblock %}
Parametri:
Parametro |
Descrizione |
|---|---|
|
Lista di dict con chiave |
|
Colonne su desktop: |
from django.utils.safestring import mark_safe
items = [
{"content": mark_safe('<div class="card"><div class="card-body">Contenuto 1</div></div>')},
{"content": mark_safe('<div class="card"><div class="card-body">Contenuto 2<br>più alto</div></div>')},
]
{% ag_masonry_grid items=masonry_items cols=3 %}