Cos'è Drupal?

Drupal è un popolare sistema di gestione dei contenuti open source scritto in PHP. Creato nei primi anni 2000 da uno studente belga, ora fornisce alcuni dei siti Web più importanti del Web (WhiteHouse.gov, Weather.com, ecc.). È spesso considerato come un concorrente di CMS come WordPress e Joomla.

Una delle componenti più importanti del progetto Drupal è la sua comunità di sostenitori (contributori, sviluppatori, evangelisti, titolari di aziende, ecc.). Di spicco in questa comunità spicca l'Associazione Drupal, responsabile per "promuovere e sostenere il progetto di software Drupal, la comunità e la sua crescita".

Un balzo gigantesco del suo predecessore, l'ottava versione principale del progetto Drupal, è appena uscito dagli scaffali. Ha portato a una seria modernizzazione del suo codice, delle sue pratiche e della sua mentalità. Molti considerano questo spostamento un vero e proprio allontanamento dalla nozione tradizionale di CMS a più di un Content Management Struttura (CMF) che fornisce una grande piattaforma per la creazione di applicazioni complesse.

In questo articolo, ho intenzione di rispondere ad alcune delle domande più frequenti che le persone hanno su Drupal quando si avvia per la prima volta o se si pensa di farlo:

  • È giusto per me? A chi è rivolto?
  • Come può essere installato e dove posso ospitarlo?
  • Come posso iniziare a lavorarci come sviluppatore?
  • Che opzioni ho per estendere la funzionalità o per disegnarla?

Chi è Drupal Rivolto a?

Sin dall'inizio del progetto, Drupal si è evoluto dall'essere principalmente uno strumento per la costruzione di siti più piccoli a uno che ora può alimentare piattaforme di livello enterprise. Soprattutto con Drupal 8, i costruttori di siti e gli sviluppatori possono facilmente scalare da piccoli siti Web a piattaforme di grandi dimensioni con molte integrazioni. Ad esempio, l'adozione di Composer consente non solo di portare le librerie esterne in un progetto Drupal, ma anche di utilizzare Drupal come parte di un progetto più ampio di applicazioni e librerie. È sicuro dire che Drupal è abbastanza flessibile da soddisfare le esigenze di una vasta gamma di progetti.

Quando si tratta di sviluppo, Drupal ha sempre avuto una comunità relativamente chiusa, non perché le persone sono ostili, al contrario, ma principalmente a causa del codice che viene tipicamente scritto in modo Drupal (che si traduce in ciò che a volte viene definito Drupalisms). Ciò ha significato una curva di apprendimento per ogni sviluppatore che si avvia, ma anche un minore interesse da parte degli sviluppatori di altri progetti PHP per entrare e contribuire.

Questo non è più il caso. Soprattutto con il rilascio di Drupal 8, la comunità ora promuove una nuova mentalità di riusabilità del codice e migliori pratiche tra diversi progetti open source. La partecipazione attiva al PHP Framework Interoperability Group fa parte di questo sforzo e l'uso di numerosi componenti di Symfony in Drupal 8 core è una testimonianza di questo impegno. 

Con questa mossa, la comunità di Drupal è diventata più ricca accogliendo molti sviluppatori di altre comunità e progetti, e sicuramente crescerà ulteriormente. Quindi, se sei uno sviluppatore Laravel, guardare il codice Drupal non sarà più scoraggiante.

Come posso installare Drupal e dove posso ospitarlo?

Tradizionalmente, Drupal ha avuto un processo di installazione relativamente facile, in particolare per le persone che conoscevano almeno un ambiente Linux. Il progetto deve semplicemente essere inserito in una cartella che può essere eseguita dal server web (che deve utilizzare PHP e avere un database MySQL o MariaDB). Quindi puntare il browser su /install.php file e seguendo i passaggi si prende cura del resto. La schermata più importante che vedrai è quella in cui selezioni un database specifico da utilizzare.

In termini di requisiti, lo stack LAMP (Linux, Apache, MySQL e PHP) è sempre stato il preferito da Drupal per l'esecuzione. Tuttavia, non è in alcun modo limitato ad esso. Esistono soluzioni per installarlo direttamente su Windows o Mac (ad esempio utilizzando Acquia Dev Desktop) ma anche su un sistema Linux che esegue altri server Web.

L'approccio più semplice, se si utilizza la propria configurazione, è utilizzare un server LAMP per l'hosting. Per un po 'più di prestazioni puoi sostituire Apache con Nginx, ma dovrai occuparti di alcune configurazioni specifiche che altrimenti verranno gestite nel .htaccess file con Drupal.

Tuttavia, se non vuoi il fastidio di mantenere il tuo server di hosting, ci sono tre principali fornitori di hosting gestito Drupal specializzato: Acquia, Pantheon e Platform.sh. Questi forniscono anche un flusso di lavoro per aggiornamenti semplici e flusso di sviluppo. Passato questo, stai guardando hosting completamente gestito con una società di sviluppo Drupal.

Come posso iniziare a svilupparmi per questo?

Lo sviluppo di siti Web Drupal è in genere il tipo di cosa che ti è piaciuta molto o che non ti è piaciuta affatto. Questo perché quando sei stato introdotto per la prima volta su Drupal, hai riscontrato molte specificità che non hai visto in altri progetti. Quindi se quelli ti solleticavano la fantasia, l'amavi per sempre.

Scendendo da questo isola in Drupal 8, non è più così tanto. Ne hai ancora un sacco Drupalisms lasciato che puoi amare o odiare, ma ora hai anche componenti esterni come Symfony o Guzzle e, soprattutto, un modo più moderno di scrivere codice in generale (OOP, schemi di progettazione, componenti riutilizzabili, ecc.). Così le tue abilità PHP dalla creazione di siti web con Zend saranno utili.

Un buon modo per entrare nello sviluppo di Drupal è seguire alcuni corsi video online. Ci sono un paio di risorse che sono eccellenti per questo scopo, in particolare Drupalize.me. Se, tuttavia, il video non è il tuo mezzo preferito, ci sono anche molti tutorial e guide scritte disponibili per iniziare. Dai uno sguardo ai seguenti link per alcuni dei primi passi che puoi compiere:

  • Guide ufficiali allo sviluppo di Drupal
  • Il riferimento API Drupal
  • Guide allo sviluppo del modulo
  • Tutorial di Drupal Code di Envato

Dal momento che Drupal 8 è nuovo di zecca, troverete molto più contenuto di apprendimento per Drupal 7. Tuttavia, l'attenzione nella comunità si è recentemente spostata verso Drupal 8, quindi è possibile aspettarsi che sempre più risorse emergano. E se non hai esperienza con nessuna versione di Drupal, è meglio concentrarti esclusivamente su Drupal 8 in quanto i cambiamenti tra i due sono grandi e forse dovresti affrontare sfide inutili.

Come posso estendere Drupal?

Il punto di estensione principale di un'installazione Drupal di base è il suo modulo sistema. 

I moduli vengono utilizzati per incapsulare blocchi di funzionalità riutilizzabili che possono / dovrebbero funzionare su siti diversi. A parte i moduli principali, ci sono un gran numero di contributi, disponibili per l'installazione. 

Certo, la maggior parte sono ancora solo per Drupal 6 e 7, ma la community sta recuperando anche per la versione più recente. Questo problema è anche mitigato dall'incorporazione in Drupal 8 di alcuni popolari moduli contribuiti e dall'ampliamento dell'ambito di ciò che il core può fare fuori dalla scatola (rispetto a Drupal 7). 

Infine, i moduli personalizzati (quelli che scrivi tu stesso) sono il modo principale in cui puoi aggiungere qualsiasi funzionalità che desideri e che non è disponibile tramite un modulo fornito.

L'installazione di moduli ti consente di collegare varie funzionalità, ma non devi considerarlo come una luce verde per aggiungerne troppe. È sempre meglio attenersi a quelli di cui hai effettivamente bisogno e non aver paura di essere critico in questo senso. Puoi anche lavorare per trovare un buon equilibrio tra il codice fornito e quello personalizzato che scrivi tu stesso. 

Inoltre, dal momento che stiamo parlando di software open source, dovresti sempre valutare i moduli che installi. I seguenti indicatori sono buoni esempi a cui prestare attenzione: numero di download e utilizzo, frequenza di commit, engagement del manutentore, stato della coda di emissione.

E tenga anche a mente la sicurezza. Si consiglia vivamente di mantenere aggiornati sia il core Drupal sia eventuali moduli contribuiti in quanto ciò contribuirà in modo significativo a mantenere sicuri il sito e il server (anche se non lo garantisce).

Che dire di stile?

Il livello di stile di un sito Drupal è gestito (in gran parte) dal suo tema. I temi sono simili ai moduli in quanto sono un punto di estensione, ma hanno responsabilità diverse. Contengono gli stili, le librerie front-end e nella maggior parte dei casi i file modello utilizzati per l'output dei dati.

Ci sono stati grandi progressi in Drupal 8 rispetto alla versione precedente: il popolare motore Twig è stato adottato per i template, il tema è stato limitato ai file modello Twig, i modelli di debug e override sono stati resi molto più semplici, ecc. Simile ai progressi di esperienza di sviluppo back-end (DX), lo strato tematico è stato reso più attraente per il pubblico non Drupal. Gli sviluppatori front-end possono ora facilmente lavorare con i temi di Drupal senza dover comprendere i dettagli del back-end.

Il nucleo di Drupal ha una serie di temi che possono fornire esempi ma anche da cui puoi estendere. Ci sono anche temi contribuiti simili a come ci sono i moduli. I framework di front-end popolari come Bootstrap o Zurb Foundation hanno implementazioni di Drupal 7 per Drupal 7, che si stanno preparando anche per Drupal 8. Funzionano molto bene come temi di base ma anche per impalcature veloci di un sito Web e facendolo sembrare decente.

Sono disponibili anche temi a pagamento da provare. Di solito sono molto economici e veloci da installare. Il problema con loro è che valgono esattamente quanto si paga per loro e di solito hanno buchi nella loro flessibilità. Come principianti, questi temi possono sembrare un ottimo modo per creare un sito, e potrebbero anche esserlo. Tuttavia, man mano che avanzi, imparerai a evitarli e costruirai i tuoi, basandoti su design esterni o persino su modelli HTML / CSS / JS.

Conclusione

Drupal è un potente strumento per la creazione di siti Web e piattaforme di qualsiasi tipo. Con ogni nuova release principale, Drupal ha dimostrato un impegno a migliorare se stessa, diventare più robusta e flessibile e abbracciare anche le comunità esterne.