Rewriting URLs with XDV



我们正在使用静态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

相关内容

  • 没有找到相关文章

最新更新