#html #css #themes #plone #xdv
#HTML #css #темы #plone #xdv
Вопрос:
Мы используем статические HTML-файлы в качестве темы для нашего сайта Plone 4 с collective.xdv.
Сами статические HTML-файлы доступны для открытия в веб-браузере, что упрощает процесс тематизации для авторов темы.
Однако файлы темы используют каталоги ресурсов файловой системы, которые упоминаются в HTML как
<link rel="stylesheet" type="text/css" href="../css/jquery/accordion.css"/>
Как можно было бы переписать их в абсолютный URL-адрес при подаче через Plone с пользовательским префиксом? (Можно ли это сделать в rules.xml ??
Например. перевести
../images/logo.gif
Для
http://portal_url/images/logo.gif
Ответ №1:
Если вы используете параметр «absolute_prefix»
<registry>
<record interface="collective.xdv.interfaces.ITransformSettings" field="absolute_prefix">
<value>/ resource example.sitetheme</value>
</record>
</registry>
и управляйте своими статическими файлами через реестры ресурсов с помощью опции «applyPrefix = True» вы можете использовать как относительные, так и абсолютные URL-адреса внутри вашего html-файла темы (сохраняя возможность для авторов темы просто использовать статический каталог независимо от Plone) и использовать
<drop theme="/html/head/style" />
<append theme="/html/head" content="/html/head/style " />
удалить их из шаблона темы и вернуть все статические ресурсы обратно из реестров ресурсов (с дополнительным преимуществом их объединения для производственного использования). Подробности см. в collective.xdv.
Примечание: хотя Nginx
мы очень быстро обслуживаем статические файлы, мы получили лучшую общую производительность от использования реестров ресурсов для статических файлов нашей темы в сочетании с обычным кэширующим прокси (Varnish) спереди.
Комментарии:
1. Спасибо! Это то, что я искал. Вы знаете, где находится этот код, если я захочу его вставить?
Ответ №2:
Зарегистрируйте статический каталог как ресурс. Храните каталоги, содержащие правила, и медиафайлы отдельно.
Чтобы зарегистрировать каталог ресурсов внутри вашего пакета с именем ‘my.package’, используйте следующее в вашем configure.zcml
<browser:resourceDirectory
name="my.package.media"
directory="static"
/>
В вашем шаблоне теперь вы сможете получить доступ к ресурсу, используя ‘ resource my.package.media/name-of-resource’, т.е.
<link rel="stylesheet" type="text/css" href=" resource my.package.media/css/jquery/accordion.css"/>
Теперь это должно работать по назначению даже после перезаписи URL.
Избегайте использования абсолютных путей при определении расположения ваших правил и шаблонов XDV. Вместо этого просто используйте Python 🙂 Например, мы разместили наши файлы шаблонов (.html) и файлы правил (.xml) в каталоге под названием xdvstuff, внутри нашего пакета:
python://my.package/xdvstuff/theme.html
python://my.package/xdvstuff/theme.xml
Комментарии:
1. Спасибо за комментарий, но, как я уже отмечал, я бы хотел вообще не трогать ссылки в шаблонах. Суть в том, чтобы переписывать URL-адреса, а не создавать их вручную.