【问题标题】:Relative paths when having multiple Trac projects拥有多个 Trac 项目时的相对路径
【发布时间】:2015-12-10 14:04:57
【问题描述】:

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

以下 URL 在各自的服务器上工作以查找图像文件:

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

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

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

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

【问题讨论】:

    标签: path filepath relative-path trac


    【解决方案1】:

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

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

    【讨论】:

    • 如果我需要在 CSS 文件中生成这样的路径,我该怎么做?我想添加一个添加背景图像的样式表。我可以以某种方式将 CSS 代码作为字符串而不是文件名来执行 add_stylesheet() 吗?
    • 我已经编辑了我上面的评论来解决你的问题。
    猜你喜欢
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 2014-02-03
    • 1970-01-01
    相关资源
    最近更新 更多