-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
test con italystrap-beta4 #13
Comments
Ciao @AndrGelmini
Non esiste un livello minimo per poter dare il proprio contributo :-) anche il tuo è prezioso. Quindi andiamo avanti punto per punto:
La versione 4 è una breaking change questo significa che per molte funzionalità non c'è retrocompatibilità quindi nel tema figlio bisogna rivedere tutto il codice.
Nelle prossime versioni non servirà più github updater, dava troppi problemi
Se intendi il css il funzionamento è molto semplice, style.css non va mai usato, custom.css è la fallback (se non ci sono altri file viene usato questo), puoi personalizzare i css chiamandoli con il nome del file template in cui verrà caricato, per esempio single,css verrà caricato solo negli articoli che utilizzano single.php.
Anche i font devono essere presenti nel tema figlio se no non verranno caricati. Lo scopo è quello che il tema genitore deve dare le funzionalità e il tema figlio si deve occupare della parte grafica. La 4 stabile non supporterà più glyphicon, potrai usare fontawesome al suo posto. Verrà anche migliorato il supporto al customizer che ora ancora ad uno stato embrionale. Grazie ancora per il feedback. |
Grazie per la celere risposta. Attendo la versione definitiva per fare delle prove.. ora credo che sia troppo presto.. :-D E' successa una cosa strana... Al momento dell'installazione da zero sembrava non fare fallback.. facendo delle prove togliendo il frammento di codice riportata come rispsota, il sito si vede in modo perfertto. La cosa mi sembra molto strana... Comunque rimango in attesa della versione stabile. |
Non è mai troppo presto per fare prove, è proprio con la versione beta che si fanni i test :-D Per la stabile ci vorrà ancora del tempo che non so quantificare. La cosa più importante sarà il motore per il rendering dei vari file di template e la struttura dei file stessi, i file li trovi nella cartella |
La cartella template la trovo molto ben strutturata. Quella di dividere il tema in parti la ho adottata nel mio piccolo con i template personalizzati che ho creato con la 3.5 per il sito che gestisco, per gestire vari CPT come landing page pagine preventivo ecc ecc. Aspetto che trovo bucolico e poco comprensibile è per lo più la struttura, nel generale, della cartella italistrap. Credo sia dovuto al fatto che io non sono te' e sicuramente i file e le cartelle presenti sono li per il processo di programmazione e che la maggior parte di esse/i non saranno presenti nella cartella definitiva, al momento del rilascio della versione stabile. Ma al momento mi rende difficile capire la logica dei file in generale e dove andare a vedere come funziona una determinata funzione o processo. Piccolo appunto/richiesta: Apprezzo il fatto che hai inserito dei bei post-meta nell'editor di pagina (testavo la personalizzazione della home). Però ti vorrei chiedere se fosse possibile mettere un "interruttore" in una pagina del plugin o del tema in modo da poter togliere tutte o alcune di quelle metabox. Ti chiedo questo perché con ACF ho creato delle opzioni che fanno pressoché le stesse cose. (questo è il mio caso. Ma in ottica più generale potrebbero esserci persone che le vogliono e altre che le vogliono e magari non scelgono is perché lo reputano troppo complicato e troppo laborioso). Forse piccolo bug: Come ti ho detto impostato il menu su fixedtop il tag body non dà il giusto margin-top. In fase di test del composer ho notato che il box per il custom css non funziona e non salva le modifiche al css, per impostare il margin-top a 50px sono dovuto andare nella sezione apposita di italistrap plugin. (potevo farlo tramite file custom.css lo so... ma sto testando tutte le varie opzioni). Mi togli una/due curiosità? Ma tutti i PS: ho notato che l'area di supporto e forum sul sito non funzionano o meglio i bottoni riportano a /# se ti serve una mano conta pure su di me. a tal proposito averi un file per gestire la condivisione che ti vorrei far vedere magari potresti implementarlo. |
Ovviamente mi sono accorto di aver scritto il nome sbagliato per i templates, la cartella giusta è appunto
La struttura delle cartelle non è ancora quella definitiva, in futuro sarà cosi: Poi sto valutando le altre ma sarà comunque tutto documentato.
Il tema sarà tutto configurabile tramite in file apposito, anche l'utilizzo delle metabox potrà essere gestito così.
Il problema te lo da solo da loggato o anche da sloggato?
Questi sono gli hook di WordPress, qui c'è la guida ufficiale
Questa e altre funzionalità che non sono parte della grafica le ho spostate nel plugin, alcune di esse (come gli OG e TC) sono in una cartella temporanea perché devo valutare in futuro se conviene o meno reinserirle.
Si, per ora sono disattivati perché ancora in sviluppo come anche lo shop, entro un mesetto dovrebbero essere attivi (tempo permettendo), invierò una newsletter quando pronti.
Spiegami meglio di cosa si tratta. |
Ciao @AndrGelmini |
Buonasera, Grazie |
Ciao @lupett Come ho spiego anche sopra la struttura è molto semplice per js e css, il file Non sei obbligato ad usare Bootstrap, puoi caricare anche il tuo personalizzato. Mi sa che inserirò nella prossima versione un alert dove indico questo, effetivamente è poco chiaro. |
Grazie @overclokk |
Ciao @overclokk scusa il ritardo.. Ma sono stato impegnato tra 730 e impegni fiscali... Ho provato ad aggiornare il tema da beta-3 a beta-4 ma mi restituisce questo problema.
[EDIT...] [Prima analisi] Se posso: Se posso fare un piccolo appunto.. credo che la struttura dei file che gestiscono le varie funzioni del tema sia un pò troppo frammentata cio mi porta un pò di confusione. |
@AndrGelmini colpa mia, dovevo caricare l'aggiornamento per il plugin vecchio con le indicazioni su come migrare e non l'ho ancora fatto, ad ogni modo si, ora il plugin ha un nuovo nome, è stato necessario per evitare confusione fra tema e plugin. structure.md non è completo ma già c'è un'idea di com'è la struttura dei file template (che in pratica sarebbero le view), questa divisione è pensata per rispettare la S nel principio S.O.L.I.D. e sto lavorando per rispettarle tutte dove possibile, in questo modo se devi modificare un elemento ora lo fai solo in un singolo file, col sistema standard di WordPress invece bisognava aprire tutti i file template e fare la modifica, per i child theme il lavoro così è ancora più semplice. Per i CPT (e per i file normali) ora si usa la funzione
Parli dei file template o funzioni e classi PHP? Non ti preoccupare per le tue tempistiche, grazie del tuo tempo. |
@overclokk per quando sarà disponibile una release stabile? Cambierai ancora tanto la struttura o rimarrà abbastanza simile? Mi piacerebbe usare il tema per un sito semplice che dovrò fare a breve ma non vorrei doverlo rivedere troppo nel prossimo futuro :) Grazie! |
Ciao @lupett per la versione stabile non ti so dare una data perché ogni implementazione di funzionalità ha bisogno di un periodo di test più o meno lungo ed essendo l'unico sviluppatore i tempi sono più lunghi che corti :-) In questa issue #12 puoi vedere quali sono le cose su cui sto lavorando prima di avere la versione stabile, considera che come struttura più o meno ci siamo ma devo ancora lavorarci molto. Ad ogni modo se intanto lo vuoi iniziare ad usare puoi sempre segnalarmi le cose che non vanno o che danno errore, ricevere feedback da più persone è sempre positivo :-) Ciao |
Ok, grazie, ti aggiorno se trovo qualcosa che non va :) |
Ciao Enea. Dopo qualche tempo di stop mi sono rimesso a lavorare e testare questo top tema, ho provato a compilare il tutto con npm, grunt, bower, composer e compagnia bella e devo dire che la cosa mi ha creato un po' di problemi soprattutto con un componente di gruntjs (l'utimo nella lista di grunt.js). (Quasi sicuramente le problematiche sono dovute a server, sto testando il tutto su host gratuito)
*/ function footer_menu() { Devo ammettere che adoro poter modificare il tema con hook di questo genere. Ho provato ad inserire una serie di widget aree (per il momento una sola) analizzando in un primo momento ho provato a copiare il file config/sidebars.php (tema padre) e a metterlo nella cartella config/ del tema figlio.. si dovrebbe sostituire a quello del padre ma la cosa non è avvenuta. risolto cosi (ma credo non sia una soluzione ottimale): `//ADD SIDEBAR. function sidebar() { Analizzando il sorgente di italystrap.com ho visto che il tema installato in home carica il file front-page.css mentre il mio anche se mi trovo in home carica custom.css Poi vorrei cercare di capire come funziona la gestione dei template /struttura di codice (mi rendo conto che è possibile modificare la qualunque con un hook) vorrei togliere i due sotto menu dalla info e social per intenderci. e non riesco a capire se sono aggiunti con un hook o sono codificati nel templare di pagina.
Poi se non è presente (non lo ho visto) ti chiedo cortesemente se aggiungi un filtro per la tag schema Detto tutto questo, la domanda se volessi creare un CPT con un template personalizzato come devo fare non capisco dove devono andare i file e che funzioni interpellare. |
Ciao Andrea e grazie per il tuo feedback,
Questo è un bug, ora apro una issue a riguardo
Non è presente come file template perché lo scopo era quello di usarlo come widget e non come template parziale, è comunque ancora in sviluppo avanzato, devo ancora decidere come sistemarlo.
Dal tema genitore non devi copiare nulla se non solo imitare la struttura dei file quando sarà definitiva, gli unici file che vengono sovrascritti sono i file di template (come è giusto che sia), i file del core del tema non possono essere sovrascritti in quel modo per evitare bug in caso di aggiornamento del tema stesso, se io per esempio aggiungo roba e tu non aggiorni i file rischi di avere errori PHP, quindi la regola principale è che il core si modifica solo tramite gli hook se presenti. Sto anche lavorando sulla struttura per il file config caricato nel child, che non è ancora disponibile, che consentirà di creare per ogni tema una configurazione personalizzata (che poi sarà possibile personalizzare ulteriormente dal customizer). Se hai bisogno di aggiungere sidebar manualmente lo puoi fare sfruttando l'hook
I file css seguono la logica dei file template principali, se nel tema c'è il template front-page.php allora verrà cercato il file front-page.css, nel caso non sia presente nella cartella allora verrà caricato il file custom.css (questo è il file che viene caricato come fallback).
I template nella root seguono lo standard dei template WordPress (single, page, archive ecc), ogni componente HTML della pagina invece è inserito in file parziali, questi parziali sono quasi tutti dentro la cartella I parziali sono inseriti nella pagina tramite i controller che si trovano nella cartella Attenzione però che i controller non sono ancora pronti, ho intenzione di fare un refactoring alla logica (non alla struttura) per semplificare il processo di elaborazione della vista (o parziale). Anche per la rimozione o il cambio di posizione di ogni vista ci sarà un metodo semplificato.
Se non aggiungi i menù non vengono caricati
Per Schema.org ci sarà un file di configurazione apposito in futuro.
Di base i CPT prendono i file standard quindi potenzialmente non devi fare nulla, funziona già tutto di default, nel caso tu debba personalizzare ulteriormente un file template per il CPT basta che segui le indicazioni di WordPress: archive-{CPT}.php Puoi copiare un file già presente e cambiargli nome. Fra le tante cose da fare ho già in programma anche un tutorial per gestire i CPT con alcune tecniche che ho sperimentato ultimamente. Ancora grazie per il tuo tempo. |
Grazie ancora Enea.
Si infatti è più comodo, effettivamente, ho risolto in questo modo... nel file
In questo modo pero ho aggiunto le zone alla fine dell'array in admin/widget sono mostrati alla fine. per ordinarli e aggiungere queste due parti dopo la sidebar-1 dovrei spezzare e lavorare sull'array... Piccolo dubbio (più che altro legato alle prestazioni).. per aggiungere la sidebar top e bottom credi che sia meglio creare i file sidebar-top.php e sidebar-bottom.php e poi hookarli o gestire l'output tramite funzione e hookare quella nella giusta posizione? E se il modo migliore per farlo fosse il primo dovrei poi creare in tema-child/src (o altra posizione) un file come italystrap/src/Custom/Sidebars/Sidebars.php
Il problema è che il file front-page.php lo copiato dal genitore e l'ho inserito nella cartella figlio. (ma da quanto detto non devo copiare nulla dal genitore.. giusto?) a questo punto credo che il problema che sto per segnalare credo sia dovuto a questo motivo. Perché sto cercando di rimuovere il menu "secondario" info e social solo dalla pagina principale ma ho notato che se nel file lib/bootstrap.php inserisco questo codice, qui sotto, senza associarlo ad un hook l'echo funziona ma le funzioni mi danno null, mentre se lo inserisco tramite hook la funzione is_front_page() mi da 1 la home mi da null .
Ho effettuato un altro test questa volta non usando le condizioni ho provato a rimuovere l'azione Navbar_Top in tutto il sito come segnalato nella guida su italystrap.com ho inserito sempre in bootstrap.php questo codice ma non succedere nulla
L'ho sò, che come mi hai detto, se non carico elementi nei menù info e social non vengono visualizzati ma credo che possano essere utili magari da qualche altra parte del sito e volevo solo rimuoverli dalla home. Poi sempre in lib/bootstrap.php ci sono delle righe commentate, giusto per scrupolo le ho scommentate tranne quella riferita alla cartella vendor, bene tutte e due mi davano errore in quanto a detta del server mancava uno / dopo STYLESHEETPATH. Ora non so' se è un errore dovuto al server o riconducibile alla versione di php (ricordo che è la 5.6). Lo segnalo giusto per segnalarlo. Per il momento è tutto, ma sto continuando a smanettarci... |
Grazie a te :-)
Se vuoi inserire uno o più elementi puoi usare la funzione Però non ho capito perché vuoi aggiungere una sidebar sopra e sotto la sidebar, non riesci con solo i widget? (Ora mi segno di migliorare il generatore di sidebar in modo da dichiarare meno elementi nell'array, tanto a meno di non dover fare strutture particolari molti elementi sono ripetuti e questo no va bene.)
Per le prestazioni ci deve essere un compromesso tra manutenibilità e velocità e le micro-ottimizzazioni non sempre consentono una buona manutenibilità del software, ad ogni modo qui parliamo di micro-secondi.
Si, separa sempre la vista dalla logica e mantieni maggiore specificità possibile per ogni singolo file, il nome del file potrebbe essere l'ID della sidebar (solo per avere coerenza). I file vista (o template part) vanno inseriti nella cartella template, le classi nella cartella src. Non è ancora pronto al 100% il sistema per gestire le viste quindi al momento è ok usare una funzione. Le funzioni le puoi raggruppare per scopo (tutte quelle che gestiscono le viste insieme in un file).
No, questo file è solo per generare le sidebar e non per stamparle.
Se non hai bisogno di applicare modifiche particolari (per esempio filtrare un elemento solo in quella tipologia di pagina) allora non copiare i file dal genitore, meno roba hai nel child meglio è.
È normale, ti danno
Per poter rimuovere un filtro o azione registrato tramite un oggetto devi avere l'istanza di quel'oggetto altrimenti non puoi rimuovere nulla, quella come dicevo sora è una parte che al momento non è pronta.
Se hai bisogno di inserire menù di quel tipo in altre posizioni del tema non hai bisogno di quei due.
Generalmente tutto ciò che è commentato non andrebbe decommentato proprio per evitare errori di quel tipo. |
Mi sono spiegato male.. volevo inserire un area-widget sopra il contente e uno sotto il content. tramite hook ho risolto in questo modo:
Si infatti credo che farò cosi.. anche perché sto litigando con la cartella src. Non credo di aver capito molto bene il procedimento... ma credo che sia dovuto al fatto che il sistema di visualizzazione, come hai detto tu non è ancora al 100% Dunque ho provato, per il momento, a fare due cose:
In sintesi ho creato in tema figlio/templates/misc/ il file widget-area-top.php con dentro le specifiche grafiche del caso. Poi come mi hai detto tu mi sono concentrato sulla logica della visualizzazione e ho creato la cartella tema figlio/src/Controllers/Sidebars all'interno ci ho inserito questo file widget-area-top.php
Come mi immaginavo il file non veniva caricato e allora ho provato a richiamarlo in lib/boostrap.php ma mi ha generato un errore (credo dovuto ai name space).. per comodità ho gestito tutto in lib/boostrap.php tramite hook..
Visto che voglio fare l'esoso ho modificato anche tutti i nomi dei do_action aggiungendo "_preventivi" alla fine ogni gancio (ovviamente consapevole che il risultato finale sarebbe stata una pagina bianca). Ma con la stessa logica delle aree-widget mi sono messo a smanettare con la cartella templates e con la cartella scr.
Anche in questo caso il file non sembra caricato in alcun modo come accadeva in precedenza. A tal proposito mi sentirei di dire... non è troppo? cioè nel senso, immagino che non tutti debbano creare un custom template per pagine, blog, landing page, preventivi e altro ancora. magari con menu diversi o togliendoli proprio e/o modificando in toto il modello magari aggiungendo custom field.. Però forse la vedo io troppo complicata abituato come sono con la 3.5 che tutti questi hook non li aveva. |
Parto prima dall'ultima parte del tuo commento e poi continuo dall'inizio:
Inizialmente può sembrare complesso, questo è vero, ma lo scopo è quello di ottimizzare la manutenzione poi. Considera anche che siamo ancora alla beta e alcune parti sono in fase di test, i controller sono appunto un test per valutare quale sia la migliore strategia per avere un framework robusto a manutenibile. I controller stessi cambieranno nelle prossime release proprio per avere un sistema che sia anche il più semplice possibile. Ora ricomincio a ripsondere partendo dall'inizio:
Le aree widget è possibile inserirle dinamicamente senza scrivere codice, vai in Aspetto > Widget Areas e crei una nuova area widget che puoi posizionare dove vuoi usando il menù a tendina che trovi nella pagina di configurazione, in futuro è prevista anche la possibilità di scegliere il template personalizzato. Se invece vuoi inserire un tuo template allora puoi farlo usando tranquillamente una funzione come hai fatto inizialmente senza usare i controller, in un child theme va benissimo anche quello, quando saranno definitivi scriverò anche la documentazione per i controller, scriverla ora che non sono pronti è presto. Per i CPT però quello che mi serve sapere è cosa vuoi fare esattamente perché non ho ben capito quale risultato ti aspetti, se mi spieghi meglio riesco a dirti come farei io. PS: Eventuali template per le widget area meglio metterli nella cartella sidebars più che altro per mantenere coerenza con WP (se non c'è creala pure nel tuo child perché sarà disponibile in futuro). |
Ciao Enea scusa il ritardo nella risposta..
Non vedo l'ora che ci sia una versione stabile.. per il momento mi limito a fare test di personalizzazione attraverso i ganci e devo dire che mi trovo bene (anche se sarà sicuramente meglio quando saranno documentati)...
Non capisco.. Mi spieghi che cosa intendi tu per area widget perché io intendo il contenitore dei widget (sidebar) al momento dell'installazione hai le barra laterale e i 3 footer.. io volevo aggiungere un contenitore di widget agganciato al before e after content.
Dunque su un progetto sul quale ho installato la 3.5 per la gestione di alcuni contenuti quali:
ho usato sia dei CPT che custom template. Un altro esempio potrebbe essere quello delle langin page (un CPT) dove il contenuto di tutta pagina è generato da una serie di castom filed code per header, footer, content, css e js. Proprio in questi giorni sto impazzendo dietro a un'altra implementazione che sto cercando di ricreare sulla versione 4. Ho creato una (in verità di più, ma semplifichiamo) tassonomia personalizzata associata agli utenti del sito. Tutto abbastanza semplice, se non fosse che in qualunque modo io provi a visualizzare il loop della tassonomia mi viene fuori che il contenuto non esiste. Diciamo che tutte le miei paturnie possono essere bypassate sovrascrivendo i file o aggiungendone dei nuovi con rispettivi loop.. quello che mi spiace è che cosi si andrebbe a perdere la logica/struttura ma anche il lavoro che ci stai mettendo per la implementarla.. Quindi mi chiedevo quale è il modo migliore per modificare il loop o aggiungerne degli altri per i cpt e i custom template. |
Ciao Andrea, ho preso qualche giorno di pausa :-)
Se hai attivato la versione beta nelle impostazioni di ACM sotto la voce Widget c'è da mettere la spunta su "Widget Areas" che to attiva una nuova voce sotto Aspetto > Widget Areas, qui puoi creare tutte le widget area che vuoi e posizionarle dove vuoi e personalizzarne il contenuto. Le sidebar che vedi sono li per retrocompatibilità.
In questo specifico caso devo vedere il codice e forse è meglio discuterne in un altro ticket.
Guarda, il bello di avere retrocompatibilità è quello che tu puoi anche usare il sistema standard di WordPress, ovvero, potenzialmente puoi anche usare i file template dei temi 20xx che funzionano lo stesso, non mi offendo se li usi :-), il problema è solo per una eventuale manutenzione, in un tema WP se devi modificare l'H1 della headline lo devi fare per n° file template, nel mio lo fai solo una volta ma questo non ti vieta di usare lo standard WP se ne hai bisogno, anzi, ci possono essere casi in cui è più conveniente. In futuro ci sarà anche Gutenberg che semplificherà certi processi e ovviamente sto lavorando anche per renderlo pronto per la 5.0 di WP. |
Ora tutto chiaro. Ho provato a crearne una chiamata Test Home PostHeader. Però non viene visualizzata nel pannello di controllo nella sezione aspetto->widget. Ma credo che li debba inserire io con un l'hook giusto? nel caso che cosa uso lo slug? oh mi sto perdendo in qualche altro bicchiere d'acqua. che ps. credo sia la stessa ragione per la quale non vedo gli shortcode generati con ACM (ma ora ti apro un ticket anche su quello) perché sto cercando di spostare alcune implementazioni che avevo fatto direttamente sul tema child in un plugin e per farlo ho preso spunto da ACM su come gestire le varie classi ma mi sono accorto che, appunto ACM dovrebbe registrare su 'after_setup_theme' degli shortcode con delle ui ma non vedo nulla e quando li provo a inserire in post non funzionano. ma ne parliamo dall'altra parte.
Molto volentieri. Per crearla mi sono basato su questo articolo http://justintadlock.com/archives/2011/10/20/custom-user-taxonomies-in-wordpress con qualche modifica fatta con CMB2
Come al solito ci sbatto la testa un po' e poi capisco che bisogna solo rimuovere l'azione dall'hook e poi rimettere il tutto e poi rimettere il tutto. Nel caso di CPT almeno. nel caso delle user Tax non essendo un post o una pagina o una categoria "normale" wp non la gestisce proprio nel migliore dei modi e quindi bisogna riscrivere il tutto... |
Ciao Enea come va'? Credo di aver trovato un errore di programazione che riguarda i supporti ai post pagine ecc ecc Ho risolto passando da
a questo.
|
Ciao @AndrGelmini per tutti gli eventuali bug meglio aprire una issue dedicata dove si spiega come poso replicarla io in ambiente di test se no si va off-topic, grazie :-) |
Ciao segnalo di seguito la mia esperienza con questa versione (Beta-4), lo so' che è in beta ma forse ti può essere di aiuto. Spero che l'esperienza di un neofito-(ma non cosi tanto) possa essere utile a rendere IS utilizzabile anche da persone non troppo esperte.
Dunque iniziamo con le considerazioni:
Per quanto riguarda l'ugrade:
Ho seguito la guida del readme ma sembra che il tema figlio non faccia il callback al tema padre (o vice versa). --ho effettuato il downgrade--.
Per quanto riguarda l'installazione 'vergine'.
Ho effettuato l'installazione, e TGM mi segnalava di installare sia Github updater che ItalyStrap plugin, il primo non mi ha dato problemi il secondo al download mi diceva che non è presente sui repo di wp per ovviare a ciò ho scaricato e installato la versione che è presente sul sito del progetto (http://italystrap.com/).
Installato il tema padre e il tema figlio (scaricati dal sito del progetto) e attivato il secondo. anche in questo caso non sembrava effettuare il callback sui file del tema padre.
Ho risolto il problema del callback in questo modo (anche se non credo sia la soluzione migliore).
Ora ho il problema che le icone glyphicon non si vedono.
Per il resto sembra funzionare bene.
Smanettando e testando impostazioni qui e là, ho notato che nella sezione "personalizza" quando vado a impostare il template del menu principale su fixedtop il margin-top del tag body non aumenta con la conseguenza che parte del contenuto è nascosto. (cosa che forse è voluta e/o demandata alla personalizzazione del css da parte dell'utente/programmatore).
Non vedo l'ora che la versione 4 stabile sia pronta all'uso per smanettarci un pochetto e aggiornare il mio tema personalizzato.
The text was updated successfully, but these errors were encountered: