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
