# Sviluppo Divi Child
Attenzione
Questa parte della documentazione non rigurda l'uso di DiviChild in progetti relativi a siti web ma solo lo sviluppo vero e proprio del tema child.
# Grunt Tasks
Il Grunt task per lo sviluppo di nuove feature o correzioni di bug è il task di default:
grunt
Il task per la creazione di un nuovo pacchetto dist e relativo pacchetto di update è:
grunt dist
Il task dist creerà un nuovo dist/latest/divi-child_developer_package.zip e il pacchetto di update dist/latest/update_package/divi-child_update_package.zip
Hotel Addon
Per i task relativi all'Hotel Addon, vedi l'apposita sezione di questa pagina di documentazione.
# GIT e Pipelines
Per ogni implementazione seguire le seguenti regole:
- Creare un nuovo ramo apposito
- Sviluppare la nuova feature o correzione
- Indicare i cambiamenti apportati nel file
README.mdnella parte denominata Changes - Testare
- Fare merge del ramo di sviluppo con il master
- Eliminare il nuovo ramo
- Eseguire il deploy
# Deploy
Il deploy del progetto potrà essere eseguito semplicemente creando e pushando un nuovo tag con prefisso: release-, ad esempio release-5.0.0.
Eventuali versioni Alpha e Beta dovranno avere il suffisso a o b, ad esempio release-5.0.0a. Ovviamente è accettato anche il suffisso rc.
Attenzione
Il processo di deploy includerà anche i file relativi all'Hotel Addon.
Se hai gestito tutto correttamente questo non causerà alcun problema, però fai attenzione.
# Versioning Semantico
Per l'assegnazione del numero di versione, seguire le regole del versioning semantico (opens new window).
# PHP
Il file principale dellp sviluppo PHP è ovviamente il file functions.php. Qui sono incluse alcune funzioni base e tutti i file contentuti in altre posizioni del tema, come ad esempio la cartella /inlcudes/.
# Il file config.php
Il file /includes/core/config.php è il file di configurazione principale del tema. Questo file è di fatto overridabile durante lo sviluppo di progetti dal file /includes/config.php.
Per ogni parte di codice PHP che richiede attivazione e/o configurazione è necessario inserire in questo file i parametri necessari. I nuovi parametri devono essere inseriti nel file /includes/core/config.php e di conseguenza anche nel file /includes/config.php.
Attenzione
È importante inserire i parametri di configurazione nel file /includes/core/config.php in quanto questo file è incluso anche nel pacchetto di update.
Al contrario il file /includes/config.php non è incluso nel pacchetto di update, dato che altrimenti sovrascriverebbe le impostazioni del singolo progetto.
# Built-in functions
Tutte le built-in functions devono essere inserite nella cartella /includes/built-in-functions/.
Devono essere intese come built-in functions, tutte quelle parti di codice che estendono il funzionamento del tema child.
# Shortcodes
Gli shortcode del tema, contenuti in /includes/shortcodes/, sono una rimanenza del vecchio metodo di sviluppo delle versioni 3 e 4. Molti di questi shortcode sono comunque soggetti a parametri di configurazione.
Queste parti di codice dovranno pian piano essere eliminate o inserite all'interno delle built-in functions.
# Dipendenze Plugins
Le eventuali dipendenze di plugin WordPress di terze parti devono essere gestite attraverso la classe TGM-Plugin-Activation (già inclusa nel tema), utilizzando il file /includes/core/plugin_dependencies.php.
# Javascript
Lo sviluppo della parte Javascript deve tenere in considerazione che l'entry point dello sviluppo è di fatto il file /js/modules/divi-child.js. Questo perché è necessario lasciare che ogni progetto possa avere la sua parte custom che dovrà essere inserita a partire dal file /js/main-child-theme.js che non verrà dunque incluso nel pacchetto di update.
Tutti i file js del tema devono essere sviluppati e inclusi nel progetto come moduli e devono essere contenuti nella cartella /js/modules/.
# SCSS
I file SCSS del tema sono ovviamente quelli inclusi nella cartella scss del tema.
È importante non inserire codice del core nella cartella custom/ in quanto pensata per lo sviluppo custom dei singoli progetti e pertanto non inclusa nei pacchetti di update.
# 🏨 Hotel Addon
I file dell'addon per la gestione di siti per hotel sono contenuti in
/includes/hotel/
# Attenzione
Ricorda che questa parte del progetto è indipendente e non è inclusa nei task Grunt di dist.
Per l'esportazione di questa parte del progetto usa il task
grunt hotel
Versioning Hotel Addon
Il versioning di questa parte del progetto deve essere gestito in modo indipendente da segnare nell'apposito README.md contenuto nella cartella hotel.
Deploy Hotel Addon
Il deploy di questa parte di progetto deve essere gestito con l'apposito tag hotel-release-* seguendo le stesse regole del deploy del tema child.
😃 Questo deploy è indipendente e non influisce sul deploy del tema child 😃