Используйте viewlets для обоих вариантов использования.Представление может быть вставлено в разные части отображаемой страницы, в зависимости от того, к какому администратору вейвлета вы зарегистрировали его, и к каким интерфейсам применяется это представление.
Диспетчер вейвлета определяет местоположение, в которое вставлен вьюлет,и интерфейс, для которого вы регистрируете представление, определяет, по какому типу URL будет отображаться представление.Регистрация для "*"
означает показ везде, а регистрация для "Products.ATContentTypes.interfaces.IATDocument"
означает, что он будет виден только при просмотре страницы.
Чтобы увидеть, какие менеджеры вейвлетов доступны и какие тамплеты зарегистрированы, для любогоданный URL, просто добавьте "/ @@ manage-viewlets" к URL.Там вы можете увидеть, что есть менеджер plone.abovecontent
и plone.abovecontenttitle
, который позволит вам вставлять туда HTML.Большинство из них определены в пакете plone.app.layout
, и вам нужно найти там интерфейс, зарегистрированный с этим именем (найдите его в папке с яйцами в buildout).
Вы регистрируете представлениеиспользуя ZCML, поэтому у вас уже должен быть пакет Python, загруженный для вашего сайта.Чтобы вставить произвольный шаблон, просто зарегистрируйте его с директивой browser:viewlet
:
<browser:viewlet
name="your.html.snippet"
for="Products.ATContentTypes.interfaces.IATDocument"
manager="plone.app.layout.viewlet.interfaces.IAboveContent"
template="htmlsnippet.pt"
permission="zope.Public"
/>
Теперь для менеджера представлений plone.abovecontent
зарегистрирован виджет, основанный на шаблоне htmlsnippet.pt
.Этот шаблон является полным шаблоном страницы zope, так что вы можете использовать такие вещи, как интернационализация:
<div i18n:domain="your">
<h3 i18:translate="html_snippet_header">This is a snippet of HTML that'll be injected into all Pages!</h3>
</div>
Вы также можете добавить класс полного представления браузера для резервного копирования представления, и шаблон может получить доступ к этому классу.через пространство имен «view /», чтобы вы могли добавить туда метод для возврата произвольного текста, который нужно вставить.
Вы можете вручную включить просмотр через URL-адрес вышеупомянутого «/ @@ manage-viewlets» или выможно использовать профиль GenericSetup, где viewlets.xml позволяет вам управлять регистрациями и порядком просмотра:
<?xml version="1.0"?>
<object>
<order manager="plone.abovecontent" skinname="My Theme"
based-on="Plone Default">
<viewlet name="your.html.snippet" insert-before="*"/>
</order>
</object>
Для получения дополнительной информации я отсылаю вас к учебнику по на Plone.org..