我写了一个插件,我从插件的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/...
路径?
答案 0 :(得分:1)
在Python代码中,使用req.href.chrome('pluginname/...')
生成URL。在模板代码中,使用${href.chrome('pluginname/...')}
。
如果您需要提供动态生成的CSS,您可以选择一些选项。如果您正在编写自己的页面,则可以使用CSS中的Genshi变量将CSS放在HTML页面的<style>
块中。如果您尝试修改Trac中存在的页面样式,则会变得更加复杂。我见过的最好方法是实现IRequestHandler
来为样式表提供请求。您可以在WikiExtrasPlugin中看到这一点。请参阅changeset 14311和ticket #11041。