Débuter avec Zope Page Template
sur Mobidesign, 2005

Réaliser un compteur simple pour page dans Zope
Définition des objectifs :

Cet exemple montre comment réaliser un compteur de page et permet de comprendre le fonctionnement de base d'une 'page template' associée à un script python. Les notions abordées seront donc ZPT, et les scripts python. Pour commencer, nous allons créer 2 objets 'page template' (ou ZPT) et un 'script python' en utilisant l'interface ZMI (Zope Management Interface, on y accède en ajoutant 'manage' dans l'url comme suit : http://localhost:8080/nom_du_site/manage/ si votre site se trouve en local, sinon : http://www.nom_du_site/manage/ ). Ensuite on fait 'add' (ajouter) pour créer un nouvel objet en ayant choisi le type d'objet à créer dans la liste d'objets disponibles. La première 'page template' sera notre page principale qui affiche un compteur de page. La deuxième 'page template' est en fait l'objet zope qui représente le compteur. Son contenu sera vide mais cette 'page template' possèdera une propriété 'nombre' de type entier qui permettra de mémoriser la valeur du compteur. Enfin, nous crérons le 'script python', soit un objet contenant un petit programme écrit en python et qui modifiera la valeur du compteur chaque fois qu'il sera executé.

Définition de ZPT :

ZPT ou Zope Page Template est un objet Zope dont le contenu est un code html pouvant être modifié par un éditeur de html et visualisé sommairement sans passer par Zope. Des inscructions en langage 'tal' (template attribute langage) permettent de faire de cet page une page dynamique, c'est à dire capable d'afficher des éléments tels que des titres, des noms d'objets Zope (lors d'un affichage au travers de Zope). Les instructions 'tal' viennent enrichir le html et donnent de nouvelles possibilités sans rompre le système des balises, et en s'insérant à l'intérieur (exemple : < h1 tal:content="here/title" >titre< /h1 > )

Création des objets

Créons tout d'abord la "page template" nommée "compteur_page" dans un dossier "compteur" (dans la ZMI, choisir 'folder', 'Page Template' et faire 'add' pour chacun, les nommer). Sélectionner l'objet "compteur_page" (page template), aller dans l'onglet propriétés et lui ajouter un attribut "nombre" de type entier avec la valeur "0".
Ensuite nous créons la page qui affiche le compteur, nous la créons dans le dossier "compteur" et nous l'appelons "index_html"
Voici sont contenu :
<h3>La page du compteur</h3>
<span tal:define="val python:here.compteur_page.nombre">
<br><h3>Valeur du compteur à l'arrivée sur la page :
<span tal:replace="python:val">nombre</span></h3>
</span>
<br>
<span tal:define="val python:here.script_incrementation"><h3>
La valeur du compteur de la page après incrémentation:
<span tal:content="val/script_incrementation">nombre</span></h3>
</span>
Voici comment fonctionne cette page. Tout d'abord on affiche la valeur du compteur à l'arrivée sur la page. Pour cela on définit une variable 'val' dans laquelle on met la valeur de l'attribut 'nombre' de l'objet 'compteur_page', soit < span tal:define="val python:here.compteur_page.nombre" > L'affichage se fait comme suit : < span tal:replace="python:val" >nombre< /span > (remarque : la variable "val" n'est utilisable que dans la balise < span > dans laquelle elle est définie)

L'appelle au script python 'script_incrementation' se fait de la manière suivante : On définit une variable : define = "val python : here.script_incrementation " L'incrémentation se fait dans le script qui renvoie la nouvelle valeur de l'attribut 'nombre' de la page template 'compteur_page'. Ensuite on affiche la valeur retournée, val : content = "val/script_incrementation"

Création du script pyhton

Il ne reste plus qu'a créer le script python toujours dans notre dossier "compteur" en l'appelant "script_incrementation", (choisir "script", faire "add" et le nommer).
Voici son contenu :
nb = context.compteur_page.nombre + 1
context.compteur_page.manage_changeProperties(nombre=nb)
return nb
Dans la première ligne on attribut à la variable "nb" la valeur de l'attribut "nombre" de l'objet "compteur_page" + 1.
Ensuite on utilise la méthode "manage_changeProperties()" pour modifier la valeur de l'attribut "nombre". Ainsi la valeur de "nombre" est incrémentée de 1 en devenant égale à "nb".
Enfin, le script retourne "nb", soit la nouvelle valeur de notre compteur.

Remarque : Pour que le compteur s'execute avec Plone pour tous les utilisateurs il faut modifier la propriété "proxy" du script python et la mettre sur "manager"


Test du compteur

Voilà notre exemple terminé. Pour le tester actualiser l'affichage de la page du compteur (raccourci F5 du navigateur), le compteur s'incrémente, vous avez réussi.

Page d'accueil


[mobidesign.net] [poulhes.net]
[admi.net/Top10x10] [Top 10x10 du design]
2003-2008 Tout droit réservé.