2015-11-11 8 views
0

Я пытаюсь включить некоторые изображения в шаблон Genshi для своего плагина Trac, но он всегда отображает только альтернативный текст, потому что он не может найти изображения.Включая изображения в шаблон Genshi/Trac

У меня есть следующий (X) HTML код:

<div> 
    <img src="file://c:/path/to/image.png" alt="asdf" /> 
</div> 

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

Но когда я вставляю фрагмент кода в шаблон Genshi и использую его в Trac, изображение не может быть найдено. Однако, когда я смотрю на исходный код HTML в веб-браузере и копирую URL-адреса на новую вкладку браузера, он снова отображается правильно. Это означает, что только сервер не может найти изображение.

Изображения находятся в каталоге внутри файла python-egg, а путь указывает непосредственно на каталог, созданный Trac, который также содержит мои файлы CSS и HTML, оба из которых загружены правильно. Изображения правильно указаны в сценарии установки, который создает яйцо.

Как мне связать изображения в (X) документах HTML при их использовании с сервером?
Есть ли способ включить изображения в документы Genshi? (Я не нашел его.)

+0

В Trac вы должны использовать хром-относительные пути. Чтобы обслуживать образ из вашего каталога 'htdocs' среды, используйте'/chrome/site/image.png', или используйте [доступные переменные шаблона] (http://trac.edgewall.org/browser/tags/trac- 1.0.9/ПРОФ/шаблоны/about.html? отметки = 38 # L33). Для плагина вы должны реализовать [ITemplateProvider] (http://trac.edgewall.org/wiki/TracDev/PluginDevelopment/ExtensionPoints/trac.web.chrome.ITemplateProvider). – RjOllos

+0

Вы имеете в виду, что для плагина я должен использовать ITemplateProvider вместо этого, используя класс chrome, или «дополнительно»? У меня уже есть компонент, реализующий поставщик ITEMplate, и возвращаемый путь верен. Должен ли я сам вызвать get_htdocs_dirs() или есть способ доступа к htdocs, позволяя Trac вызывать метод get_htdocs_dirs()? –

+0

Я вас неправильно понял, я думал, вы имеете в виду класс хром. Теперь, используя правильный путь, он работает. Я напишу ответ ниже, чтобы объяснить, что я сделал. –

ответ

0

Благодаря комментарию RjOllos и this site я смог исправить это, попробовав все типы URL. Хотя он говорит, что для плагина будет /chrome/<pluginname>, на самом деле это всего лишь /chrome, который сработал. См. Править ниже! Таким образом, полный URL-адрес - <ip>:<port>/chrome/path/to/image.png.

EDIT: Я обнаружил, что фактически использовал версию /chrome/pluginname, только что я не использовал имя моего плагина как «pluginame». См. Мой комментарий ниже. Кажется, что /chrome/pluginname действительно должен быть /chrome/htdocsname или что-то в этом роде, если вы используете другое имя, а не имя плагина при реализации ITemplateProvider. В моем случае я назвал его images, который был тем же именем, что и папка. КОНЕЦ EDIT

Еще одна ошибка, которую я сделал и забыл первоначальный косой черты (chrome/path/to/image.png), который вызвал Trac для сборки URL в <ip>:<port>/<current page>/chrome/path/to/image.png.

+0

'/ chrome/' необходимо, потому что '' обычно возвращается как первая запись кортежа, возвращаемого реализацией 'ITemplateProvider.get_htdocs_dirs'. Вы внедрили [ITemplateProvider] (http: //trac.edgewall.org/wiki/TracDev/PluginDevelopment/ExtensionPoints/trac.web.chrome.ITemplateProvider) в вашем плагине? – RjOllos

+0

Да, у меня есть. И использование имени плагина в URL-адресе вызвало ошибку, в которой говорилось, что файл не найден. –

+0

Мне нужно будет увидеть ваш код, чтобы определить, в чем проблема. Однако NoteBoxMacro - простой пример, см. [Macro.py] (https://trac-hacks.org/browser/noteboxmacro/trunk/notebox/macro.py?revision=13675&marks=62#L50) и [setup.py] (https://trac-hacks.org/browser/noteboxmacro/trunk/setup.py?revision=13600&marks=17#L13). – RjOllos

 Смежные вопросы

  • Нет связанных вопросов^_^