Blog multi-autore con Plone: una alternativa a Wordpress

Una soluzione light per la creazione di un blog multi-autore usando Plone.

Qualche giorno fa ci è arrivata la richiesta di creare una sezione blog sul sito videohifi: Openjournal!

In pratica una sezione aperta a tutti coloro che vogliono contribuire alle tematiche che girano attorno al mondo dell'HiFi (musica, arte, concerti, apparecchiatura, ecc.).

OpenJournal

La richiesta

Le richieste del cliente erano più o meno queste:

1. gli utenti che voglio iscriversi al Blog, inviano una richiesta con i loro dati via email all'amministrazione del sito;

2. l'amministratore, dopo aver verificato i dati del richiedente, registra l'utente e crea il Blog personale;

3. l'utente riceve le credenziali di accesso al proprio Blog e può iniziare a scrivere i propri Post;

4. creare una HomePage della sezione che raggruppasse in vari box i post in evidenza oppure

di un particolare argomento.

Vista l'entità delle richieste, abbiamo scelto un approccio "agile" che ci ha permesso di risolvere "rapidamente" le richieste, riscuotendo gli apprezzamenti del cliente.

La soluzione

Dopo una rapida valutazione abbiamo scartato l'uso dei vari prodotti di blog messi a disposizione dalla community Plone (vedi Quills, SimpleBlog, ecc.), per non impelagarci in override di viste oppure incastrarci in logiche più complesse del necessario.

Per quanto riguarda la richiesta di iscrizione, abbiamo risolto il problema creando una apposita form con PloneFormGen.

Form iscrizione

Per la creazione del Blog, la nostra soluzione si basa sulla definizione di due nuovi content-types, Blog e Post: ci siamo limitati a definire le due nuove rappresentazioni dei content-type nel registro portal_types ereditando da Folder per il Blog e da Document per il Post.

NB: in questo modo ci siamo risparmiati l'inutile definizione di due nuovi Archetypes.

Per la creazione della home page abbiamo scelto di "comporla" per pezzi sfruttando le potenzialità di:

Il sistema di categorizzazione

Per selezionare i Post da mettere "in evidenza" abbiamo adottato una soluzione che ci sembrava il miglior compromesso tra la rapidità di sviluppo e l'usabilità della funzionalità da implementare.

In pratica abbiamo creato un sistema di "marking" degli oggetti Post.

 

In evidenza

 

Attraverso il tab "Azioni" è possibile etichettare un Post come "in evidenza" oppure "post recente" applicando all'oggetto una particolare interfaccia:

    def add_interface(self):
        """add IFeaturedPost interface"""
        context = self.context

        alsoProvides(context, IFeaturedPost)
        context.plone_utils.addPortalMessage(_(u'IFeaturedPost set'))

        context.reindexObject()
        return self.request.response.redirect(context.absolute_url())

In maniera speculare possiamo rimuvere il Post dalla lista di quelli in evidenza: in questo caso viene rimossa la "marker interface" relativa dall'oggetto corrente:

    def remove_interface(self):
        """remove IFeaturedPost interface"""
        context = self.context

        noLongerProvides(context, IFeaturedPost)
        context.plone_utils.addPortalMessage(_(u'IFeaturedPost unset'))

        context.reindexObject()
        return self.request.response.redirect(context.absolute_url())

I Post così etichettati possono essere facilmente reperiti attraverso un cercatore (che effettua un filtro sull'indice "object_provides" del catalogo di Plone per la particolare marker interface) e visualizzati nei vari box della home.

Risultati

Con questa soluzione abbiamo creato un Blog multi-autore robusto e facile da usare, dando la possibilità al cliente di far partire subito il "recruiting" di nuovi autori.

Il Blog OpenJournal, ad oggi (dopo sole poche settimane dalla sua messa online), conta già 20 "bloggers" e 100 post pubblicati.

Share this on

Share |

On same topics

Commenti

comments powered by Disqus