Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plone 如何配置diazo,使其在被黑名单主机名请求时不使用jbot模板?_Plone_Diazo - Fatal编程技术网

Plone 如何配置diazo,使其在被黑名单主机名请求时不使用jbot模板?

Plone 如何配置diazo,使其在被黑名单主机名请求时不使用jbot模板?,plone,diazo,Plone,Diazo,以下(zopeskel默认值)diazotheme包括一个jbot目录template\u覆盖。在此目录中有一个覆盖版本的plone.app.layout.viewlets.footer.pt 当我配置diazo(@@theming controlpanel)并将主机名列入黑名单时,黑名单主机名的diazo主题将不会显示(如预期的那样),但template\u overrides中的jbot模板仍处于活动状态 当从黑名单主机名请求时,如何配置diazo以不使用jbot模板 diazotheme是

以下(zopeskel默认值)
diazotheme
包括一个
jbot
目录
template\u覆盖
。在此目录中有一个覆盖版本的
plone.app.layout.viewlets.footer.pt

当我配置
diazo
@@theming controlpanel
)并将主机名列入黑名单时,黑名单主机名的diazo主题将不会显示(如预期的那样),但
template\u overrides
中的
jbot
模板仍处于活动状态

当从黑名单主机名请求时,如何配置diazo以不使用jbot模板

diazotheme是使用命令zopeskel diazotheme namespace.package创建的

有关档案包括:

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>
  ...
  <browser:jbot
      directory="template_overrides"
      layer=".interfaces.ICustomTheme"
      />
  ...

namespace.package/namespace/package/configure.zcml

<?xml version="1.0"?>
<layers>
    <layer name="namespace.package.customization.layer"
      interface="namespace.package.interfaces.ICustomTheme" />
</layers>
  ...
  <browser:jbot
      directory="template_overrides"
      layer=".interfaces.ICustomTheme"
      />
  ...
。。。
...

namespace.package/namespace/package/template\u覆盖/plone.app.layout.viewlets.footer.pt

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

我的页脚

层只是应用于请求的接口

为了完成您正在做的事情,可以使用request event根据主机名对请求动态应用一个层

警告,这都是未经测试的

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)