"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:
> 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).