WebBlocks CMS genera un insieme fisso di varianti di immagine di proprietà del prodotto da media pubblici JPEG, PNG e WebP. Gli editor continuano a gestire soltanto l'elemento multimediale originale; i file generati sono artefatti derivati della cache e non compaiono come record separati nella libreria.

Varianti di sistema

La configurazione media_transforms.php di proprietà del pacchetto definisce le varianti miniatura, scheda, contenuto responsive, hero e social. Queste definizioni fanno parte del comportamento del prodotto CMS. Questa versione non aggiunge intenzionalmente varianti definite dal progetto né una schermata di amministrazione per modificare dimensioni e qualità.

Le trasformazioni vengono generate al primo utilizzo e archiviate sul disco del media sorgente sotto media/transforms/{media_id}. L'impronta della cache include soltanto l'identità della sorgente rilevante per la trasformazione, le dimensioni, i dati MIME, il punto focale e la definizione della variante; le modifiche ai metadati editoriali non la invalidano. La sostituzione o l'eliminazione dei media e la modifica del relativo punto focale eliminano le trasformazioni obsolete. La schermata di modifica dei Media mostra le varianti esistenti senza generare i file mancanti e può eliminare e rigenerare esplicitamente ogni variante di sistema.

SVG e i formati raster non supportati utilizzano in sicurezza il proprio URL pubblico originale. I file originali non vengono mai sovrascritti. I file di trasformazione derivati non sono contenuti editoriali indipendenti e possono essere rigenerati dopo un trasferimento o un ripristino.

Flusso di lavoro editoriale

I media immagine mettono a disposizione un selettore del punto focale nella schermata di modifica dei Media. La posizione X/Y normalizzata selezionata guida le varianti di ritaglio, come miniatura, scheda, hero e social. Le varianti di contenimento mantengono le proporzioni originali.

La stessa schermata mostra l'anteprima di ogni variante di sistema. I selettori dei media usano la variante miniatura, mentre il blocco Immagine pubblico emette candidati srcset responsive a caricamento differito dalle varianti di contenimento.

Le varianti di contenimento mantengono le proporzioni e usano direttamente l'originale quando questo non è già più largo della variante richiesta. Le varianti di ritaglio calcolano un ritaglio della sorgente con le proporzioni configurate attorno al punto focale. Gli originali piccoli non vengono mai ingranditi: il rapporto di output configurato viene ridotto uniformemente per adattarsi alla sorgente, quindi ritagliato senza distorsioni.

Il markup di Immagine responsive e Galleria usa le dimensioni misurate del risultato, ordina i candidati per larghezza effettiva, rimuove gli URL duplicati e omette srcset a meno che non rimangano almeno due candidati distinti. Il valore sizes della Galleria segue il numero di colonne configurato. Le immagini social della pagina o del sito usano il ritaglio social per i metadati Open Graph e Twitter. card e hero rimangono riservati perché il pacchetto attuale non dispone di un campo della Libreria multimediale di prima classe per tali ruoli dei blocchi.

Requisiti di archiviazione e runtime

Le trasformazioni usano PHP GD e i dischi del filesystem Laravel. La generazione di JPEG, PNG e WebP dipende dal codec GD corrispondente. Se il formato sorgente o il codec di runtime non è disponibile, il rendering pubblico ripiega sull'URL del media originale invece di non riuscire.

Il canale alfa PNG viene mantenuto. Gli errori di decodifica, ridimensionamento, codifica e archiviazione rimuovono l'output incompleto e attivano un ripiego sicuro. ext-gd rimane facoltativo nella sezione suggest di Composer.

Gli operatori possono rigenerare tutte le immagini idonee in batch limitati, scegliere come destinazione un singolo id o eliminare in sicurezza le directory delle impronte obsolete senza alterare gli originali o le trasformazioni correnti:

php artisan webblocks:media-variants:regenerate
php artisan webblocks:media-variants:regenerate --media=123
php artisan webblocks:media-variants:regenerate --prune

La generazione è sincrona e intenzionalmente non richiede una coda. Le librerie di grandi dimensioni devono essere rigenerate durante una finestra di manutenzione.