以下(zopeskel默认)diazotheme
包含jbot
目录template_overrides
。在此目录中,有一个覆盖版本plone.app.layout.viewlets.footer.pt
。
当我配置diazo
(@@theming-controlpanel
)并将主机名列入黑名单时,黑名单主机名不显示重氮主题(如预期),jbot
模板中template_overrides
模板1}}仍然有效。
如何在列入黑名单的主机名中请求diazo
不使用jbot
模板?
使用命令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 /命名空间/包/简档/默认/ 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 :(得分: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)