[Zope] Creating links dynamically

Vital Lobachevsky tick at web.vi
Tue May 31 12:17:46 EDT 2005


John Poltorak wrote:
> On Tue, May 31, 2005 at 06:23:11PM +0300, Vital Lobachevsky wrote:
> 
>>John Poltorak wrote:
>>
>>>I want to provide a set of links on a Zope site dynamically. ie don't want 
>>>to hard code a number of links, but would like to load them from an 
>>>external source which I can add to independently, but I have no idea as to 
>>>how to set about it. 
>>>
>>>Any ideas?
>>>
>>>I'd be quite happy to have the links in a text file with one link per 
>>>line.
>>
>>1) Create a script that returns a list of links:
>>
>>## Script (Python) "linkList"
>>
>>return [
>>   'link1',
>>   ...
>>   'linkN'
>>]
>>
>>2) Use this script on your page. For example,
>>
>><tal:block repeat="link here/linkList">
>>   <span tal:replace="structure link" />
>></tal:block>
> 
> 
> Many thanks for your suggestion.
> 
> Is there a worked example of doing this anywhere?
> 
> There seem to be quite a few steps involved in trying to get this working 
> and I'm no expert in writing python scripts, and it will probably take me 
> a couple of days to get this working.

Well, it's really easy. Create 'linkList' (Python Script) in the folder 
where you page lives or somewhere higher in folder hierarchy:

## Script (Python) "linkList"
return [
   ('http://www.google.com/', 'Google'),
   ('http://www.yahoo.com/', 'Yahoo'),
]

If your page is Page Template, it maybe something like this

<html>
<body>
<h1>Search Engines</h1>
<tal:block repeat="item here/linkList">
   <a tal:content="python:item[1]"
      tal:attributes="href python:item[0]"></a><br />
</tal:block>
</body>
</html>

If you page is DTML Method, you can do the same using <dtml-in> tag.





More information about the Zope mailing list