if you want the url to your current site implement this :

class SiteUrlView(object):

    def __call__(self):
        return absoluteURL(hooks.getSite(), self.request)

And register a page :


Now you can use context/@@site_url anywhere.


Florian Lindner wrote:
Am Dienstag, 6. Februar 2007 11:43 schrieb Mohsen Moeeni:
Until the gurus find time to jump in with `the right` solution...

On 2/5/07, Florian Lindner <[EMAIL PROTECTED]> wrote:
The line in the template.pt:
<a tal:attributes="href context/@@index.html/@@absolute_url">home</a>
works fine as long as context is an IXGM, because index.html is
registered for IXGM. But if a view from the IBlog is called is it also
rendered in the template.pt but context now is a IBlog which does not
have an index.html (or at leat not the one I want) and therefore fails.
Your template *assumes* the context will always have
an `index.html` view. So it can not be used for a
context that doesn't have it.

I know that's the problem.

At any rate, context is not the best object you can use to link to home.
It's better to use site root for that purpose. Something

<a tal:attributes="href view/siteroot/@@index.html/@@absolute_url">home</a>

Where you find site root using zope3 APIs in view code and
assign it to siteroot.

Now there is still the problem that I need a view class that implements siteroot for every view that uses template.pt.
Or can I use a view class for the template itself? (tried but did not work).

Any other idea or do I don't really understand you?



Zope3-users mailing list

Reply via email to