The Dark Side of .NET

Il lato oscuro della forza!

August 2011 - Post

Creare un modulo per Orchard: preparare l’ambiente di sviluppo

Come già detto più volte Orchard è un CMS che fa della modularità il suo punto di forza, con una gallery ormai già molto nutrita che vi permette di risolvere quasi tutti i casi di sviluppo reale che vi possono capitare. Ma se nella gallery non c’è il modulo che vi serve? Se siete dei DEV .NET, niente paura, anzi: è arrivato il momento di scaricare i sorgenti di Orchard da Codeplex e avviare il vostro fido Visual Studio 2010!

image

Una volta scaricato il pacchetto zip, decomprimetelo in una cartella a vostro piacimento e nella sottocartella src fate doppio click sulla Microsoft Visual Studio Solution chiamata Orchard:

image

Chiudendo un po’ di rami della soluzione, il solution explorer vi presenterà la seguente struttura, con la quale familiarizzeremo nel corso di questi articoli:

image

Come avremo modo di approfondire analizzando l’architettura interna di questo CMS, i principali componenti della soluzione sono la Core Library, che implementa le funzionalità base del sistema, e il Framework di Orchard che, utilizzando le funzionalità della Core Library, offre servizi di base ai moduli che troverete nella cartella Modules. 

Compiliamo e lanciamo la soluzione per assicurarci che tutto funzioni, dopodichè creiamo un sito di test per la realizzazione del nostro modulo, utilizzando come recipe di creazione del sito proprio ilCore, in modo da avere un ambiente con il minimo indispensabile per poter lavorare.

image

Questo template crea un ambiente davvero minimale, che è perfetto per testare i nostri moduli:

image

L’ambiente core così creato installa automaticamente il modulo Code Generation, già usato in passato per generare i temi, e che ci permette anche di generare un modulo vuoto per Orchard in modo da non dover partire proprio da zero. Ci basta avviare la console di Orchard che troviamo nella cartella bin del web project (Orchard.Web) facendo doppio click sull’application di nome Orchard:

image

Il modulo è installato ma non attivato, per attivarlo ci basta digitare il comando

feature enable Orchard.CodeGeneration

se tutto va a buon fine la console ci risponde con il messaggio Code Generation was enabled:

image

Volendo potevamo attivare il modulo anche dalla dashboard, così come tutti gli altri moduli di Orchard. Una volta attivato il modulo di generazione del codice ci basta richiamarlo con il seguente comando:

codegen module CommunityEventManager

dove CommunityEventManager è il nome che vogliamo dare al nostro modulo. Il messaggio Module CommunityEventManager created successfully ci notificherà la corretta esecuzione del comando:

image

Il modulo, oltre ad essere creato, viene automaticamente aggiunto alla nostra solution, infatti passando a Visual Studio l’ambiente ci chiede se vogliamo ricaricare la solution, in quanto è stata modificata al di fuori dell’ambiente:

image

Una volta ricaricata la soluzione, nella cartella Modules troveremo il nostro modulo:

image

Siamo quindi pronti a scrivere il codice necessario a implementare il nostro modulo, ma prima abbiamo bisogno di analizzare un po’ più del dettaglio come Orchard funziona dietro le quinte e quali tecnologie usa, cosa che faremo nei prossimo post.

--Michele

Orchard: categorizzare contenuti con le tassonomie

Rifacendo il sito di DotNetCampania utilizzando Orchard ci siamo scontrati con l’esigenza di categorizzare i contenuti che pubblichiamo, ad esempio gli articoli, per i quali abbiamo creato un apposito Content Type.

image

Il modo più indicato per ottenere questo risultato è sicuramente l’uso del modulo Taxonomies, installabile direttamente dalla gallery di moudli raggiungibile dalla dashboard:

image

Come tutti i moduli di Orchard ricordatevi che va attivato:

image

Come potete leggere sulla pagina codeplex del modulo, una tassonomia è un insieme gerarchico di termini che serve a classificare contenuti. L’installazione del modulo comporterà l’installazione di un nuovo Field, denominato TaxonomyField, da aggiungere ai Content Type che vogliamo classificare, e una widget, chiamata Taxonomy Widget, che ci servirà a mostrare all’utente la gerarchia dei termini che classificano i nostri contenuti.

Dal menu principale della Dashboard possiamo adesso creare le nostre tassonomie cliccando sulla voce Taxonomies e successivamente sul pulsante Add a taxonomy. A questo punto non dobbiamo far altro che dare un nome alla tassonomia:

image

Una volta creata la tassonomia possiamo aggiungere dei termini al suo vocabolario, organizzandoli, volendo, anche gerarchicamente. Nel nostro caso abbiamo creato alcune categorie per gli articoli:

image

Dopo il primo termine del vocabolario, al fine di permettere l’organizzazione gerarchica degli elementi, l’aggiunta di un nuovo termine è preceduta dalla scelta del termine padre, che può chiaramente essere lasciato anche vuoto:

image

A questo punto non ci resta che aggiungere al nostro content type Article un field di tipo TaxonomyField, che chiameremo Categorie.

image

Possiamo indicare quale tassonomia usare tra quelle presenti , se restringere ai nodi figli la selezionalibità dei termini e se permettere un solo elemento del vocaboalario per articolo:

image

Modificando un qualsiasi articolo esistente o creandone uno nuovo possiamo adesso selezionare le categorie a cui associarlo:

image

Automaticamente la tassonomia sarà presente nella lista articoli del fronend:

image

Tornando alla dashboard possiamo aggiungere una widget da cui selezionare le categorie di articoli. Clicchiamo su Widgets, aggiungiamo un layer per gli articoli in modo da aggiungere la widget solo alla pagina con l’url ‘~/articoli’  e clicchiamo sul pulsante Add della sezione AsideFirst per mostrare la widget nella colonna sinistra della nostra pagina:

image

Scegliamo come tipologia di widget la Taxonomy Widget installata con il modulo Taxonomies:

image

E selezioniamo la tassonomia che ci interessa mostrare:

image

Ed ecco il risultato:

image

Peccato che cliccando su una delle categoria dalla widget o anche dai link presenti nella lista degli articoli otteniamo una pagina vuota:

image

Questo perchè di default Orchard non installa i moduli di indicizzazione dei contenuti, nella fattispecie l’implementazione disponibile dalla gallery è Lucene di cui parleremo in un apposito articolo. Ci basta quindi installare e attivare Lucene dalla Gallery e tornare al TaxonomyField creato nel content type Article per includere la tassomonia tra gli indici:

image

Ottenendo il risultato voluto:

image

Vi lascio con un link ad un video di Bertrand Le Roy, PM di Orchard, che mostra proprio come usare le tassonomie: http://www.youtube.com/watch?v=B3jhgTeiEtw&feature=player_embedded

-- Michele

Posted: 26 Aug 2011 12:41 da Michele Aponte | con 1 comment(s)
Inserito sotto: