Ciao,
On 02/17/2010 11:26 PM, Fabrizio Rota wrote:
> In un template per portlet custom ho la necessità di estrarre la URL
> di un documento.
>
>
> Il documento viene trovato con questo codice:
> <metal:block define-macro="portlet">
>      <div  id="portlet_libri"
>              tal:define="presults
> python:context.portal_catalog(portal_type='News Item',
> path='/testsito/news/libri', sort_on='effective', sort_order='reverse')"
>              tal:condition="presults">
>                <tal:block define="pobj python:presults[0].getObject()">
>
> Se tento di ottenere la url con un codice del genere:
>
>     <a href=""
>            tal:attributes="href pobj/getURL;
>                            title pobj/Description">
> QUI IL LINK</a>
>
> il portlet non si visualizza.
> Si può fare qualcosa?
getURL è un metodo del catalog brain, l'oggetto proxy che viene
restituto dalla ricerca del catalog.
in questo caso richiamando getObject tu stai richiamando, o come si dice
in gergo, "risvegliando" l'oggetto dal catalog,
quindi per avere l'url dell'oggetto devi utilizzare il solito
obj/absolute_url.

Utilizzando obj/getURL dovresti ottenere un errore ma probabilmente nel
template della portlet avrai da qualche parte un tal:on-error="nothing"...

morale della favola: brain/getURL - obj/absolute_url

NOTA: per motivi di prestazione è sempre meglio NON richiamare gli
oggetti con getObject se non serve accedere a tutti i campi
dell'oggetto. Andando in pdb sul brain un semplice dir(brain) ti
mostrerà che c'è un set ridotto di metodi disponibile... tra i quali
brain/Title, brain/Description e appunto brain/getURL.

Simo

_______________________________________________
Plone-IT mailing list
[email protected]
http://lists.plone.org/mailman/listinfo/plone-it
http://www.nabble.com/Plone---Italy-f21728.html

Rispondere a