[Zope3-Users] Making site skins

Dominik Huber dominik.huber at perse.ch
Wed Aug 17 06:43:05 EDT 2005

Johan Carlsson wrote:

>> (zope.app.publication.httpfactory.HTTPPublicationRequestFactory -> 
>> zope.app.publication.browser.setDefaultSkin)
>> Afterward the specific adapters such as views get invoked, because 
>> you register those to a dedicated request interface using the layer 
>> attribute. Attention they get looked up via the regular 
>> default-adapter mechansim and not as named adapters.
>> IMO you can register only a specific IDefaultSkin adapter to a site 
>> marked for example as ISkinableSite:
>> <adapter
>>    for='.ISkinableSite'
>>    provides='.IDefaultSkin'
>> factory='.adapter_that_offers_a_skin_interface_selected_by_the_user' />
>> Within this adapter you can invoke the user preferences or something 
>> else.
> The browser request gets directly marked by a skin interface.This is 
> done by the http publication request factory:
> Thanks Dominik,
> I been reading the source and trying to figure this out (still trying 
> to get in to the adapter/interface thinking, which is really hard and 
> unintuitive for me.)
> I do not quite understand what your suggesting.
> Could you give me a short list of what steps would be involved 
> implementing your suggestion? And how it would work from a user 
> perspective?

Excuse me, I was wrong. The setDefaultSkin function does not adapt 
regularly to IDefaultSkin is just looks up the registered interface 
using the IDefaultSkin. So you cannot provide your own adapter 
evaluating a skin.

> What I'm not quite sure about is what a IDefaultSkin is?
> Is it the interface for the global default skin for the whole server?

The IDefaultSkin is just a marker that is used to register the skin 
declared within the browser:defaultSkin directive. (handler : 
zope.app.publisher.browser.metaconfigure.defaultSkin, the default skin 
is set regularly within zope.app.browser.zcml)


More information about the Zope3-users mailing list