Bookmark and Share
Document Actions

Skin Layers

Up one level
Template, scripts, immagini, CSS e file JavaScript sono organizzati in skin layers. Importante è la priorità tra gli skin layer.

1. Skin Layers

Nell'ottica dell'architettura a componenti 'layer' assume un significato differente.

Una skin comprende vari "strati", chiamati skin layer. Nel file system ogni layer rappresenta una directory. Nella Zope Management Interface (ZMI) ogni layer appare in portal_skins come una cartella a sé stante, contenente page templates, style sheets o script Python.

Portal_skins in ZMI

 

Gli skin layer vengono usati principalmente per due scopi:

  • Innanzitutto permettono di tenere ordinate le cose. Se si dà un'occhiata alla skin di default di Plone (di cui sopra è mostrata una parte della sezione portal_skin), si noterà che templates, scripts, stili e immagini sono divisi in skin layer differenti.
  • L'aspetto più importante è il fatto che essi seguono un ordine di priorità. Questo significa che un oggetto denominato main_template che si trova in un layer superiore sarà trovato e usato prima di un altro oggetto denominato sempre main_template posizionato in un layer che si trova in una posizione inferiore. Questo aspetto sarà maggiormente approfondito nella prossima pagina.

Per creare una skin layer via web, basta semplicemente aggiungere una nuova cartella (in portal_skin n.d.r). Su file system invece si deve aggiungere una directory alla directory delle skin. Si dovrà anche provvedere all'aggiunta di alcune configurazioni al fine di assicurare che la nuova directory possa essere trovata e registrata come skin layer nell'installazione.

Prima di tutto, in [nome del proprio prodotto o pacchetto theme]/skins.zcml

<cmf:registerDirectory
       name="[Your Skin Directory Name]"/>

Poi, in [nome del proprio prodotto o pacchetto theme]/profiles/default/skins.xml

<object name="[Your Skin Directory Name]"
    meta_type="Filesystem Directory View"
    directory="[your namespace].[your theme name]:skins/[Your Skin Directory Name]"/>

e

<skin-path name="[your skin name]" based-on="Plone Default">
  <layer name="[Your Skin Directory Name]"
     insert-after="custom"/>
 </skin-path>

2. Personalizzare tramite l'ordine di priorità

Se hai già lavorato con Plone 2 questo tipo di personalizzazione ti sarà familiare. Come annunciato in precedenza, l'ordine di un layer in una skin determina quale template, file CSS e script Python sarà utilizzato per primo.

Per visionare l'ordine di priorità:

  • Sito > Zope Management Interface > portal _skins
  • Cliccare sulla linguetta Properties

Dovresti ora vedere la lista degli skin layers utilizzati dallo skin di default di Plone, "Plone Default". Layer come plone_templates fanno parte del theme principale di Plone, ma esistono anche altri skin layer che forniscono template derivanti da specifici prodotti aggiuntivi (ad esempio l'editor Kupu).

Ordine di precedenza degli skin layer

In seguito alla richiesta di un template specifico, Plone provvederà alla sua ricerca partendo dalla cima della lista suddetta e, procedendo verso il fondo, cercando di volta in volta il template richiesto in ogni layer.

In cima alla lista si trova un layer personalizzato, custom; ogni template in questa posizione verrà trovato per primo e quindi usato. Per creare quindi la propria versione di un template Plone o di un file CSS è necessario dargli lo stesso nome della versione Plone ma posizionarlo nel layer custom.

Questo è senz'altro l'approccio più semplice. Basterà assicurarsi che la propria personalizzazione sia contenuta in un layer collocato più in alto nella nella pila di skin layer utilizzati; questo è sufficiente per fare in modo che Plone trovi per primo il nostro template personalizzato ed ne ignori la versione originale.

Questa tecnica può quindi essere usata in due modi:

  • Usando la cartella custom

    Tramite Zope Management Interface è possibile aggiungere alla cartella custom la propria versione di template, fogli CSS e così via. Questa verrà a trovarsi sempre in cima, si può star quindi certi che verrà utilizzata la propria versione personalizzata; 
  • Aggiungendo i propri skin layers

    Creare uno o due skin layer nel proprio theme all'interno del file system e assicurarsi che questi skin layer vengano installati appena al di sotto della cartella custom nell'ordine di priorità. Ulteriori informazioni riguardo questo modus operandi verranno fornite nella prossima sezione.

3. Creare una propria skin

Attraverso la ZMI

  • Andare in Site Setup > Zope Management Interface > portal_skins
  • Cliccare sulla linguetta Properties
  • Scegliere Aggiungi Nuovo e dare un nome alla skin
  • È ora possibile inserire la lista degli skin layer che si vuole usare, specificando l'ordine in cui devono essere usati.
  • Infine, a fondo pagina, impostare la nuova skin come default.

Su File System

Se si usa il template di paster plone3_theme, la creazione degli skin layer utilizzati dal nostro theme avverrà all'installazione del pacchetto in Plone.

Paster offre la possibilità di basare la propria skin sullo skin Plone Default. Questo vuol dire che quando si installa il theme nel proprio sito gli skin layer di Plone verranno aggiunti ai propri - ma la priorità verrà data comunque a questi ultimi. Tutto ciò è una buona idea, in quanto permette di riutilizzare dei pezzi di Plone Default senza doverli duplicare, e di sovrascrivere quelli indesiderati.

I passi fondamentali del procedimento sono:

  1. La registrazione delle proprie skin directory come Filesystem Directory Views così che possano diventare skin layer. Tutto ciò avviene in due luoghi: [nome del proprio prodotto o pacchetto theme]/skins.zcml e [nome del proprio prodotto o pacchetto theme]/profiles/default/skins.xml
     <cmf:registerDirectory
          name="[Your Skin Directory Name]"/> 
    
     <object name="[Your Skin Directory Name]"
         meta_type="Filesystem Directory View"     
         directory="[your namespace].[your theme name]:skins/[Your Skin Directory Name]"/>
  2. Aggiungere ed organizzare i propri skin layer in una skin unica in [nome del proprio prodotto o pacchetto theme]/profiles/default/skins.xml
    <skin-path name="[your skin name" based-on="Plone Default">   
           <layer name="[Your Skin Directory Name]"      
                  insert-after="custom"/>  
    </skin-path>
  3. Impostare la propria skin come skin di default in [nome del proprio prodotto o pacchetto theme]/profiles/default/skins.xml
    Questo codice deve includere i nodi dei due esempi precedenti.
    <object name="portal_skins" allow_any="False" cookie_persistence="False"
        default_skin="[your skin name]">
           ......... 
    </object>

Riguardo il nome della Skin

Il nome della propria skin viene richiesto in alcuni posti nel proprio theme product. È bene sapere dove e perché viene utilizzato, per questo riportiamo i casi qui di seguito.

Dove

Attributi/Direttive usati

Uso

profiles/default/skins.xml

<skin_path name="[your skin name]"

Si usa per dare un nome al proprio set di skin layer.

profiles/default/skins.xml

<object name="portal_skins"

default_skin="[your skin name]">

Si usa per impostare il proprio set di skin layer come skin di default.

browser/configure.zcml

<interface …

name="[your skin name]"

/>

Si usa per dare un nome all'interfaccia specifica del theme (vedi la sezione Componenti)

profiles/default/viewlets.xml

<order manager="plone.portalfooter" skinname="[your skin name]"

>

Si usa per precisare il theme quando si riordinano le viewlets nei viewlet managers

(vedi la sezione Componenti)

by Alice Narduzzo last modified 2009-05-20 10:52