具有多个Trac项目时的相对路径

时间:2015-12-10 14:04:58

标签: path filepath relative-path trac

我写了一个插件,我从插件的htdocs文件夹中链接了一些图片。为此,我使用路径/chrome/pluginname/...。当我在另一台安装了多个项目的服务器上测试插件时(在我的开发计算机上我只有一个Trac项目),它没有用,因为项目名称是URL的一部分,但是htdocs路径在港口后附上。

以下网址在相应的服务器上工作以查找图像文件:

在我的开发计算机上: <ip>:<port>/chrome/pluginname/...

在Apache测试服务器上: <ip>:<port>/projectname/chrome/pluginname/...

/chrome/pluginname/...附加在端口之后,而不是在项目名之后,因此无法找到文件。生成的URL为<ip>:<port>/chrome/pluginname/...,就像在我的开发者电脑上一样。

如何在URL中动态包含项目名称以避免对其进行硬编码,或者在项目名称后面启动相对/chrome/pluginname/...路径?

1 个答案:

答案 0 :(得分:1)

在Python代码中,使用req.href.chrome('pluginname/...')生成URL。在模板代码中,使用${href.chrome('pluginname/...')}

如果您需要提供动态生成的CSS,您可以选择一些选项。如果您正在编写自己的页面,则可以使用CSS中的Genshi变量将CSS放在HTML页面的<style>块中。如果您尝试修改Trac中存在的页面样式,则会变得更加复杂。我见过的最好方法是实现IRequestHandler来为样式表提供请求。您可以在WikiExtrasPlugin中看到这一点。请参阅changeset 14311ticket #11041