Customizzazione Zope 3-style
Utilizzando la ZCA è possibile fare l'override degli adapter registrati precedentemente da altri componenti software, customizzandoli.
E'possibile fare ciò in diversi modi:
- registrare un proprio zcml di override globale (per tutti i portali dell'istanza)
- utilizzare plone.browserlayer
In questa guida esploreremo la seconda via: plone.browserlayer.
Prerequisiti
Attualmente (versione 3.0.6) è necessario scaricare separatamente il package plone.browser.layer ed installarlo come prodotto Plone; nelle versioni successive di Plone (>=3.1) dovrebbe essere incluso di default.
Passo passo
Prima di tutto, dobbiamo modificare l'egg del nostro prodotto:
install_requires=[
...
'plone.browserlayer',
...
],
Poi assicurarsi che il suo codice ZCML sia caricato correttamente nel proprio pacchetto:
<include package="plone.browserlayer" />
Creare una marker interface per il proprio layert:
from zope.interface import Interface
class IWorkgroupLayer(Interface):
""" IWorkgroup Layer """
Registrare il proprio layer con GenericSetup, nel file browserlayer.xml:
<layers>
<layer name="redomino.workgroup"
interface="redomino.workgroup.interfaces.IWorkgroupLayer" />
</layers>
Fare l'override del componente desiderato da codice ZCML, per esempio.:
<!-- overrides -->
<browser:page
for="*"
name="pas_search"
class=".search.PASSearchView"
permission="zope2.View"
allowed_interface="Products.PlonePAS.interfaces.browser.IPASSearchView"
layer="redomino.workgroup.interfaces.IWorkgroupLayer"
/>
In questo modo sarà possibile customizzare il componente desiderato (in questo caso una vista) solo per i portali Plone che avranno installato il proprio prodotto.
Ulteriori informazioni