Pular para o conteúdo. Ir para a navegação
Ações do site
Opções do usuário

TcheZope.org

Você está aqui: Página Inicial Documentação Manuais Archetypes Criar Uma View Customizada
Ações do documento

2. Criar Uma View Customizada

Um nível acima
Tradução do arquivo custom_view

Nota: O autor deste documento não é um expert apenas alguém que está a iniciar a sua aprendizagem de Python/Zope/Plone/Archetypes portanto é possível que existam alguns erros nesta explicação ou coisas que não são estritamente necessárias.

Este documento baseia-se num tipo chamado Quote, criado pelo autor através da utilização do Archetypes.

O primeiro passo consiste em criar uma directoria chamada skins dentro da directoria Quote (esta directoria é a que irá ser colocada na directoria Products). Dentro desta (skins) outra directoria chamada Quote deverá ser adicionada e dentro desta irão ser guardados os templates.

O template QuoteView.pt foi criado na directoria Quote/skins/Quote com o seguinte código::

 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
      lang="en"
      metal:use-macro="here/main_template/macros/master">
        <body>
                <div metal:fill-slot="main">
                        <div metal:define-macro="main" tal:omit-tag="">
                                <h1 tal:content="here/title_or_id" />
                                <p tal:content="here/getQuote"/>
                                <p tal:content="here/getAuthor"/>
                        </div>
                </div>
        </body>
 </html>

Caso esteja interessado num exemplo mais completo, veja: http://cvs.sf.net/viewcvs.py/archetypes/ArchExample/skins/archexample/article_view.pt?view=markup

Na directoria Quote/ existe um script chamado config.py onde certas constantes se encontram definidas. Nesse ficheiro foram adicionadas as seguintes constantes::

 SKINS_DIR = 'skins'
 GLOBALS = globals()

Cada vez que necessitar de usar estas constantes é necessário importá-las antes. Tal pode ser consguido através da utilização da seguinte linha::

 from Products.Quote.config import SKINS_DIR, GLOBALS

onde Quote deverá ser substituido pelo nome do produto desenvolvido pelo leitor.

Caso esteja tentado a mudar o nome da directoria skins o autor desaconselha-o pois ele tentou e não funcionou (pelo menos com o código dele).

Agora é necessário instalar os componentes apropriados. No Quote/Extensions/Install.py (script de instalação do produto) adiciona-se, na função install, uma chamada a install_subskin() como exemplificado em seguida (ficheiro Install.py na sua totalidade)::

 from Products.Quote.config import PROJECTNAME, GLOBALS
 from Products.Archetypes.public import listTypes
 from Products.Archetypes.Extensions.utils import installTypes, install_subskin

 from StringIO import StringIO

 def install(self):
 out = StringIO()

 installTypes(self, out, listTypes(PROJECTNAME), PROJECTNAME)

 install_subskin(self, out, GLOBALS)

 print >> out, "Successfully installed %s." % PROJECTNAME
 return out.getvalue()

No ficheiro __init__.py adicione esta linha::

 registerDirectory(SKINS_DIR, GLOBALS)

e tenha a certeza que está a importar as constantes SKINS_DIR e GLOBALS.

A última coisa a ser adicionada é a classe principal do produto, neste caso, Quote (acções definidas no Quote.py)::

 class Quote(BaseContent)
        [...]
        actions = ({'id': 'view',
                'name': 'View',
                'action': 'string:${object_url}/QuoteView',
                'permissions': (CMFCorePermissions.View,)},)

E caso não exista nenhum erro, nem da parte do autor nem da parte do leitor, neste momento a view deverá encontrar-se customizada.

Espero que isto o tenha ajudado.

por Diego Pereira do Nascimento Última modificação 07/03/2007 05:08 Creative Commons
Navegação
Enquete
Como você efetiva sua participação comunitária?








Mais »