[Zope-es] acceder al cuerpo de un hijo desde carpeta contenedora

Mikel Larreategi mlarreategi en codesyntax.com
Mie Dic 13 09:07:53 CET 2006


Xavi(e)k dio:
> Buenas!
> 
> me sigo peleando para intentar conseguir una nueva vista que mezcle la
> folder_listing y la select_default_page.
> 
> para listar el contenido de una página se usa este codigo desde
> document_view:
> 
> <p tal:condition="python: not text and is_editable"
>           i18n:translate="no_body_text"
>           class="discreet">
>            This item does not have any body text, click the edit tab to
> change it.
>        </p>
> <div class="stx"
>             tal:condition="text"
>             tal:attributes="class python:test(here.Format() in
> ('text/structured',
>                                                   'text/x-rst', ), 'stx',
> 'plain')">
>            <div tal:replace="structure text" />
>        </div>
> 
> donde el valor de text se obtiene con la instruccion:
> 
> tal:define="text python: here.CookedBody(stx_level=2)"
> desde mi carpeta yo puedo conocer todos los datos de los objetos que
> contengo (titulo, descripcion,creador, tipo,..) pero cómo podria obtener el
> contenido del cuerpo de un documento (página)? con q nombre se almacenan
> estos datos?
> para obtener la descripcion de la página por ejemplo simplemente se hace un
> define: item_description item/Description. el problema es que el cuerpo del
> texto no es un objeto de formulario como la descripcion (que es un
> textarea)
> sino que se invoca una macro, y ahí es donde me pierdo...
> 
> podría invocar la instrucción que antes mencionaba para obtener 'text'
> desde
> la carpeta en la que estoy indicando que quiero aplicarla sobre un elemento
> hijo?? en lugar de decir here.CookedBody(stx_level=2), decir alguna cosa
> que
> en lugar de a 'here' se refiriera a (here/hijo).CookedBody(stx_level=2)????


Supongo que lo que te pasará es que estás recorriendo la lista de hijos
que te devuelve una consulta al catálogo (o al método
getFolderContents), y por lo tanto no tienes lo de item/CookedBody o
item/getText en el metadata del catálogo.

Tendrás que obtener el objeto a partir del item que te devuelve el
catálogo y llamar después al método CookedBody (ó getText):

<tal:block define="item_object python:item.getObject()">
   <span tal:replace="structure item_object/getText" />
</tal:block>


Saludos,


Mikel

-- 
Mikel Larreategi
mlarreategi en codesyntax.com

CodeSyntax
Azitaingo Industrialdea 3 K
E-20600 Eibar
Tel: (+34) 943 82 17 80


Más información sobre la lista de distribución Zope-es