首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用XDV重写URL

使用XDV重写URL
EN

Stack Overflow用户
提问于 2011-04-20 16:23:12
回答 2查看 312关注 0票数 2

我们使用静态超文本标记语言文件作为主题,为我们的Plone 4网站与collective.xdv。

静态HTML文件本身可以在web浏览器中打开,这使得主题作者可以轻松地创建主题。

但是,主题文件使用在HTML中引用的文件系统资源目录,如下所示

代码语言:javascript
复制
  <link rel="stylesheet" type="text/css" href="../css/jquery/accordion.css"/>

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

例如,翻译

代码语言:javascript
复制
  ../images/logo.gif

代码语言:javascript
复制
  http://portal_url/images/logo.gif
EN

回答 2

Stack Overflow用户

发布于 2011-04-20 17:18:14

如果使用"absolute_prefix“设置

代码语言:javascript
复制
<registry>
    <record interface="collective.xdv.interfaces.ITransformSettings" field="absolute_prefix">
        <value>/++resource++example.sitetheme</value>
    </record>
</registry>

并通过带有"applyPrefix=True“选项的资源注册表管理静态文件,您可以在主题html文件中同时使用相对和绝对url(为主题作者保留了使用独立于Plone的静态目录的可能性),并使用

代码语言:javascript
复制
<drop theme="/html/head/style" />
<append theme="/html/head" content="/html/head/style " />

从主题模板中删除它们,并从资源注册表中拉回所有静态资源(还有一个好处是将它们合并以供生产使用)。详情请参见collective.xdv

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

票数 4
EN

Stack Overflow用户

发布于 2011-04-20 16:48:44

将静态目录注册为资源。将包含规则的目录和媒体文件分开。

要在包中注册名为'my.package‘的资源目录,请在configure.zcml中使用以下命令

代码语言:javascript
复制
  <browser:resourceDirectory
     name="my.package.media" 
     directory="static"
     />

在您的模板中,您现在可以使用'++resource++my.package.media/name-of-resource',访问资源,即

代码语言:javascript
复制
<link rel="stylesheet" type="text/css" href="++resource++my.package.media/css/jquery/accordion.css"/>

现在,即使在url重写之后,这也应该可以正常工作。

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

代码语言:javascript
复制
python://my.package/xdvstuff/theme.html
python://my.package/xdvstuff/theme.xml
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5727469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档