有多个 Trac 项目时的相对路径
Relative paths when having multiple Trac projects
我写了一个插件,其中 link 插件的 htdocs 文件夹中的一些图像。为此,我使用路径 /chrome/pluginname/...
。当我在安装了多个项目的另一台服务器上测试插件时(在我的开发计算机上我只有一个 Trac 项目),它没有工作,因为项目名称是 URL 的一部分,但是htdocs 路径附加在端口之后。
以下 URLs 在各自的服务器上工作以查找图像文件:
在我的开发计算机上: <ip>:<port>/chrome/pluginname/...
在 Apache 测试服务器上: <ip>:<port>/projectname/chrome/pluginname/...
/chrome/pluginname/...
附加在端口之后,而不是在项目名称之后,因此找不到文件。结果 URL 是 <ip>:<port>/chrome/pluginname/...
,就像在我的开发电脑上一样。
如何在 URL 中动态包含项目名称以避免对其进行硬编码,或者使相对 /chrome/pluginname/...
路径在项目名称之后开始?
在 Python 代码中,使用 req.href.chrome('pluginname/...')
生成 URL。在模板代码中,使用 ${href.chrome('pluginname/...')}
.
如果您需要提供动态生成的 CSS,您有几个选择。如果您正在编写自己的页面,您可以将 CSS 放在 HTML 页面的 <style>
块中,使用 CSS 中的 Genshi 变量。如果您试图修改 Trac 中存在的页面样式,它会变得更加复杂。我见过的最好的方法是实现 IRequestHandler
来满足对样式表的请求。您可以在 WikiExtrasPlugin. See changeset 14311 and ticket #11041.
中看到它的实现
我写了一个插件,其中 link 插件的 htdocs 文件夹中的一些图像。为此,我使用路径 /chrome/pluginname/...
。当我在安装了多个项目的另一台服务器上测试插件时(在我的开发计算机上我只有一个 Trac 项目),它没有工作,因为项目名称是 URL 的一部分,但是htdocs 路径附加在端口之后。
以下 URLs 在各自的服务器上工作以查找图像文件:
在我的开发计算机上: <ip>:<port>/chrome/pluginname/...
在 Apache 测试服务器上: <ip>:<port>/projectname/chrome/pluginname/...
/chrome/pluginname/...
附加在端口之后,而不是在项目名称之后,因此找不到文件。结果 URL 是 <ip>:<port>/chrome/pluginname/...
,就像在我的开发电脑上一样。
如何在 URL 中动态包含项目名称以避免对其进行硬编码,或者使相对 /chrome/pluginname/...
路径在项目名称之后开始?
在 Python 代码中,使用 req.href.chrome('pluginname/...')
生成 URL。在模板代码中,使用 ${href.chrome('pluginname/...')}
.
如果您需要提供动态生成的 CSS,您有几个选择。如果您正在编写自己的页面,您可以将 CSS 放在 HTML 页面的 <style>
块中,使用 CSS 中的 Genshi 变量。如果您试图修改 Trac 中存在的页面样式,它会变得更加复杂。我见过的最好的方法是实现 IRequestHandler
来满足对样式表的请求。您可以在 WikiExtrasPlugin. See changeset 14311 and ticket #11041.