2011-04-20 194 views
2

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

静态HTML文件本身可以在Web浏览器中打开,使主题作者可以轻松进行主题化过程。

然而,主题文件使用的是在HTML简称像

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

它怎么可能重写时,通过Plone的服务,使用自定义的前缀,这些是绝对URL文件系统资源directores? (可它rules.xml中??

如做翻译

../images/logo.gif 

http://portal_url/images/logo.gif 

回答

0

注册静态目录作为一种资源,保持包含规则的目录和媒体文件分开。

要在您的软件包中注册名为'my.package'的资源目录,请在configure.zcml中使用以下内容:

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

在模板中,你现在可以使用“++资源++ my.package.media /名称资源不足”访问资源,即

<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 
+0

感谢评论,但正如我注意到的,我希望避免触摸模板中的链接。重点是重写URL,而不是手动创建它们。 – 2011-04-20 18:24:41

4

如果使用“ absolute_prefix”设置

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

,并通过资源的注册与管理您的静态文件‘applyPrefix =真’选项,您可以使用您的主题HTML文件中的相对和绝对URL(保存为主题的作者简单地使用的可能性独立于Plone的静态目录)并使用

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

将它们从主题模板中移除并从资源注册表中提取所有静态资源(具有将它们合并用于生产使用的额外好处)。详情请参阅collective.xdv

注意:尽管Nginx在提供静态文件方面速度非常快,但我们通过将主题静态文件的资源注册表与前面的常用缓存代理(Varnish)结合使用,获得了更好的整体性能。

+1

谢谢!这是我正在寻找的。你知道这个代码驻留在哪里,如果我倾向于戳它。 – 2011-04-20 18:50:11