我们正在使用静态HTML文件作为我们的Plone 4网站的主题。
静态HTML文件本身可以在web浏览器中打开,使主题作者的主题化过程变得容易。
但是,主题文件使用一个文件系统资源目录,这些目录在HTML中被引用,如 <link rel="stylesheet" type="text/css" href="../css/jquery/accordion.css"/>
如何可能重写这些是绝对的URL时,通过Plone服务,自定义前缀?(它可以在rules.xml中完成吗?
。翻译
../images/logo.gif
http://portal_url/images/logo.gif
如果使用"absolute_prefix"设置
<registry>
<record interface="collective.xdv.interfaces.ITransformSettings" field="absolute_prefix">
<value>/++resource++example.sitetheme</value>
</record>
</registry>
和管理你的静态文件通过资源注册表与"applyPrefix=True"选项,你可以使用相对和绝对的url在你的主题html文件(保留主题作者简单地使用独立于Plone的静态目录的可能性),并使用
<drop theme="/html/head/style" />
<append theme="/html/head" content="/html/head/style " />
将它们从主题模板中删除,并从资源注册表中拉回所有静态资源(合并它们以供生产使用的额外好处)。看到集体。XDV .
注意:虽然Nginx
在提供静态文件方面非常快,但我们从利用资源注册表为主题的静态文件结合通常的缓存代理(Varnish)在前面获得了更好的整体性能。
将静态目录注册为资源。将包含规则和媒体文件的目录分开。
在包中注册一个名为"my"的资源目录。,在configure.zcml
中使用以下内容 <browser:resourceDirectory
name="my.package.media"
directory="static"
/>
在你的模板中,你现在可以使用'++resource++my.package来访问资源。媒体/name-of-resource’,也就是说。
<link rel="stylesheet" type="text/css" href="++resource++my.package.media/css/jquery/accordion.css"/>
即使重写了url,现在也能正常工作了。
在定义XDV规则和模板的位置时避免使用绝对路径。例如,我们将模板文件(.html)和规则文件(.xml)放在包内名为xdvstuff的目录中:
python://my.package/xdvstuff/theme.html
python://my.package/xdvstuff/theme.xml