File e immagini
Caricare e organizzare
In File: trascina i file nell’area con il drag & drop oppure fai clic su Carica (fino a 64 MB per file). Le cartelle servono solo per la panoramica – spostare o rinominare non cambia mai l’URL di un file. Per spostare un file, trascinalo su una cartella a sinistra.
A destra, per ogni file: nome, testo alternativo, misure, varianti, copia URL, copia tag template, elimina.
Pulizia
Dopo nuove importazioni o ristrutturazioni restano spesso immagini e file CSS/JS che nulla usa più. Pulizia… (in File e in CSS & JS) li elenca – le immagini con anteprima, tutto preselezionato. Deseleziona ciò che deve restare, poi Elimina selezionati; prima viene chiesta una conferma. L’eliminazione è definitiva, insieme alle varianti delle immagini e alle versioni WebP.
Un file è considerato usato se pagine (HTML, Head, campi SEO), snippet, CSS/JS, voci di Collection, Workflows, Pens o sorgenti REST vi fanno riferimento – tramite il suo indirizzo (anche una variante dell’immagine o la versione WebP), tramite image(ID)/file(ID), un campo immagine o file, come icona del sito o immagine di anteprima. Un CSS/JS è considerato usato se è associato a una pagina o incluso con asset_url(ID); un foglio di stile inutilizzato non conta come uso delle immagini al suo interno. Poco prima dell’eliminazione il server controlla ancora una volta e lascia stare tutto ciò che nel frattempo è stato usato.
Non sono riconoscibili i riferimenti dall’esterno (altri siti web, newsletter che puntano direttamente a
/media/…) e da versioni vecchie nella cronologia delle versioni – chi riporta una pagina a una versione vecchia non vi troverà più le immagini eliminate. Nel dubbio, deseleziona.
Varianti delle immagini e srcset
Per JPEG e PNG IllusionCMS genera automaticamente al caricamento versioni ridotte con larghezza di 320, 640, 960, 1280 e 1920 px (solo larghezze inferiori all’originale). Così i browser caricano solo l’immagine che serve loro. GIF, WebP e SVG vengono salvati invariati.
Ecco come le immagini arrivano nella pagina:
-
Pulsante Immagine nell’editor – inserisce un
<img>consrcset,sizes, larghezza/altezza, testo alternativo eloading="lazy"; per JPEG/PNG dentro un<picture>con versioni WebP (vedi sotto). -
Tag template – resta aggiornato se cambiano testo alternativo o file:
{{ image(12) }} {{ image(12, "(min-width: 900px) 50vw, 100vw") }} {{ image(12, "100vw", "hero-bild") }} -
Informazioni sul file per costruzioni personalizzate:
{% with f=file(12) %} <div class="hero" style="background-image:url('{{ f.url }}')"></div> {% endwith %}
Impostare correttamente sizes: il valore dice al browser quanto è larga l’immagine visualizzata nella pagina. 100vw per la larghezza piena, (min-width: 960px) 50vw, 100vw per un’immagine che da desktop è larga la metà. Nella finestra dell’immagine ci sono dei modelli.
I testi alternativi descrivono l’immagine per screen reader e motori di ricerca. Curali nella gestione file – image() li riprende automaticamente.
WebP e dimensioni tramite URL
Per ogni JPEG e PNG – originale e tutte le varianti – esiste automaticamente una versione WebP, di solito grande circa la metà. image() e la finestra dell’immagine mettono perciò l’immagine in un <picture>: i browser che supportano WebP (tutti quelli attuali) caricano il file WebP, tutti gli altri il consueto <img>:
<picture>
<source type="image/webp" srcset="/media/2026/10/foto-ab12-320w.jpg.webp 320w, …, /media/2026/10/foto-ab12.jpg.webp 1600w" sizes="100vw">
<img src="/media/2026/10/foto-ab12.jpg" srcset="…" sizes="100vw" width="1600" height="900" alt="…" loading="lazy" decoding="async">
</picture>
Il file WebP si chiama come l’immagine con .webp aggiunto e viene creato alla prima richiesta (una sola volta, una frazione di secondo), poi resta come file accanto all’originale – anche per le immagini già presenti, senza che tu debba fare nulla. Se un’immagine viene sostituita (reimportazione), viene ricreato.
Per HTML e CSS personalizzati ci sono i parametri URL:
| URL | restituisce |
|---|---|
/media/…/foto.jpg?w=500 |
la variante più piccola con almeno 500 px di larghezza (qui 640 px), altrimenti l’originale |
/media/…/foto.jpg?format=webp |
la versione WebP dell’originale |
/media/…/foto.jpg?w=500&format=webp |
entrambe le cose combinate |
w sceglie sempre una delle larghezze fisse (320, 640, 960, 1280, 1920) – dimensioni arbitrarie non vengono generate, così nessuno può riempire lo spazio di archiviazione. In file() il srcset WebP si trova in .webp_srcset. L’esportazione statica contiene i file WebP usati.
File privati
Un file può essere privato: i visitatori del sito non lo vedono – /media/… risponde loro “non trovato” (404), come se il file non esistesse. Vale per l’originale, tutte le varianti dell’immagine e le versioni WebP. Possono vederlo:
- gli utenti connessi – nell’admin (sessione) e con un token API, anche di sola lettura (
Authorization: Bearer …o?token=…), - chiunque abbia un link firmato.
È pensato per PDF riservati, bozze o materiale da inviare ai clienti tramite link.
Attivare: in File clicca sul file e attiva Privato a destra – l’effetto è immediato. Per caricare subito come privato, spunta Privato accanto a Carica. I file privati mostrano nella griglia un lucchetto con “Privato”; le finestre di selezione (inserisci immagine, collega file) mostrano un avviso.
Link firmati: per un file privato scegli la validità sotto l’interruttore (1 ora, 1 giorno, 7 giorni, 30 giorni) e clicca su Copia link. L’indirizzo completo finisce negli appunti e il messaggio indica la data di scadenza. Il link ha questo aspetto: /media/2026/10/offerta-ab12.pdf?exp=…&sig=… – vale per il file con varianti e versioni WebP e non può essere né prolungato né trasferito ad altri file. I singoli link non si possono revocare: le firme restano valide fino alla scadenza, anche se nel frattempo rendi il file pubblico e poi di nuovo privato. Scegli quindi una validità breve. Le risposte per i file privati non vengono memorizzate nella cache (Cache-Control: private, no-store) né indicizzate (X-Robots-Tag: noindex), e i download non contano nelle statistiche.
Anteprima: nell’anteprima dell’editor delle pagine, con ?preview=1 e nei link di anteprima le immagini private compaiono comunque – image(), file() (.url, .srcset, .webp_srcset), icona del sito e immagine di anteprima restituiscono lì indirizzi firmati (validi circa una o due ore). Sulla pagina pubblicata gli indirizzi restano non firmati, quindi i visitatori non vedono l’immagine. file(ID).private indica se un file è privato, per esempio per mostrare un link solo per i file pubblici:
{% with f=file(12) %}{% if not f.private %}<a href="{{ f.url }}">{{ f.name }}</a>{% endif %}{% endwith %}
Limite: vengono firmati solo gli indirizzi di
image()/file(). I percorsi scritti a mano nell’HTML (<img src="/media/…">, anche dalla finestra immagine senza Inserisci come tag del template) restano come sono – nell’anteprima l’immagine manca. Per le immagini private usa quindi il tag del template (la finestra immagine lo preseleziona per i file privati). L’esportazione statica esclude sempre i file privati.