Ноу-хау Zope Management Interface для лучшей разработки Plone

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

Редактировать: считайте, что я пишу код в файловой системе, используя профили GenericSetup для внесения изменений в настройки. Я знаю, что вносить изменения в ZMI — плохая идея, и, как правило, держитесь подальше. Но иногда ZMI, безусловно, полезен: для проверки рабочего процесса, или проверки разрешений элемента контента, или установки только одной части профиля через portal_setup. Неужели ничего не стоит знать о ZMI? Или там есть другие полезные мелочи?


person Dan Jacka    schedule 23.02.2011    source источник


Ответы (8)


В ZMI есть несколько мест, к которым я возвращаюсь за диагностической информацией:

  • /Control_Panel/Database: выберите точку монтирования ZODB. Вкладка «Параметры кэша» показывает, какая часть назначенного размера кэша ZODB была использована. Вкладка «Активность» показывает, сколько объектов загружается в кэш и записывается с течением времени.

  • /Control_Panel/DebugInfo/manage: много информации, в том числе показывает, какой запрос обслуживает каждый поток в текущий момент. Ссылки «Подробности кеша» и «Кэшировать экстремальные подробности» дают информацию о том, какие классы объектов в настоящее время находятся в кеше ZODB.

  • Вкладка «Компоненты» в корне сайта Plone: ​​Быстрый способ увидеть, какие локальные адаптеры и утилиты зарегистрированы. НЕ НАЖИМАЙТЕ КНОПКУ ПРИМЕНИТЬ!

  • Вкладка «Отменить» для большинства объектов: посмотрите, кто в последнее время совершал транзакции, влияющие на объект.

  • Вкладка «Безопасность»: посмотрите, какие разрешения действительно действуют для объекта. Вы действительно не хотите менять разрешения здесь в 90% случаев; слишком сложно отслеживать, где установлены разрешения, и они могут быть сброшены рабочим процессом. Вместо этого используйте вкладку «Общий доступ» в пользовательском интерфейсе Plone, чтобы назначить локальные роли. (Единственным исключением является то, что я часто нахожу удобным включить разрешение на добавление для определенного типа в определенных контекстах.) В Zope 2.12 на этой вкладке появилась новая функция для ввода имени пользователя и просмотра того, какие разрешения и роли будут в нем. эффект для этого пользователя, что удобно.

  • Вкладка «Каталог» в portal_catalog: посмотрите, какие данные индекса и метаданные хранятся для определенного пути. (Также можно удалить фиктивные записи из индекса.)

  • Вкладка «Индекс» в portal_catalog: выберите индекс, затем щелкните его вкладку «Обзор», чтобы получить обзор того, какие ключи проиндексированы и какие элементы связаны с каждым ключом.

person David Glick    schedule 26.02.2011

Главное, что нужно знать, это то, что, хотя многие инструменты ZMI обеспечивают быструю настройку через Интернет, настройки, которые вы делаете таким образом, трудно экспортировать из базы данных. Таким образом, они не могут легко перемещаться из среды разработки в производственную среду или из одного развертывания в другое.

В идеале новый разработчик должен использовать ZMI для исследования и поиска точек вмешательства. Затем узнайте, как реализовать те же изменения в надстройках политик (продуктах), которые перемещаются из одного развертывания в другое с гораздо большей воспроизводимостью.

person SteveM    schedule 24.02.2011

Если вы хотите писать код для Plone, лучше избегать ZMI. Идея делать что-то через ZMI очень ограничена и не рекомендуется — все больше и больше вещей там недоступно, и в какой-то момент это исчезнет.

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

person Hanno Schlichting    schedule 24.02.2011
comment
Я часто использую ZMI для детальной проверки состояния сайта Plone. Инструмент portal_setup также является важной частью набора инструментов разработчика Plone. А для быстрых и грязных случаев использования TTW настройка CSS, изображений и шаблонов может быть полезной. Вы правы в целом, конечно. - person optilude; 26.02.2011

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

Но ZMI по-прежнему очень полезен для отладки и просмотра конкретных конфигураций сайта.

Вот некоторые инструменты в ZMI, к которым я регулярно обращаюсь:

  • portal_javascripts: чтобы отключить отладку. Проверяем, какие скрипты есть, каковы их условия отрисовки и найдены ли они?
  • portal_css: в основном то же самое, что и portal_javascripts, но для таблиц стилей.
  • portal_types: чтобы увидеть свойства типа. Можно ли его создать глобально? Какие типы вы можете создать внутри него? Каков его вид по умолчанию? И Т. Д.
  • portal_catalog: какие существуют индексы? Какие метаданные есть в каталоге? Вы можете очистить и перестроить каталог и даже просмотреть каталог.
  • portal_workflow: какие состояния/переходы/разрешения есть в определенном рабочем процессе? Какой рабочий процесс активен для определенного типа?
  • portal_properties/site_properties: просмотр и установка свойств для всего сайта. Многие из этих настроек находятся в plone_control_panel (т.е. вне ZMI), но здесь они находятся на одной странице, и в ZMI быстрее ориентироваться.
  • portal_skins: посмотрите, какие папки скинов установлены. См. порядок слоев кожи (через вкладку свойств). Вы также можете редактировать шаблоны, таблицы стилей и javascripts в каталогах скинов. Не рекомендуется! Но полезно для отладки.
  • portal_setup: некоторые очень большие и сложные веб-сайты Plone могут сломаться, если вы просто волей-неволей добавите/удалите/переустановите надстройки. Часто безопаснее просто запустить конкретное обновление GenericSetup. Например, если вы добавили новый портлет, лучше импортируйте конкретный шаг (portlets.xml) через portal_setup (вкладка импорта), а затем переустановите весь продукт.
  • portal_actions: укажите, какие действия будут отображаться/присутствовать.
  • portal_quickinstaller: быстрая переустановка и удаление надстроек. Часто быстрее и легче, чем загрузка эквивалента Plone Control Panel.
  • acl_users: иногда при использовании надстройки, такой как LDAPUserFolder, вам придется копаться в acl_users, чтобы настроить и протестировать ее. Здесь же можно создавать пользователей, хотя лучше это делать через панель управления Plone (т.е. не в ZMI)

В ZMI есть много других инструментов и вещей, которые можно настроить (и сломать ваш сайт), но вышеперечисленные — это то, что я использую в 90% случаев.

person JC Brand    schedule 28.02.2011

Инструмент portal_historiesstorage может занимать много места на диске. Любой тип контента, настроенный на сохранение ревизий, сохраняет их здесь, и по умолчанию Plone сохраняет все ревизии (см. инструмент portal_purgepolicy).

Мне нужны все ревизии рабочего Data.fs, но после того, как я взял копию для разработки, первое, что я делаю, это очищаю portal_historiesstorage. Процедура такова:

  • Перейдите на свой сайт Plone в ZMI
  • Удалите инструмент portal_historiesstorage.
  • Перейдите в portal_setup, вкладка Импорт
  • В разделе «Выбрать профиль или снимок» выберите «CMFEditions».
  • Выберите шаг с обработчиком Products.GenericSetup.tool.importToolset
  • Снимите флажок «Включить зависимости?»
  • Нажмите «Импортировать выбранные шаги», чтобы повторно добавить portal_historiesstorage.
  • Упакуйте Data.fs и удалите полученный Data.fs.old из файловой системы.

На моем 3G Data.fs эта небольшая последовательность удаляет 2,5G!

Я делал это только при разработке Data.fs. Без совета от кого-то, кто действительно знает, я не рекомендую делать это на вашем производственном сайте.

person Dan Jacka    schedule 23.02.2011
comment
Не пытайтесь удалить инструменты в ZMI. Использование управления версиями создаст больше данных, но чтобы отключить управление версиями, вы должны перейти на панель управления типами, выбрать каждый тип контента (например, страницу) и изменить политику управления версиями с автоматической на отсутствие управления версиями. - person Hanno Schlichting; 01.03.2011
comment
Мой совет касается удаления данных о версиях из базы данных разработки. Изменение политики управления версиями не удаляет старые версии. Согласитесь, удаление инструментов не идеально, но одноразовый Data.fs не причинит вреда. Если вы знаете, как безопасно удалить старые версии, я был бы рад это услышать. - person Dan Jacka; 01.03.2011

Обычно у интегратора или разработчика нет причин прикасаться к ZMI для возможных задач обслуживания. Почти любую настройку можно выполнить с помощью Python или профиля GenericSetup. Преимущество профилей: повторяемость — возможность поддерживать файловую систему — возможность поставить файлы под контроль версий.

Возможность работать и настраивать через ZMI отчасти работает против Plone, особенно когда Plone выполняет дополнительные действия под капотом. Поэтому единственной рекомендацией может быть: оставайтесь в ZMI, если можете. ZMI не является подходящей заменой для использования пользовательского интерфейса Plone, и к нему следует прикасаться только в том случае, если вы действительно знаете, что делаете.

person Andreas Jung    schedule 24.02.2011

Да, ZMI предназначен для случайных задач обслуживания или, при нажатии, для быстрой и грязной настройки CSS или шаблона. Он не предназначен для какой-либо реальной работы по «кодированию», и в контексте Plone его лучше всего рассматривать как странный и минимально полезный пережиток истории Zope.

person Jon Stahl    schedule 24.02.2011

Portal_actions также полезен для более гибкой навигации верхнего уровня. но опять же лучше настроить через gnericssetup.

person djay    schedule 27.02.2011