Atualizar 'Dicas de Plone 6 e Volto'

master
parent
commit
6c5a8a5553
  1. 94
      Dicas-de-Plone-6-e-Volto.md

94
Dicas-de-Plone-6-e-Volto.md

@ -207,6 +207,100 @@ Projetos de exemplo:
- [eea.banner](https://github.com/eea/eea.banner) (usado pelo volto-banner)
- [collective.volto.cookieconsent](https://github.com/collective/collective.volto.cookieconsent)
#### Behaviors para configuração do site
"Behaviors" são schemas que pode ser atachados em tipos de conteúdo, acrescentando campos a eles. São excelentes para acrescentar configuração ao tipo de conteúdo `Plone Site`, que representa o site como um todo. Desta forma, não é necessário mexer com itens de painel de controle.
Passo-a-passo para incluir configuração no `Plone Site`:
1. Crie o schema com a configuração a ser incluída. É comum criar um diretório `behaviors` no seu addon padrão.
```
# tema.py
from plone.autoform.interfaces import IFormFieldProvider
from plone.supermodel import model
from zope.interface import provider
from zope import schema
from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
THEMES = SimpleVocabulary([
SimpleTerm(value="modern", title="Modern"),
SimpleTerm(value="solarized", title="Solarized"),
SimpleTerm(value="darcula", title="Darcula"),
])
@provider(IFormFieldProvider)
class IThemeSettings(model.Schema):
theme = schema.Choice(
title="Tema do portal",
vocabulary=THEMES,
required=True,
description="Tema do Portal",
default="modern"
)
```
2. Crie um arquivo `configure.zcml` para registrar o seu behavior:
```
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser"
xmlns:plone="http://namespaces.plone.org/plone"
xmlns:zcml="http://namespaces.zope.org/zcml"
i18n_domain="kitconcept.intranet"
>
<!-- este include é necessário para "habilitar" a funcionalidade de behaviors -->
<include
package="plone.behavior"
file="meta.zcml"
/>
<plone:behavior
name="portalmodelo.tema"
title="Tema do Portal"
description="Escolhe o tema do portal"
provides=".tema.IThemeSettings"
/>
</configure>
```
- em `provides`, coloque o nome do arquivo python ("tema" neste caso) e do schema (`IThemeSettings`)
- em `name`, coloque um identificador para o behavior. Será usado no próximo passo.
3. Acrescente o diretório `behaviors` no `configure.zcml` da raiz do seu addon padrão:
```
<include package=".behaviours" />
```
> Não é óbvio, mas o ponto de entrada do diretório "behaviors" é o arquivo `behaviors/configure.zcml`
4. Atache o behavior no tipo de conteúdo. Para isto, crie um arquivo em `profiles/default/types/Plone_Site.xml`
> O nome do arquivo é uma pegadinha. Tem de usar "_" no lugar de " ", se o tipo de conteúdo tiver espaços.
```
<?xml version="1.0"?>
<!-- aqui dentro do XML, deve ser usado o nome do tipo de conteúdo com " ", não com "_" -->
<object name="Plone Site" meta_type="Dexterity FTI">
<property name="behaviors" purge="false">
<element value="portalmodelo.tema" />
</property>
</object>
```
> Como tudo que mexe dentro de profiles, é necessário ou recriar o site (`DELETE_EXISTING=1 make backend-create-site`) ou fazer um passo de atualização de dados (`migration`)
> Mais coisas são possíveis na definição do schema (sub-títulos, usar widgets customizados, etc). Veja [o código do volto-light-theme para ideias](https://github.com/kitconcept/volto-light-theme/blob/main/backend/src/kitconcept/voltolighttheme/behaviors/customizations.py).
[Documentação](https://6.docs.plone.org/backend/behaviors.html)
## Frontend (Volto)
O frontend é chamado de Volto. Escrito em react/javascript, é feito para substituir o antigo frontend do plone (feito em python, direto no backend).

Loading…
Cancel
Save