terça-feira, 10 de julho de 2007

Content Providers e Viewlets no Plone 3

Este é o início de uma série de pequenos artigos introdutórios sobre as novidades da próxima versão do Plone. Para deixar claro, a intenção não é detalhar o funcionamento, nem explorar todas as possibilidades, apenas tornar um pouco mais visível alguns dos muitos recursos interessantes que já estão disponíveis.

Exatamente... é para você não fazer aquela cara de 'WTF?!?' quando estiver conversando com o pessoal do Plone na próxima PyConBrasil, aliás, o que você está esperando pra fazer a sua inscrição agora mesmo? :-)

Para começar, o Plone é um sistema de gerenciamento de conteúdos (CMS). Se você conhece algumas das outras 775 soluções CMS atualmente listadas no site CMSMatrix, faça uma rápida comparação delas com a versão anterior do Plone, a 2.5 (lembre-se, a 3.0, está saindo do forno!) e veja se você também se surpreende com os resultados... ;-)

Bom, mas vamos ao que interessa... um dos recursos mais solicitados era a possibilidade de gerenciar os elementos que compõem o visual de um Plone site, como por exemplo a caixa de buscas, as ações de um documento ou a barra pessoal de cada usuário, só para citar alguns casos. Quando eu digo gerenciar, me refiro a possibilidade de adicionar e remover, além de alterar a ordem em que os elementos aparecem, sem precisar ficar personalizando os templates, especialmente o main_template... que é o ponto central de toda a identidade visual do site.

O Plone 3 usa extensivamente os conceitos de content providers e viewlets para resolver essa e outras questões (como os portlets, mas isso fica para o próximo post). Se você olhar com atenção, notará que muitos dos templates agora possuem fragmentos do tipo:

<tal:block replace="structure provider:foo" />

Note o novo namespace provider introduzido pelo pacote zope.contentprovider do Zope3. Ele renderiza o conteúdo do viewlet manager especificado. Para saber mais sobre como criar e registrar seus próprios viewlet managers, bem como especificar a ordem e quais viewlets aparecem e onde, consulte o tutorial na seção de documentação do Plone. Essa personalização pode ser facilmente feita num perfil do GenericSetup, bastando fornecer seu próprio arquivo viewlets.xml.

Obviamente que se você não possuir acesso ao sistema de arquivos do servidor Zope, as coisas podem complicar. Entretanto, isso não significa que não possa ser feito. Você pode editar as definições das viewlets em cada uma dos viewlets managers registrados, basta acessar a view /manage-viewlets na raiz do seu Plone site. No momento ainda não existe um link visível onde você possa clicar para ir nessa tela, mas isso deve ser resolvido em breve.

Infelizmente nem tudo é perfeito no mundo TTW. A adição de novas viewlets aos viewlet manager existentes só pode ser feita através de código Python irrestrito ou por um perfil do Generic Setup...

Isso resume a primeira dica sobre o tema, assim como (espero) deixa o prezado leitor na expectativa do próximo tópico... ;-)

2 comentários:

Unknown disse...

Ótima idéia!

Aguardo cenas dos próximos capítulos... :)

Rafa Bazzanella disse...

Oi Deo,

Eu estava fazendo uns testes/estudando Plone 3 só que surgiu uma dúvida quando eu quis chamar a portlet de notícias na página inicial do meu site. Tentei o seguinte:
<tal:block replace="structure provider:portlets.News" /> e não deu certo.
Não tenho que pegar o name que está configurado em lib/python/plone/app/portlets/portlets/configure.zcml?

Valeu.