返回没有重氮的页面模板

hie*_*asd 3 plone

运行:Plone 5.0.0与Diazo.

如何永久地绕过在BrowserView模板中应用的重氮主题?(不是diazo.off = 1)

示例:我有重氮主题.我有一个模板,我通过BrowserView的ViewPageTemplateFile返回:

class ExhibitView(BrowserView):

    template = ViewPageTemplateFile("exhibit.pt")

    def __call__(self):
        return self.template()
Run Code Online (Sandbox Code Playgroud)

exhibit.pt文件如下:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
  xmlns:tal="http://xml.zope.org/namespaces/tal"
  xmlns:metal="http://xml.zope.org/namespaces/metal"
  i18n:domain="plone"
  lang="en">
<body>
    Is it just this text?
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我删除了plone主模板,它仍在应用重氮规则.我只是想让它返回一个裸线模板,由diazo取代.如上所示,我们曾经能够在Diazo之前做到这一点.

同样让Diazo规则跳过这个是不可能的,因为它必须安装在很多地方,我不想将规则应用于每个人的网站主题以使其工作.那很黑.

提前致谢!

ale*_*isa 6

根据这条线:

如果您有一个名为"X-Theme-Disabled"的标题,则不会应用变换.两行之后,您会看到检查"diazo.off"的条件.

因此,您应该以在返回模板之前设置标头的方式修改__call__方法.有点像这样:

def __call__(self):
    self.request.response.setHeader('X-Theme-Disabled', '1')
    return self.template()
Run Code Online (Sandbox Code Playgroud)

控制面板也是这样做的:

警告:我没试过这个:)

  • 经过测试,效果很好.谢谢. (2认同)
  • 大!我将把它添加到文档中. (2认同)