Le viewlet
medio
Le viewlet sono frammenti di pagina, scritte similmente ad una vista ma organizzate all'interno della pagina attraverso un viewlet manager. Il viewlet manager è responsabile di trovare, ordinare, filtrare e renderizzare le sue viewlet. La maggior parte delle viewlet standard di Plone si trovano nel pacchetto plone.app.layout. Questo è un estratto del suo file viewlets/configure.zcml:
<browser:viewlet
name="plone.colophon"
for="*"
manager=".interfaces.IPortalFooter"
template="colophon.pt"
permission="zope.Public"
/> La denominazione è unica all'interno del portlet manager, che è identificato da un'interfaccia (e definito precedentemente nello stesso file, usando come direttiva <browser:viewletManager />). Qui, stiamo utilizzando una viewlet solo-template, definita per ogni contesto, e non protetta da alcun permesso particolare. E' possibile definire una classe invece del/in aggiunta del template.
Come probabilmente hai intuito, è possibile customizzare la viewlet sia registrando una nuova viewlet con lo stesso nome, nello stesso manager, ma per un contesto più specifico, sia alternativamente, registrandone una nuova con lo stesso nome, nello stesso manager, usando un layer personalizzato. Tutto ciò potrebbe apparire così:
<browser:viewlet
name="plone.colophon"
for="*"
manager="plone.app.layout.viewlets.interfaces.IPortalFooter"
template="funny_colophon.pt"
permission="zope.Public"
layer=".interfaces.IExampleCustomization"
/> Nota come abbiamo trasformato il path da relativo all'interfaccia viewlet manager IPortalFooter in assoluto e come abbiamo specificato un nuovo template (che deve trovarsi nella directory in cui è localizzato il nostro nuovo file ZCML).
Per concludere, è possibile usare l'attributo view per specificare l'interfaccia o la classe della vista della pagina. Con questo tipo di customizzazione, possiamo ottenere una viewlet che appare in modo differenete nelle diverse pagine. L'uso più comune di questa modalità in Plone è registrare viewlets che sono mostrate solo nella visualizzazione principale di una pagina, usando la speciale interfaccia marcatore IViewView, che è applicata alla visualizzazione corrente durante attraversamento se l'utente sta usando il tab Visualizza. Ecco un esempio da plone.app.layout.viewlets:
<browser:viewlet
name="plone.comments"
for="Products.CMFCore.interfaces.IContentish"
manager=".interfaces.IBelowContent"
view="..globals.interfaces.IViewView"
class=".comments.CommentsViewlet"
permission="zope2.View"
/> Come per le viste, puoi utilizzare le varie parametrizzazioni for, layer e view in modo combinato.
Trovare le viewlet
Lo strumento portal_view_customizations ti mostrerà le registrazioni delle viewlet (e i viewlet manager per cui sono registrate). Come per le viste, puoi spostare il cursore sopra il titolo della viewlet per vedere dove è stata registrata. Per scoprire il nome di una viewlet particolare, puoi utilizzare la vista @@manage-viewlets, per esempio http://localhost:8080/plone/@@manage-viewlets.
Per ulteriori informazioni sulle viewlets, leggi Modificare le viewlet nel main_template.
