Como criar um tema para Plone usando o Diazo

Diazo é uma nova forma de implementar layouts que o Plone está usando e que tem tudo para se tornar a maneira oficial para se desenvolver temas daqui para frente. Basicamente, ele permite que você aplique um tema de uma página com CSS e HTML estático e transformar em um site dinâmico com o mínimo de constrangimento. 

Existem várias vantagens nesta abordagem, entre elas:

  • Abrir a porta para que mais e novos designers possam trabalhar com o Plone.
  • Você pode usar um wireframe HTML criado por um webdesigner que nem conhece o Plone
  • Seu tema passa pode ser facilmente reaproveitado em outros CMS e vice versa.
  • É possível redesenhar uma interface do usuário sem sequer ter acesso ao código fonte da aplicação
  • Você pode implementar temas em um tempo muito mais reduzido.
  • O tema original permanece intocado facilitando a reutilização e manutenção.
  • Há ainda um ganho de performance pois recursos estáticos como imagens, css e javascripts são fornecidos sem passar pelo Plone

Meu primeiro tema


A maneira mais rápida de usar o Diazo é instalar o produto plone.app.theming, com ele você ganha uma nova opção nas configurações do site e então tudo o que precisará fazer é subir um arquivo zipado contendo o seu tema.  Vamos criar um tema bem simples para um fácil e rápido entendimento inicial:

Crie um diretório /meutema e coloque nele o arquivo tema.html:

<html>     <head>         <title>Meu Diazo Feliz</title>         <link rel="stylesheet" href="estilos.css" />     </head>     <body>         <h1 id="title">Meu tema para Diazo</h1>         <div id="content">             Lorem ipsum         </div>     </body> </html>


Coloque também nesta pasta o arquivo estilos.css:

body {     background: #fff repeat-x;     color: #000;     font-family: Arial, Helvetica, sans-serif; } #content {width: 960px; margin: 0 auto;}


Crie então um arquivo chamado rules.xml:

<rules     xmlns="http://namespaces.plone.org/diazo"     xmlns:css="http://namespaces.plone.org/diazo/css"     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">    <theme href="tema.html" />    <replace css:theme="#content" css:content="#portal-column-content" />    <drop css:content="#plone-document-byline" /> </rules>


Por fim crie um arquivo zip desta pasta e suba pelo painel de configurações do Diazo em @@theming-controlpanel

Seu mini-tema deve então estar disponível em seu site.

As regras do jogo


É no arquivo rule.xml que a mágica acontece. Este arquivo contêm as regras que unem o Plone e o tema, substituindo com o espaço do html estático com o conteúdo de verdade. Vamos entender nosso exemplo simples:

<rules>  Aqui são definidos três namespaces que fazem o Diazo funcionar. Graças a eles o Diazo permite o uso de seletores completos de CSS3 e XPath, incluindo coisas como o pseudo seletor nth-child.

<theme> Dá a referencia para o arquivo de html estático que será usado no tema.

<drop> Usado para apagar elementos do tema ou do conteúdo. No nosso exemplo estamos eliminando a tag plone-document-byline e tudo o que há dentro dela.

<replace> Uma das mais usadas na implementação de um tema. Isso porque, como o nome já diz, ela substitui um conteúdo estático por um conteúdo dinâmico que você indicar. No nosso exemplo o Diazo colocará todo o #portal-column-content do Plone dentro da tag #content definida em nosso tema estático.


Existem ainda outras tags que podem ser usadas como <before>, <after>, <strip>. <copy>, <notheme> e <merge>. Para  um conhecimento mais aprofundado consulte a documentação do Diazo ou aguarde futuros posts aqui no nosso blog.

Perigos do Diazo


É necessário destacar que o Diazo facilitará bastante o desenvolvimento de temas no futuro, mas ele também abre a possibilidade de estragarmos o Plone no processo (Como fizemos neste tutorial). O Plone possui uma história de preocupação com a experiência de uso e possui uma interface poderosa que agora pode ser destruída com poucas linhas. Entre outras coisas o uso indiscriminado do Diazo pode significar:

  • Perda das validações de código
  • Perda de usabilidade
  • Perda de portabilidade
  • Perda de acessibilidade
  • Perda na otimização para buscas
  • Possível incompatibilidade com alguns produtos


Sendo assim é necessário mais do que nunca implementar um tema preocupando-se em manter estas e muitas outras vantagens nativas do Plone. Isso significa atenção aos detalhes, auto-crítica e constante acompanhamento do código gerado pelo Plone. Pode ser uma tarefa trabalhosa, mas o resultado é compensador.