lunedì 28 febbraio 2011

Joomla 1.6: permessi e utenti (ACL)

Fra le novità più importanti di Joomla 1.6 abbiamo la nuova gestione dei permessi e degli utenti, in gergo tecnico ACL (Access Control Levels); in pratica in Joomla è possibile dare permessi per leggere, creare, modificare e cancellare determinate pagine a utenti o gruppi di utenti, a seconda del ruolo che essi hanno all'interno del sito web.

ACL in Joomla 1.6: Panoramica

Joomla 1.6: permessi e utenti ACL

Utenti

Lo User rappresenta evidentemente l'utente del sito web. Notiamo che un utente non deve essere necessariamente registrato in quanto potrebbe essere un utente pubblico (semplice navigatore). Ogni utente può essere assegnato a uno o più gruppi.

Permessi di base

I permessi di base rappresentano le operazioni che possono essere effettuate e sono assegnati al gruppo, non ai singoli utenti. (Se volete assegnarli a un singolo utente, dovrete creare un gruppo per quel determinato utente).
Le autorizzazioni di base includono:
  • Login al sito: la possibilità di accedere al front end del sito.
  • Admin login: la possibilità di accedere al back end del sito.
  • Admin: privilegi amministrativi, come la possibilità di cambiare la configurazione globale.
  • Gestione: la possibilità di cambiare le impostazioni delle estensioni.
  • Creare: la possibilità di creare un nuovo contenuto.
  • Cancellare: la possibilità di eliminare un contenuto.
  • Modifica: la possibilità di modificare tutti i contenuti esistenti.
  • Modifica stato: la possibilità di cambiare stato tra pubblicato, non pubblicato, cestino.
Le autorizzazioni di base si impostano da Configurazione Globale cliccando nella tabella Permessi.

Gruppi

Un gruppo è un insieme di utenti che hanno gli stessi permessi. Prendendo per esempio i gruppi di Joomla 1.5, un utente del gruppo publisher si può loggare nel front end del sito, creare nuovi articoli, modificare quelli già esistenti, renderli pubblici o annullare la pubblicazione. Tutti gli utenti del gruppo publisher hanno gli stessi permessi.
In Joomla 1.6, un utente può essere assegnato a più gruppi, per esempio nel gruppo publisher e nel gruppo administrator.
Ogni gruppo può avere dei sotto-gruppi che a loro volta si possono suddividere ancora andando a creare una gerarchia ad albero ben precisa. In pratica ogni gruppo ha il suo padre ad eccezione del Gruppo Public che è il livello più generale da cui discendono tutti gli altri.
E' possibile assegnare le autorizzazioni di base ai gruppi creati. Osserviamo che le autorizzazioni di base vengono ereditate tra i gruppi nel senso che i figli avranno di default i permessi dei gruppi padri. Chiaramente sarà possibile modificare il comportamento andando in Configurazione Globale -> Permessi. Notiamo però che non potrete ad esempio attivare un permesso che è stato espressamente disabilitato nel gruppo padre perchè questo andrebbe contro la relazione di dipendenza creata.
Un utente non registrato sul sito viene considerato appartenente al gruppo Public che avrà i permessi più leggeri.
Il gruppo Public e il gruppo Registered non possono essere eliminati al contrario di tutti gli altri gruppi. (Comunque, vi consiglio di tenerli, perchè danno un buon modello su come funziona l'ereditarietà delle autorizzazioni).

Livelli d'accesso

I livelli d'accesso sono relativi a che cosa uno o più gruppi di utenti possono vedere, nel front end del sito web. In sostanza, sono le autorizzazioni di lettura sul front end del sito.
Storicamente ci sono stati tre livelli di accesso: public (tutti possono vedere i contenuti), registered (si deve accedere sul sito per vedere i contenuti), special (bisogna avere un livello author o superiore per vedere il contenuto).
Questi livelli di accesso sono ancora presenti in Joomla 1.6 come default, ma si possono creare dei livelli d'accesso personalizzati.
I livelli di accesso non ereditano i permessi. Se si imposta un articolo visibile solo dai publishers, anche i super admin non potranno vederlo. (Comunque, con i permessi di super admin, si potrà modificare l'articolo dal back end).

In un prossimo articolo cercheremo di mettere in pratica questi concetti in un esempio reale.
lunedì 21 febbraio 2011

Factory Method Design Pattern C#

Riprendiamo oggi il nostro viaggio tra i Design Pattern: dopo aver visto l'Abstract Factory introduciamo ora il Factory Method che può essere visto come un caso più semplice. Ecco un diagramma UML di esempio:

Factory Method

Struttura di un Factory Method
  • Product: definisce l'interfaccia dell'oggetto creato dal factory method.
  • ProductOne e ProductTwo: implementano l'interfaccia di Product rappresentando i casi concreti.
  • Framework: dichiara il factory method (in questo caso makeProduct) che restituisce un oggetto di tipo Product a prescindere dal tipo concreto di prodotto; il Framework può in alcuni casi definire un'implementazione del factory method che ritorna un oggetto di default.
  • ApplicationOne: ridefinisce il factory method per restituire un'istanza di ProductOne
  • ApplicationTwo: ridefinisce il factory method per restituire un'istanza di ProductTwo

La classe Framework si affida alle sue sottoclassi per quanto riguarda la definizione del factory method, cosicché esso ritorni un'istanza appropriata del Product.
Il codice client tratta solo con l'interfaccia e con nessuna classe concreta.
giovedì 20 gennaio 2011

Joomla SEO: il tag H1 per il titolo degli articoli

Nel post Joomla SEO tutorial avevo accennato all'importanza del tag H1 in ambito SEO; purtroppo sono pochi i template di Joomla (versione 1.5) che utilizzano il tag H1 per il titolo degli articoli e questo non ci aiuta a migliorare l'indicizzazione delle nostre pagine.

Fortunatamente è molto semplice modificare il template che stiamo usando in modo da soddisfare questa nostra esigenza. Basta semplicemente sovrascrivere (override) il rendering html del componente degli articoli. Se apriamo il seguente file:

  - components/com_content/views/article/tmpl/default.php 

possiamo analizzare come il core di Joomla costruisce l'output per la visualizzazione degli articoli: dentro questo script non ci sono tag H1. Nativamente Joomla per il titolo dell'articolo non utilizza il tag in questione. Ci dobbiamo quindi affidare al template (non modificate mai i file del core di Joomla). Andiamo nella seguente cartella:

 - templates/mio_template/html

dove ovviamente mio_template è il nome del template che stiamo usando. Se non sono presenti, aggiungete la cartella com_content e al suo interno la cartella article ottenendo la seguente struttura

 - templates/mio_template/html/com_content/article/

In questo percorso andremo ora a copiare il file precedente (quello che vi ho detto di non toccare). In questo modo possiamo modificare secondo le nostre esigenze SEO il titolo degli articoli.
Cerchiamo la riga numero 15:

<td class="contentheading<?php echo $this->escape($this->params->get('pageclass_sfx')); ?>" width="100%">

aggiungiamo subito dopo la seguente riga:

<h1 class="contentheading<?php echo $this->escape($this->params->get('pageclass_sfx')); ?>" > 

e prima della riga 22:

</td>

aggiungiamo il relativo il tag di chiusura

</h1>

Probabilmente vedrete che il titolo degli articoli non avrà più lo stesso stile: dovrete quindi semplicemente andare ad agire sul CSS del template per ridurre l'H1 dei titoli, usando la sintassi:

h1.contentheading { ...
...
}

Conclusione

Abbiamo visto come dare la giusta importanza in ambito SEO al titolo dell'articolo racchiudendolo nel tag H1. In questa maniera avremo corretto una piccola lacuna di Joomla e reso i nostri contenuti più fruibili dalla rete.
lunedì 17 gennaio 2011

Joomla SEO tutorial

Joomla possiede delle opzioni SEO che permettono di modificare le URL che vengono utilizzate dal framework: Joomla infatti utilizza nativamente delle URL poco comprensibili per i crawler dei motori di ricerca e questo può essere penalizzante in ottica SEO. Se andiamo nel pannello di amministrazione di Joomla in particolare in Configurazione -> Sito troviamo le seguenti opzioni:

Joomla SEO tutorial

Friendly URL

Il compito maggiore di questa impostazione è quello di rendere appetibili ai motori di ricerca le nostre URL (search engine friendly URL). Questa opzione, se attivata, permette di convertire URL dinamiche in statiche (utilizzando gli alias delle voci di menu, articoli, etc).
Supponiamo di avere il seguente indirizzo:
www.miosito.it/index.php?option_com=virtuemart
Se l'alias per questo link è "catalogo-prodotti" attivando la prima impostazione SEO la nostra URL diventerà:
www.miosito.it/index.php/catalogo-prodotti
che, come vediamo, riprende appunto l'alias della voce di menu.

mod_rewrite

Il mod_rewrite è un modulo di Apache che permette di sovrascrivere le URL. Se correttamente installato sul nostro web server (non usate IIS) possiamo abilitare questa seconda opzione. A questo punto dobbiamo rinominare il file htaccess.txt di Joomla in .htaccess senza nulla davanti (attenzione a non rinominarlo in htaccess.htaccess). la nostra URL da:
www.miosito.it/index.php/catalogo-prodotti
diventerà
www.miosito.it/catalogo-prodotti
ovvero verrà eliminata la stringa "index.php" dalla nostra URL. Notiamo che
  • prima il motore di ricerca trova parole significative, maggiore sarà il valore che gli viene dato
  • la stringa "index.php" non descrive i contenuti del sito
  • il file .htaccess contiene alcune importanti impostazioni per aumentare la sicurezza del nostro sito, per cui attivare questa opzioni non serve solamente al SEO

Il suffisso alle URL

L'ultima opzione serve per l'aggiunta del suffisso alle URL, che trasforma:
www.miosito.it/catalogo-prodotti
nel seguente indirizzo
www.miosito.it/catalogo-prodotti.html

Conclusioni

Il mio consiglio è quello di utilizzare sempre le prime due impostazioni: mentre per l'ultima (il suffisso alle URL) vi sono diverse scuole di pensiero, che però riconoscono spesso poca importanza a questo parametro. Queste opzioni SEO sono un ottimo punto di partenza per un sito in Joomla ma ovviamente non garantiscono da sole le prime posizioni della SERP.
Bisogna ricordarsi di:
  1. Scrivere contenuti interessanti e utili
  2. inserire le parole chiavi nel tag title
  3. inserire le keywords nei tag H1 e H2 (Usare i tag di intestazione in maniera corretta: non mettere ad esempio il titolo in H3 e un sottotitolo in H1 perchè è semanticamente scorretto)
  4. evidenziare le parole chiavi con i tag b (bold)
  5. fare un corretto utilizzo dei link (non scrivere "clicca qui" ma descrivi la risorsa e soprattutto assicurati che non ci siano link "rotti" cioè che non portano da nessuna parte)
  6. usare le keywords nei nomi delle immagini e nella proprietà alt del tag img
  7. usare le parole chiavi nel primo paragrafo dell'articolo
  8. non abusare mai con l'utilizzo delle parole chiavi (rischio spam)
  9. segnalare il sito alle web directory
  10. effettuare un intelligente scambio link cioè cercare link di qualità (attenzione al page rank)
  11. Usare i social network per pubblicizzare il tuo sito
  12. Usare sempre una mappa del sito per migliorare l'indicizzazione (adoperare ad esempio il componente Xmap)
  13. ...
Non tutti i template di Joomla utilizzano correttamete i tag per i titoli degli articoli. Bisogna quindi prestare attenzione fin dalla stesura del template rispettando i criteri accennati (a breve pubblicherò ulteriori approfondimenti).
    lunedì 10 gennaio 2011

    Excel tutorial con ClosedXML

    Per creare files Excel 2007/2010 possiamo utilizzare ClosedXML progetto ospitato su CodePlex; questa libreria permette di manipolare i file Excel senza dover usare l'XML. ClosedXML può essere utilizzato con tutti i linguaggi del framework .NET come C# e VB.NET.

    Vediamo un semplice esempio

    Excel ClosedXML

    Per prima cosa viene creato un file Excel (workbook). Ad esso viene aggiunto un foglio di lavoro chiamato "Sample Sheet". In questo foglio viene inserita una cella di nome A1 il cui valore è HelloWorld. Per finire il file viene salvato.
    sabato 20 novembre 2010

    Software gratis

    I software gratis che possono semplificare la vita di un analista programmatore sono molti: software per la gestione di contenuti web detti anche CMS, software per la gestione delle relazioni con i clienti detti anche CRM, programmi che implementano ottimi DBMS e la lista potrebbe continuare ancora per molto.
    1. Joomla
    2. Sugar CRM
    3. MySql
    4. Eclipse 
    5. ...
    Spesso questi software gratis hanno pure il grande vantaggio di essere Open Source anche se esistono molti casi in cui questo non è vero (Open source significa letteralmente codice sorgente aperto non software gratuito).
    I vantaggi di un corretto utilizzo di questo genere di programmi sono enormi in termini di tempo e sicurezza delle applicazioni. Grazie alle comunità che nascono attorno a questi prodotti siamo certi di avere continui aggiornamenti e correzioni. Spesso viene data la possibilità di estendere facilmente le applicazioni utilizzando classi e metodi propri del framework rendendo il codice robusto e ben strutturato aumentando notevolmente la manutenibilità e la estendibilità delle applicazioni.
    Quando un problema informatico è stato affrontato e risolto da altri non è furbo ricominciare daccapo.