如何使用plone.app.theming提供静态html

时间:2014-09-05 13:46:10

标签: plone diazo

我使用Diazo来部署静态html文件' ticker.html'在某个网址上。该页面根本不使用任何内容。

这是rules.xml:

<rules xmlns="http://namespaces.plone.org/diazo"
       xmlns:css="http://namespaces.plone.org/diazo/css"
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <rules if-path="/Plone/ticker/ /ticker/">
    <theme href="ticker.html" />
  </rules>

  <rules css:if-content="#visual-portal-wrapper" if-not-path="/Plone/ticker/ /ticker/">
    <theme href="index.html" />    
    The rest of the theme...
  </rules>
</rules>

它工作正常,html是正确的,但http://localhost:8080/Plone/ticker的返回码是404.只有当我在Plone中创建一些虚拟内容时,我得到一个200.返回的内容也略有改变:有一个虚拟内容Diazo在标题中添加了一个基本标记:

<base href="http://localhost:8080/Plone/ticker/" />

如果没有虚拟内容,我怎么能告诉Diazo完全忽略内容并返回200?

如果你想知道:我使用Diazo是因为plone.app.themeing允许通过网络修改静态页面。

2 个答案:

答案 0 :(得分:3)

plone.app.theming转换是交付管道的最后一步。内容已经从Plone召唤出来,以便它可以与主题结合使用。所以,这不适合这样做。

相反,请使用反向代理的重写规则执行此操作。让代理在收到目标URL请求时获取您的代码。您还可以在此过程中节省大量的CPU周期,因为您将通过Zope / Plone的机器避免整个行程。

答案 1 :(得分:0)

我有一个类似的用例,我想通过Zope将一些js-partials服务到AngularJS。它们是text/html,因此它们通过plone.app.theming进行了转换。深入研究plone.app.theming后,i重载ThemeTranform适配器,并在新文件transforms.py中使用子类的适配器,如下所示:

# -*- coding: utf-8 -*-
from plone.app.theming import transform
from your.theme.interfaces import IYourThemeLayer
from zope.component import adapter
from zope.interface import Interface


@adapter(Interface, IYourThemeLayer
class ThemeTransform(transform.ThemeTransform):

    def parseTree(self, result):

        # Prevent diazo from adding doctype and html head to every
        # html file. Exclude all partial resources from theme transforms
        if '/++resource++your.theme.js-partials/' in self.request.getURL():
            return None

        return super(ThemeTransform, self).parseTree(result)

...使用以下命令在zcml中注册与默认ThemeTransform适配器相同的名称:

<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:zcml="http://namespaces.zope.org/zcml"
    i18n_domain="your.theme">

    <!-- Override plone.app.theming adapter -->
    <adapter
        name="plone.app.theming.transform"
        factory=".transform.ThemeTransform"
        zcml:condition="installed plone.app.theming"
        />

</configure>

可能与此问题有关:https://dev.plone.org/ticket/13139