使用XDV重写URL

时间:2011-04-20 08:23:12

标签: html css themes plone xdv

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

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

但是,主题文件使用HTML中引用的文件系统资源指令,如

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

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

E.g。翻译

  ../images/logo.gif

  http://portal_url/images/logo.gif

2 个答案:

答案 0 :(得分: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)结合使用,可以获得更好的整体性能。

答案 1 :(得分: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"/>

即使在重写网址后,现在也应按预期工作。

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

python://my.package/xdvstuff/theme.html
python://my.package/xdvstuff/theme.xml