2008/4/14 jgbalb <[EMAIL PROTECTED]>:
>
> Senhores,

Opa!

> tenho um script python que me devolve uma tabela em html
> (<TABLE>) com conteudos nos TD´s (<td>). Preciso que esta tabela
> apareça em uma página Plone. Como posso fazer isto?


Bom, conceitualmente sua tabela deve ser exibida por um template (Page
Template, vc vai ver mta gente tratando como ZPT). E nele eh q deveriam ser
exibidas as informacoes.

Nao misture a camada de exibicao (seu futuro template) como o a camada
logica, seu script. O script foi feito apenas para fazer logica, e nao para
aprensentar conteudo okay?

No seu template, vc resolve isso facil com o seguinte:

<table tal:define="objetos context/objectValues">
 <tr tal:repeat="objeto objetos">
   <td tal:content="objeto/Title">Titulo</td>
 </tr>
</table>

onde:

   - tal:define - define variaveis
   - context/objectValues eh a lista de valores que vc deseja iterar
   - tal:repeat - eh o loop
   - tal:content - preenche a tag HTML onde estah contido (no caso a td),
   pela expressao que recebe (objeto/Title no caso)

Detalhe importante, nao use objectValues, ele instancia todos os objetos
listados, isso eh caro pro Zope (App Server)!

Se estiver naquele famoso "um dia de furia" e mesmo assim quiser descer a
loja de marreta ... ai teu script retorna a tabela e no teu template vc dah
um:

<table tal:replace="structure context/teu_hammer_script" />

onde:
replace substitui a tag HTML onde estah contido (table no caso), pelo
resultado da expressao recebida

O structure aqui eh para reenderizar teu HTML e nao exibir ele como strings.

Lembrando que isto nao deve ser feito! (mas jah ouvo o barrulho da marreta
rs)

Se nao souber como colocar seu template com aquela cara Plone:

<html metal:use-macro="context/main_template/macros/master">

  <body metal:fill-slot="main">

   seu codigo aqui

  </body>

</html>

Mas macros (caso vc ainda nao conheca) eu deixo pra vc aprender sozinho ;)

Boa sorte, abraco!

> Grato antecipadamente,
>
> João
>
> 



-- 
Castardo
ThreePointsWeb
[EMAIL PROTECTED]
+55 61 8162-2072

Responder a