Перезапись URL с помощью XDV - PullRequest
2 голосов
/ 20 апреля 2011

Мы используем статические 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 ]

4 голосов
/ 20 апреля 2011

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

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

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

0 голосов
/ 20 апреля 2011

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

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