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.
|