Créer un slot dynamique 'liste de liens' dans Plone29/03/2004
Par
Tarek Ziadé Cette recette explique comment créer un slot de type "liste de liens", c'est à dire un slot ou l'utilisateur peut ajouter librement des pages du site pour se construire un menu temporaire rapide. 1. Introduction 2. Principe 3. Création du script d'ajout : basketAdd 4. Création du script de lecture : basketList 5. Création du script de suppression : basketClear 6. Création du slot, enfin ! 6. Conclusion
A la manière des caddies sur les sites marchands, un slot "liste de liens" qui regroupe une liste
de liens internes au site peut être pratique pour accélerer le surf. Surtout si le site est riche
en documentation.
Nous allons voir dans cet article comment mettre en place ce mécanisme dans le contexte de Plone. Cet article part du principe que vous êtes un tantinet familier avec Zope et Plone. Dans le cas contraire, vous pouvez aller faire un tour sur le site de Zope : www.zope.org et celui de Plone : www.plone.org. Et pour les gens allergiques à l'anglais, sur : www.zopeur.org.
Le principe de ce slot est très simple. En effet il utilise la même mécanique qu'un panier d'achat d'un site
commercial pour mémoriser les liens. La mémorisation se fait par le biais des cookies, et
plus précisément par l'objet SESSION, qui est un dictionnaire Python dans lequel
il est possible d'ajouter des données associées à la session en cours, c'est à dire juste le temps du surf.
La construction de cet outil va se faire en 4 étapes :
Le principe du script d'ajout est le suivant : il incrémente dans le dictionnaire une variable qui fournie le nombre de liens et ajoute deux variables pour définir le lien.
La première est le titre du lien et la deuxième l'url. Ajoutez un nouveau Script Python dans le répertoire portal_skins/custom du site et nommez le "basketAdd". Dans ce script, la première étape consiste à récuperer le nombre de liens déja présents dans le dictionnaire :
Par ce biais, vous pouvez ajouter un nouveau lien en connaissant le nombre de liens mémorisés et ainsi préparer le nom des variables qui vont êtres ajoutées :
Reste à présent à associer à ces variables des valeurs.
Le fonctionnement souhaité du slot est le suivant : on souhaite ajouter la page en cours. Notre script va donc récupérer le lien et le titre de la page affichée comme valeurs :
Reste à incrémenter le nombre de liens et à revenir sur la page en cours :
Notre premier script est fonctionnel. Il peut être amelioré en contrôlant pour chaque ajout si la page à ajouter n'est pas déjà dans la liste et limiter le nombre de liens que le slot peut contenir Le deuxième script, créé dans le même répertoire, va retourner la liste des liens contenus dans le dictionnaire session. Cette liste est une liste de dictionnaire, ce qui va nous permettre dans le slot, de boucler et de récupérer les informations très simplement. Il n'a rien de très original :
Le script de suppression supprime du dictionnaire SESSION les liens. En terme de simplification de code, vous pouvez opter sans y aller par quatre chemins pour la méthode dite du "brutos" en initialisant tout simplement le nombre de liens à 0 :
Pour créer le slot simplement, faites un copier-coller des slots disponibles dans les répertoires de Plone et modifiez le nom en : basket_slot
Il faut aussi modifier la définition de macro pour obtenir :
Cette définition nous permettra par la suite d'ajouter le slot dans le site.
Le slot contient trois parties : La liste des liens, le bouton d'ajout, et le bouton de suppression. Pour la liste des liens, le script basketList peut être invoqué ainsi :
Le bouton d'ajout est un formulaire qui permet d'invoquer le script basketAdd :
Enfin, last but not least, le bouton chasse d'eau qui appelle basketClear :
Pour terminer, vous pouvez ajouter au site le slot en modifiant, par exemple, les propriétés de la racine du site. Il suffit de rajouter cette ligne dans la section right_slots ou left_slots :
Vous avez pu constater dans cet article la facilité de personnalisation d'un portail sous Plone.
Bien que cet article ait été conçu à la base pour Plone 1, le portage pour Plone 2 n'est pas compliqué : Les slots deviennent des portlets. Vous pouvez voir ce code à l'oeuvre sur le site Zopeur.org Si vous avez des questions relatives à cet article voici mon email : webmaster@zopeur.org Copyright (c) 2003-2004 Tarek Ziadé. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
Copy of the GNU Free Documentation Licence
|