Перезапись URL с помощью XDV

Мы используем статические HTML-файлы в качестве темы для нашего сайта Plone 4 вместе с коллектива.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

2 ответа

Если вы используете настройку 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 " />

удалить их из шаблона темы и извлечь все статические ресурсы обратно из реестров ресурсов (с дополнительным преимуществом их объединения для производственного использования). См. Коллективный.xdv для деталей.

Примечание: хотя Nginx очень быстро обслуживая статические файлы, мы получили более высокую общую производительность благодаря использованию реестров ресурсов для статических файлов нашей темы в сочетании с обычным кэширующим прокси (Varnish) впереди.

Зарегистрируйте статический каталог как ресурс. Храните каталоги, содержащие правила и файлы мультимедиа отдельно.

Чтобы зарегистрировать каталог ресурсов внутри вашего пакета с именем "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
Другие вопросы по тегам