[Plone-IT] Template differente per la homepage

Vito Falco vitofalco a gmail.com
Ven 17 Lug 2009 17:32:21 UTC


Ciao,
allora chiarisco un po'.
Innanzitutto dovrai lavorare sui files che hai creato per il tuo pacchetto
di tema, che non conoscendo lo identificherò come "plone.tema".

1. possiamo non utilizzare una nostra marker interface per uno scopo poco
complesso. Quindi utilizzeremo l'interfaccia già presente in plone chiamata
"Products.CMFCore.interfaces.ISiteRoot". Questa interfaccia è presente (is
provided by) l'oggetto "plone site".

2. in browser/configure.zcml aggiungi:

> <browser:page
>         for="Products.CMFCore.interfaces.ISiteRoot"
>         name="hp"
>         class=".hp.hpView"
>         permission="zope2.View"
>     />
>
Quindi così facendo gli stai dicendo di usare la classe contenuta nel file
"hp.py" chiamata "hpView", ogni qualvolta incontra un contesto dove
l'interfaccia "Products.CMFCore.interfaces.ISiteRoot" è utilizzata, quindi
nella home di un plone site ;-)
Andiamo così a definirla...

3. nella cartella browser crea un file py chiamato "hp.py" e inserisci:

> from Acquisition import aq_inner
> from Products.Five.browser import BrowserView
> from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
> from plone.memoize.instance import memoize
>
> from zope.interface import implements
>
> from DateTime import DateTime
> from Products.Five import BrowserView
> from Products.CMFCore.utils import getToolByName
>
> from eves.skin.browser.interfaces import IHpView
>
> class hpView(BrowserView):
>
>     template = ViewPageTemplateFile('hp.pt')
>     implements(IHpView)
>     @memoize
>     def __call__(self):
>         return self.template()
>

Con questo file stiamo definendo la classe della BrowserView che come
rendering userà il nostro bel pagetemplate chiamato "hp.pt" (che devi creare
scopiazzando il codice di main_template.pt presente di default
nell'istallazione di Plone).

Fai il refresh di della tua istanza plone, e meglio sarebbe una
disinstallazione-reinstalalzione del tema sulla tua istanza di test.

Spero di non aver tralasciato niente...
Vito

P.S. Utilizzando invece una marker interface apposita e non quella
Products.CMFCore.interfaces.ISiteRoot dovremmo a manina settare tale
interfaccia via tab "interfaces" (in ZMI) presente tra quelli dell'oggetto
Plone site obiettivo.
Il metodo che invece ti ho indicato - ovvero sfruttando l'ISiteRoot - rende
tutto più "magico"...
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.plone.org/pipermail/plone-plone-it/attachments/20090717/b4b717a8/attachment.html>


Maggiori informazioni sulla lista Plone-IT