2

我们使用静态 HTML 文件作为 Plone 4 站点的主题,带有collective.xdv。

静态 HTML 文件本身可在 Web 浏览器中打开,使主题作者的主题化过程变得容易。

但是,主题文件使用文件系统资源目录,这些目录在 HTML 中引用,例如

  <link rel="stylesheet" type="text/css" href="../css/jquery/accordion.css"/>

当通过 Plone 提供自定义前缀时,如何将这些重写为绝对 URL?(可以在rules.xml中完成吗??

例如翻译

  ../images/logo.gif

  http://portal_url/images/logo.gif
4

2 回答 2

4

如果您使用“absolute_prefix”设置

<registry>
    <record interface="collective.xdv.interfaces.ITransformSettings" field="absolute_prefix">
        <value>/++resource++example.sitetheme</value>
    </record>
</registry>

并使用“applyPrefix = True”选项通过资源注册表管理您的静态文件,您可以在主题 html 文件中使用相对和绝对 url(保留主题作者简单地使用独立于 Plone 的静态目录的可能性)并使用

<drop theme="/html/head/style" />
<append theme="/html/head" content="/html/head/style " />

从主题模板中删除它们并将所有静态资源从资源注册表中拉回(将它们合并以供生产使用的额外好处)。有关详细信息,请参阅collective.xdv

注意:虽然Nginx在提供静态文件方面非常快,但我们通过利用主题静态文件的资源注册表以及前面的常用缓存代理(Varnish),获得了更好的整体性能。

于 2011-04-20T09:18:14.150 回答
0

将静态目录注册为资源。将包含规则的目录和媒体文件分开。

要在您的包中注册一个名为“my.package”的资源目录,请在您的 configure.zcml 中使用以下内容

  <browser:resourceDirectory
     name="my.package.media" 
     directory="static"
     />

在您的模板中,您现在可以使用“++resource++my.package.media/name-of-resource”访问资源,即

<link rel="stylesheet" type="text/css" href="++resource++my.package.media/css/jquery/accordion.css"/>

即使在 url 重写之后,这现在也应该按预期工作。

在定义 XDV 规则和模板的位置时避免使用绝对路径。相反,只需使用 Python :) 例如,我们已将模板文件 (.html) 和规则文件 (.xml) 放在包内名为 xdvstuff 的目录中:

python://my.package/xdvstuff/theme.html
python://my.package/xdvstuff/theme.xml
于 2011-04-20T08:48:44.327 回答