我们使用静态超文本标记语言文件作为主题,为我们的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发布于 2011-04-20 17:18:14
如果使用"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-20 16:48:44
将静态目录注册为资源。将包含规则的目录和媒体文件分开。
要在包中注册名为'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.xmlhttps://stackoverflow.com/questions/5727469
复制相似问题