Zope ( Acquisitie deel 2)

Deel 2 van de uitleg over Acquisitie binnen Zope.

Lees ook deel 1
Gisteren zagen we dat Zope in de ouders van een object/map op zoek gaat naar methoden en eigenschappen die overgeorven zijn.

Dat werkt niet alleen bij statische pagina’s als index_html, maar ook bij scriptpagina’s. Stel ik wil een pagina maken waarmee de afbeeldingen uit de mappen Niek en Marit netjes in een tabel getoond worden. Als ik dit met ASP of PHP zou doen op een ‘gewone’ webserver, zou ik een script schrijven, bijvoorbeeld ‘Bestandenlijst.asp’, dat in de map AcquisitieDemo plaatsen en dan de naam van de map die getoond moet worden als parameter doorgeven, bijvoorbeeld ‘Bestandenlijst.asp?dir=/AcquisitieDemo/Fotos/Kinderen/Niek’.

Bij Zope kan dat netter. Ook hier maak je een scriptpagina en plaats je die in Acquisitiedemo. Maar het aanroepen ervan gaat anders, je typt namelijk gewoon in: ‘http://localhost:8080/AcquisitieDemo/Fotos/Kinderen/Niek/Bestandenlijst’ en de pagina toont de lijst met foto’s in een nette tabel. Klik voor een schermafdruk. Hoe kan dat nu?

Het principe van het vinden van het juiste script is hetzelfde als bij index_html. Maar het is daarnaast mogelijk om het script binnen de context van het oorspronkelijke object (in dit geval ‘Niek’) uit te voeren. En dat betekent dat je in het script aangeeft dat alle bestanden uit het object dat de context vormt moeten worden getoond. Voer je dus in ‘http://localhost:8080/AcquisitieDemo/Fotos/Kinderen/Marit/Bestandenlijst’ dan toont het script de afbeeldingen in de map Marit.

In de scriptpagina zie je tevens een voorbeeld van het template systeem dat Zope heeft voor het maken van pagina’s, zo verwijst <em tal:content=”request/URL”>URL</em> naar de URL van de pagina.

In het derde en laatste deel, het antwoord op de vraag hoe je overerving kunt uitbreiden naar andere objecten, bijvoorbeeld als je het script in de ‘/AcquisitieDemo/Scripts’ map wilt zetten. Daar wordt immers nu niet gezocht.