Re: Override-layout for Silva 2.1
Kit BLAKE <[email protected]> Tue, 8 Dec 2009 18:04:27 +0100
| Newsgroups | gmane.comp.web.zope.silva.devel |
|---|---|
| Message-ID | <[email protected]> |
Benno, We don't know David's hint, that was UCL invention. Quite clever, and we've been looking for an opportunity to try it out. But I'm not sure how it'll work in a multilingual situation. David, any ideas? Kit ps: This still doesn't answer your question, but we'll investigate. On 4 Dec 2009, at 11:14, Luthiger Stoll Benno wrote: > Dear Sylvain > > Your hint works, but doesn't solve my problem ;-( > > My problem is not when the user calls the container but one of the > language > versions of the index file. > The overrideLayout is correctly used when mySiteRoot/ is called. > But the overrideLayout should also be used when the user calls > mySiteRoot/index of mySiteRoot/index_EN. > > Do I have to create a class TranslatedIndex (deriving from > SilvaDocument) > for that I can define a ZCML directive like: > > <browser:page > name="index.html" > for=".myClasses.TranslatedIndex" > class=" Products.SilvaLayout.browser.silvaview.Content " > template="override.pt" > permission="zope2.View" > layer=".skin.IYourLayer" > /> > > Or is David's hint preferable? > > Benno > > > -----Original Message----- > From: Sylvain Viollon [mailto:[email protected]] > Sent: Freitag, 4. Dezember 2009 10:00 > To: Luthiger Stoll Benno > Cc: Silva Developer > Subject: Re: [silva-dev] Override-layout for Silva 2.1 > > On Fri, 4 Dec 2009 09:29:19 +0100 > "Luthiger Stoll Benno" <[email protected]> wrote: > >> Hello all >> > > Hello, > >> Is there no more help available from the infrae pros concerning my >> question? Just a little tip, maybe. >> > > I didn't tried it, but I think this should work: > > 1. Create a python class, on the filesystem, in a py file (let's > called it views.py) for your container: > > from Products.SilvaLayout.browser.silvaviews import Container > > class TranslatedContainer(Container): > > def context_or_default(self): > # 1. figure out the language. > language = self.request.cookies.get('silva_language', 'en') > language = language.upper() > container = self.context.aq_inner > # 2. Lookup the index document > index = getattr(container, 'index_' + language, None) > if index is None: > # Try to fallback to default silva index documents > index = getattr(container, 'index', None) > return index > > > 2. After in your ZCML, when you declare the 'container' template, > use your new class: > > <browser:page > name="index.html" > for="Products.Silva.interfaces.IContainer" > class=".views.TranslatedContainer" > template="maintemplate.pt" > permission="zope2.View" > layer=".skin.IYourLayer" > /> > > Of course we assumed here that the python file views.py is in the > same directory than the configure.zcml file. > > > 3. Restart, > > > Regards, > > Sylvain, > > > Note: SilvaLayout is deprecated in favor of silva.core.layout. It will > still exists in 2.2, but will be removed one day. > > -- > Sylvain Viollon -- Infrae > t +31 10 243 7051 -- http://infrae.com > Hoevestraat 10 3033GC Rotterdam -- The Netherlands > _______________________________________________ > silva-dev mailing list > silva-dev-IAPFreCvJWM6s/[email protected] > https://lists.infrae.com/mailman/listinfo/silva-dev