2015-11-18 3 views
2

Наш институт работает с Plone 5.0 и 4.3 и переносит в них десятки старых сайтов plone.Как добавить дополнительные страницы: Diazo Theming vs Portal View Customizations

Мы создали тему Диазо, и она размещена, чтобы предоставить нашу тему всем сайтам plone. Существуют конкретные страницы-листы, такие как «Вход», которые необходимо изменить. Есть два способа, которые мы видим для этого:

  1. Настройка портала. Проблема в том, что мы не можем размещать этот шаблон централизованно и не можем изменить его на одно место, чтобы изменить его повсюду. Это приведет к проблемам обслуживания.

  2. Диазо. Мы могли бы поместить все html в index.html, а затем удалить код, который нам не нужен, с помощью rules.xml. Однако это кажется супер хамским и неэлегантным. Файл индекса будет расти и расти в размерах.

Каков наилучший подход к чему-то подобному?

Моя идея: (скажите, пожалуйста, если это хорошо или плохо) В Diazo, rules.xml будет загружать файл правил подмножества, называемый login-rules.xml. В login-rules.xml я бы поставил правило замены. Правило замены будет содержать в себе весь HTML-код входа.

ответ

4

У вас действительно есть два вида проблем.

Решает, где вмешиваться для ваших страниц входа. Другой способ управления развертыванием пользовательского кода.

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

Если требуемые изменения выходят за рамки простого представления и требуют пользовательской логики, или если изменения в презентации начинают требовать сложного пользовательского XSLT, внесите изменения с помощью настройки вида. Но не делайте этого с помощью инструмента настройки портала View View. Настройка, которая требуется на нескольких сайтах, должна идти в пакеты Python, хранящиеся в репозитории с контролем источника, например git. Это касается правил Diazo и файлов тем, а также шаблонов.

Вы можете создать скелеты для этих пакетов с помощью ZopeSkel или mr.bob. Используйте метод JBOT в этих пакетах для настройки отдельных файлов шаблонов.

Управление развертыванием намного проще при использовании пакетов файловой системы из репозитория. Вы можете использовать mr.developer внутри своей сборки, чтобы автоматически проверять текущую версию (или конкретный тег или ветвь) пакета при запуске buildout. Затем, когда вам нужно нажимать изменения на несколько серверов, вы запускаете buildout на каждом из них и перезапускаете ZEO-клиенты. Это может быть автоматизировано с помощью таких инструментов, как Ansible. Смотрите примеры использования Plone's Ansible Playbook.

В приведенном выше примере я использовал несколько бит специфического для Plone-жаргона. Все они хорошо документированы по адресу http://docs.plone.org.

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