2015-12-10 6 views
0

Я написал плагин, где я связываю некоторые изображения из папки htdocs плагина. Для этого я использую путь /chrome/pluginname/.... Когда я тестировал плагин на другом сервере, где было установлено несколько проектов (на моем dev-компьютере у меня есть только один проект Trac), это не сработало, потому что имя проекта было частью URL-адреса, но путь htdocs был добавлен после порта.Относительные пути при наличии нескольких проектов Trac

следующие URL-адреса работали на соответствующем сервере, чтобы найти файл изображения:

На моем Dev компьютере:<ip>:<port>/chrome/pluginname/...

На тест Apache сервера:<ip>:<port>/projectname/chrome/pluginname/...

/chrome/pluginname/... прилагается после порта, а не после имени проекта, поэтому он не может найти файлы. Итоговый URL-адрес: <ip>:<port>/chrome/pluginname/..., как и на моем компьютере.

Как я могу динамически включать имя проекта в URL-адрес, чтобы избежать его жесткого кодирования, или вместо этого сделать относительный запуск пути после имени проекта?

ответ

1

В коде Python сгенерируйте URL-адрес, используя req.href.chrome('pluginname/...'). В коде шаблона используйте ${href.chrome('pluginname/...')}.

Если вам нужно обслуживать динамически созданный CSS, у вас есть несколько вариантов. Если вы пишете свою собственную страницу, вы можете поместить CSS в блок <style> страницы HTML, используя переменные Genshi в CSS. Если вы пытаетесь изменить стиль страниц, существующих в Trac, он становится намного сложнее. Лучший подход, который я видел, - реализовать IRequestHandler для обслуживания запросов к таблице стилей. Это можно увидеть в WikiExtrasPlugin. См. changeset 14311 и ticket #11041.

+0

Если мне нужно создать такой путь в файле CSS, как я могу это сделать? Я хочу добавить таблицу стилей, которая добавляет фоновое изображение. Могу ли я каким-то образом добавить 'add_stylesheet()' с кодом CSS как строку вместо имени файла? –

+1

Я отредактировал свой комментарий выше, чтобы ответить на ваш вопрос. – RjOllos