Bookmark and Share
Document Actions

Come scrivere i template per Plone 4

Una panoramica dei miglioramenti più importanti legati alla creazione di template per Plone 4 e cosa dovete sapere per aggiornare i template esistenti.

Plone4 presenta alcuni miglioramenti nel creare template. Denys Mishunov ha pubblicato, sul sito ufficiale di Plone, una panoramica dei miglioramenti più importanti, insieme a ciò che bisogna sapere per aggiornare i vostri template esistenti, dal titolo: How to write templates for Plone 4.

Ecco quali sono i principali cambiamenti apportati in merito ai template dalla nuova versione del CMS Open Source Plone 4:

  • content-title: è lo slot che contiene il titolo della view, generato automaticamente;
  • content-description: è lo slot contenente la descrizione della view, anch’esso generato automaticamente;
  • content-core: è lo slot posto subito sotto la descrizione nel main_template e restituisce esattamente la view principale come, ad esempio, il testo di una pagina o la lista di cartelle per la Folder view e così via;
  • main: questo slot è ancora disponibile in Plone 4 (come lo era già in Plone 3). Primo per ragioni di retrocompatibilità e secondo per le view che non hanno bisogno di visualizzare dei viewlet manager o per quelli che invece hanno bisogno di un titolo/descrizione diversi da quelli generati automaticamente

Viewlet manager

Tutti i viewlet manager relativi alla colonna dei contenuto principali che normalmente avreste messo nei vostri template in Plone3 ora vengono gestiti da main_template.pt.

Questo significa che se i vostri template necessitano di viewlet manager non dovete metterli esplicitamente nel vostro template. In questo caso è importante compilare il giusto slot.

La nuova strategia ha semplificato drasticamente la creazione di template per i tipi di contenuto.

Tanto per fare un esempio si potrebbe considerare il document_view.pt, praticamente ora si occupa solo di inserire i contenuti nello slot giusto.

I template per la view di un oggetto

In Plone 3 veniva usato lo slot "main" come contenitore per tutto ciò che era relativo alla colonna centrale dei contenuti. Questo creava una gran confusione: gli elementi apparivano in posti inaspettati e con una marcatura imprevedibile in generale.

Plone 4 ha semplificato l'uso dei template per la vista degli oggetti. Come abbiamo visto prima, ad esempio, non c'è bisogno di inserire i viewlet manager in un template che sta per essere usato come vista per un oggetto come document_view, event_view, ecc...

Inoltre, a meno che non abbiate bisogno di scrivere un titolo o una descrizione personalizzata per la vostra view, dovreste evitare di fare il fill dello slot "main". Invece Plone 4 vi offre un nuovo slot chiamato "content-core" che contiene solo i contenuti principali dell'oggetto.

Sarà il main_template.pt a caricare automaticamente titolo, descrizione e i viewlet manager per l'oggetto.

Ecco un esempio di come può essere semplice e chiara la vista di un oggetto in Plone 4:

<metal:content-core fill-slot="content-core">
    <metal:content-core define-macro="content-core">
        <metal:field use-macro="python:context.widget('text', mode='view')">
            Body text
        </metal:field>
    </metal:content-core>
</metal:content-core>

Queste poche righe sono tutto ciò di cui avete bisogno per una view.

Template generici diversi dalla view di un oggetto

Anche se Plone 4 semplifica il riempimento dello slot dei contenuti rispetto al passato grazie agli slot aggiuntivi che sono stati definiti, in molti casi risulta necessario occuparsi direttamente dell'intero main slot ed aggiungere altri elementi al template.

La buona notizia è che nella maggior parte di questi casi probabilmente non avrete bisogno di richiamare alcun viewlet manager.

Basterà effettuare il fill gli slot "content-title" per il titolo, "content-description" per la descrizione e "content-core" per il contenuto principale.

Tuttavia ci sono alcuni importanti accorgimenti da tenere a mente quando scrivete questi template:

  • il titolo del contenuto dovrebbe sempre avere una classe css "documentFirstHeading";
  • se avete bisogno di usare una visualizzazione non standard del titolo o della descrizione, eseguire il fill rispettivamente degli slot "content-title" e "content-description";
  • le descrizioni dovrebbero sempre avere una classe css "documentDescription";
  • tutto quello che viene inserito dopo titolo e descrizione andrebbe inserito in un div (<div id="content-core">);
  • <a class=”link-parent”> andrebbe inserito in <div id=”content-core”>;
  • se c’è la necessità di inserire un messaggio di stato nel template allora dovrebbe essere posto prima del titolo o comunque preferibilmente nel viewlet-manager chiamato “plone.abovecontenttitle”;
  • Importante! se compilate uno slot non fatelo mai in un elemento <div>. Usate invece <metal:nome_che_abbia_esempio>, come mostrato:
<metal:content-core fill-slot="content-core">
    Content core
</metal:content-core>

Questo è importante per due motivi: diminuisce il numero di elementi <div> vuoti nell'output Plone e rende la marcatura più significativa. Inoltre semplifica il parsing DOM con javascript o applicare regole Deliverance o XDV per effettuare il theming.

Elementi correlati

Plone4 non richiama più esplicitamente una macro per gli elementi correlati in main_template.pt. Gli elementi correlati vengono invece gestiti attraverso la viewlet assegnata al viewlet manager chiamato plone.belowcontentbody.

Per questi motivi non richiamare più tale macro nel proprio template, come invece veniva fatto fino alla versione 3 di Plone.

Disabilitare le colonne

Per unificare il modo in cui vengono disabilitati gli elementi in Plone, le colonne in Plone4 vengono disabilitate nello stesso modo in cui vengono disabilitati i margini quando si edita un contenuto, ovvero attraverso la variabile REQUEST.

Vediamo come:

<metal:block fill-slot="top_slot"
                 tal:define="disable_column_one python:request.set('disable_plone.leftcolumn',1);
                         disable_column_two python:request.set('disable_plone.rightcolumn',1);" />

Rimozione di ID e classi ridondanti nell'area di contenuto

In Plone3 c'erano tre ID/classi che coprivano esattamente la stessa area, ora è stato semplificato. È stato mantenuto il selettore #content, e ci si è sbarazzati degli altri.

Se avete un tema e volete che funzioni nello stesso modo sia in Plone 3 sia in Plone 4, dovreste fare la seguente sostituzione usando il vostro strumento preferito di cerca/sostituisci:

  • #region-content#content
  • .documentContent#content
  • .configlet è stato rimosso
  • Ogni ancora interna a href="#documentContent"href="#content"

Sono anche stati aggiornati tutti i template in Plone che eseguivano fill-slot="content" per rimuovere riferimenti a #region-content e .documentContent, perciò questi non esistono più da nessuna parte nel codice HTML.

Messaggio di stato del portale

Il messaggio di stato del portale in Plone 4 è stato rimosso dall'elemento #content ed è stato posizionato tra i tab di contenuto (Visualizza, Modifica, ecc) e l'elemento #content.

Se nel vostro tema avete qualche view che esplicitamente aggiunge un messaggio di stato del portale, dovete aggiornarle se volete avere una marcatura consistente.

Sarebbe ideale che il messaggio di stato del portale personalizzato venga inserito nello slot "header" e non dentro gli slot "main" o "content-core" che compilate nei template.

by Alice Gallerani last modified 2010-04-07 14:26
Contributors: Denys Mishunov, Davide Moro, Alice Gallerani
 

Supporto

Ottieni un
aiuto veloce e mirato sul forum, gratis!

partecipa al forum

 

Segui le icone

 

Livelli di difficoltà

livello guruSolo per i "guru"!
livello avanzatoPer configuratori e sviluppatori
livello medioPer chi ha già familiarità
livello basePer tutti!

 

I video

video

Il documento è supportato da un video!