logo yiipress

Yii Press - Cms per Sviluppatori Yii


Da sviluppatore Yii ho deciso di sviluppare un Cms elastico, facilmente implementabile per sviluppatori che fanno uso del noto Yii framework.
Data la nativa predisposizione di Yii nel creare codice dinamico molto potente tramite l'uso di classi widget, ho pensato di poter sfruttare queste importanti caratteristiche del framework per poter appunto sviluppare questo Cms,  che a mio avviso potrebbe essere utile per gli sviluppatori nella creazione dei frontend di grosse piattaforme.

Innanzitutto spieghiamo cosa è yii framework.  E' un fmw php, modellato secondo il patter mvc per la creazioni di grossi portali e applicazioni web.

Che Cosa è MVC?

Mvc sta per Model View Control. Questo modello di architettura del software prevede la separazione ottimale del codice di markup html che rappresenta l'interfaccia grafica(view) dai processi logici (controller), fino all'interfacciamento del modello dei dati(model).

L'implemetazione di questo modello è usato sia lato server sia lato client.

Lato Server

Alcuni esempi molto noti sono:

Php: Symfony, Laravel, Zend, CakePhp,CodeIgniter, Yii framework, phalcon...

Python: Django,TurboGears,PyIons,Web2py,Zope...

Java:Spring, Jsf...

Ruby: Ruby on Rails.

Asp,C#...: .NET.

                                                                      

Lato Client

Con lo sviluppo delle RIA (Rich Internet Application) e con l'evoluzione di javascript e le sue tecnologie come le chiamate asincorne di AJAX, le applicazioni web sono sempre più diventate simili ad applicazione desktop tanto che molti sviluppatori del Frontend hanno cominciato a sfruttare queste capacità di javascript per sviluppare framework con architetturra MVC . Backbone, AngularJs, ReactJs, Ember sono alcuni esempi di questo filone. 

Il modello Mvc segue lo schema mostrato nel diagramma nella figura di cui sopra.

View:

Ossia il L'interfaccia utente è creata dalle views(viste), che spesso si dividono in layouts e views che si integrano tra di loro per creare l'interfaccia: i layouts rappresentano la struttura di un'interfaccia utente che spesso nelle applicazioni è sempre fissa, e generalmente porta menu e barre di navigazione dell'applicazione stessa, oltre alle informazioni dell'utente. Le views sono in genere quella parte dinamica che si integra nel layout. Queste interfacce hanno il dovere di permettere l'interazione con l'utente e il recupero dati dello stesso, i cui dati vengono elaborati dal controller con le sue azioni(actions).

Controller:

Elabora le informazioni provenienti dall'utente e trasferisce l'outuput o ad altre view o al model per l'archiviazione, validazione o rappresentazione dati.

Model:

Il model si occupa dell'interazione dei dati inseriti negli archivi, database etc. Con accesso in lettura e scrittura degli stessi.

Questo modello permette quindi di separare il codice riguante l'interfaccia grafica(view) dal codice dell'applicazione(logica di business) deputata al model e al controller.

Yii Press:

E' un Cms progettato da me per implementare in modo semplice pagine web sia statiche che dinamiche sfruttando le capacità nativa del framework Yii che si presta in modo quasi naturale ad una separazione logica del codice tramite i widgets(da  non confondere con i widgets di wordpress).
In Yii,  i widgets rappresentano una vera classe in grado di separare totalmente il codice relativo ad un elemento con i suoi assets dal resto dell'interfaccia.
Sfruttando questa caratteristica e  quella dei moduli, perchè questo cms è implementato come un modulo a se stante su Yii framework, ho implementato anche la possibilità di caricare plugin,layout e view in modo abbastanza facile, un po' come fa wordpress o joomla con gli archivi (.zip). Questi ultimi possono essere attivati e disattivati con un sistema di attivazione degli eventi, simili agli hook di wordpress, eventi che già sono implementati nella classi del framework nativamente e che permettono a differenza di wordpress di seguire la stessa logica di sviluppo di un'applicazione yii, estremamente elegante nella sua architettura MVC, piuttosto che vedere spesso quello spaghetti code dei temi wordpress, a volte complicati nella lettura. Ovvio che non sarà mai un prodotto per dummy ma per programmatori Yii, poi se qualcuno vorrà implementarlo così tanto per farlo diventare un Cms user friendly con tutti i WYSIWYG tools tipici dei più popolari e grandi Cms del pianeta, faccia pure.  Il motivo principale  per il quale ho deciso di crearlo, è quello di gestire i frontend delle applicazioni che svilupperò in yii, e permettere anche ad altri sviluppatori di potere fare lo stesso, secondo i propri gusti, al momento che lo rilascerò in open source non appena possibile su github. 
Esistono tanti Cms creati con questo framework e altri con laravel, symphony etc, tutti abbastanza validi, il fatto di averne creato uno da me stesso, molto semplice, è appunto per far sì che chiunque possa modificare o o implementare  questo progetto nel modo che più si aggrada ai propri gusti e metodiche di sviluppo. Ogni sviluppatore ha il suo modo quasi unico di fare le cose, di creare le proprie mappe mentali, di sviluppare il proprio codice, o la propria applicazione,  per cui ognuno, messo e premesso che debba seguire comunque degli standard,  ha il suo modo di architettare  e seguire il suo proprio stile. La programmazione, il design, lo sviluppo web sono arte, e seguire la propria vena creativa, in un mondo cosi piatto, omologato, dove tutti tendono a fare le stesse cose,  a mio modo di vedere non è una cosa del tutto negativa.

schermata yiipress