2014-04-30 3 views
2

다음 (zopeskel 기본값) diazothemejbot 디렉토리 template_overrides을 포함합니다. 이 디렉토리에는 plone.app.layout.viewlets.footer.pt의 재정의 버전이 있습니다. 블랙리스트에있는 호스트 이름에서 요청할 때 jbot 템플릿을 사용하지 않도록 diazo를 어떻게 구성 할 수 있습니까?

내가 diazo (@@theming-controlpanel)를 구성하고 호스트 이름을 블랙리스트에

후 디아 테마는 블랙리스트 호스트 이름 (예상대로) 표시되지 않지만, template_overridesjbot 템플릿은 여전히 ​​활성화되어 있습니다.

블랙리스트에있는 호스트 이름에서 요청한 경우 diazo 템플릿을 jbot 템플릿을 사용하지 않도록 설정하려면 어떻게해야합니까?

diazotheme이 명령으로 생성 된 zopeskel diazotheme namespace.package

관련 파일은 다음과 같습니다

namespace.package/공간/패키지/interfaces.py

from zope.interface import Interface 
class ICustomTheme(Interface): 
    """Marker interface that defines a Zope 3 browser layer. 
    """ 

namespace.package/namespace/package/profiles/default/browserlayer.xml

<?xml version="1.0"?> 
<layers> 
    <layer name="namespace.package.customization.layer" 
     interface="namespace.package.interfaces.ICustomTheme" /> 
</layers> 

namespace.package/공간/패키지/configure.zcml

... 
    <browser:jbot 
     directory="template_overrides" 
     layer=".interfaces.ICustomTheme" 
     /> 
    ... 

namespace.package/공간/패키지/template_overrides/plone.app.layout.viewlets.footer. pt

<div i18n:domain="plone" id="portal-footer"> 
    my footer 
</div> 

답변

0

레이어는 요청에 적용되는 인터페이스 일뿐입니다.

수행중인 작업을 완료하려면 요청 이벤트를 사용하여 호스트 이름에 따라 요청에 동적으로 레이어를 적용 할 수 있습니다.

경고,이 ... 모든 안된

from ZPublisher.interfaces import IPubStart 
from zope.component import adapter 
from zope.interface import alsoProvides 

@adapter(IPubAfterTraversal) 
def applyLayer(event): 
    req = event.request 
    if req.URL == 'something': 
     alsoProvides(req, IMyLayerThatHasJBOTCustomizations) 
관련 문제