Nota SPIP-Contrib : une contrib à actualiser pour SPIP 1.9 et suite, mais dont le concept reste intéressant.
Voir désormais le plugin Mes Favoris 2.0
Dans des sites proposant des contenus complexes, dont seules quelques pages peuvent intéresser le lecteur, il est important de pouvoir créer une liste de pages sélectionnées, propres au site et sans surcharger le dossier de signets du navigateur. Ce point fait partie des fonctionnalités de Agora qui peuvent être implementées dans SPIP, grâce aux nouvelles possibilités de la version 1.8, de façon beaucoup plus souple.
La démarche suivie
1) Où conserver les favoris
Le nouveau compilo permet d’ajouter une nouvelle table facilement. Evidemment, ajouter une table avec juste deux colonnes : id_auteur et mes_favoris n’est pas la solution la plus simple. Cependant la création de la nouvelle table permet l’utilisation d’une nouvelle boucle et du champs mes_favoris comme balise. Voir dans le spikini pour plus d’informations.
2) Quelle information conserver
Dans la mesure où il s’agit de sélection d’articles, les id_article devraient suffire
3) Par où commencer ?
Les favoris étant personnels, il faut s’identifier pour pouvoir accéder à cette fonctionnalité. Le statut visiteur correspond à toutes les situations (pas d’accès à l’interface privée, identifiant et mot de passe attribués par un administrateur). Ce statut fonctionne avec la balise #LOGIN_PUBLIC et nécessite l’activation des forums sur abonnement sur le site documentation. Pour bien comprendre le fonctionnement de l’authentification telle que je l’utilise, il faut lire l’article qui lui est consacré. La contribution n’est prévue que dans ce contexte (utilisation de la balise #LOGIN_PUBLIC), sachant que tout auteur authentifié (visiteur, rédacteur ou administrateur) peut y avoir accès.
Les éléments nécessaires
Quelques connaissances sur le fonctionnement du nouveau compilo.
1) Authentification
J’utilise ce bout de code placé dans un fichier séparé que j’inclus dans les squelettes protégés.
<BOUCLE_qui(AUTEURS){tout}{nom}>
<div class="petitexte" style="padding:5px;"><strong>#NOM</strong> vous êtes authentifié [<a href="#URL_LOGOUT" class="lpetitexte">se déconnecter</a>]
<BOUCLE_moi(AUTEURS){tout}{id_auteur}{statut==0minirezo}>
<a href="./ecrire" class="lpetitexte">[administration]</a>
</BOUCLE_moi>
</B_moi>
<//B_moi>
</div>
</BOUCLE_qui>
2) Un formulaire pour choisir ces favoris
Deux boutons doivent permettre d’ajouter ou de retirer un article de la liste des favoris :
<table width="40%" cellpadding="10">
<tr>
<td><form name="ajoute" action="AddToMyfavorites.php3" method="post" />
<input name="id_article" type="hidden" value="[(#ENV{id_article})]" />
<input name="nom" type="hidden" value="[(#ENV{nom})]" />
<div align="center">
<input name="Add" type="submit" value="Ajouter aux favoris" />
</div>
</form></td>
<td><form name="retire" action="DelFromMyfavorites.php3" method="post" />
<input name='id_article' type='hidden' value='[(#ENV{id_article})]' />
<input name='nom' type='hidden' value='[(#ENV{nom})]' />
<div align="center">
<input name="Add" type="submit" value="Retirer des favoris" />
</div>
</form></td>
</tr>
</table>
3) La page d’appel
Sachant que l’on conserve des id_articles, il est logique d’ajouter le double formulaire à un squelette article, sous forme d’inclure.
4) Le retour et la visualisation
A la validation on provoque le rechargement de la page, ce qui permet d’afficher avec un filtre ad hoc un symbole à côté du titre.
En résumé, la distribution comprend :
- Un fichier avec les deux formulaires pour ajouter ou retirer des favoris
- Les fichiers AddToMyfavorites.php3 et DelFromMyfavorites.php3 qui sont des scripts php à placer à la racine du site
- Un fichier script_favoris.php3 qui correspond au filtre à appliquer à la balise #MES_FAVORIS, qu’il faut recopier dans mes_fonctions.php3.
Ce dernier comporte deux branches. Grâce à un flag passé en paramètre, dans un cas il ira chercher le symbole du signet (squelette mark_signet.html/.php3), dans l’autre il crééra la liste des articles favoris dans un squelette liste_favoris.html/php3. Les deux couples font partie de la distribution.
- Un fichier script_nouvelle_table.php3, également à recopier dans mes_fonctions.php3.
L’ensemble du système a été développé dans un soucis de modularité pour qu’il puisse être adapté aux squelettes de chacun. Il comprends de nombreux fichiers, mais devrait s’adapter à toutes les situations. Il ne faut pas oublier :
- Dans le couple favorites.php3/.html l’id_auteur est récupéré dans le contexte. Par contre l’id_article doit être passé en paramètre : <INCLURE(favorites.php3){id_article}>
- Ajouter <INCLURE(mark_signet.php3)>
juste devant le #TITRE du squelette article.html
- Ajouter <INCLURE(liste_favoris.php3)>
dans le squelette où la liste des articles sélectionnés sera affichée.
- De mettre, le cas échéant les .html correspondants dans votre dossier squelettes.
- Créer la nouvelle table dans votre base de données : para_perso avec comme champs id_auteur (bigint(21)) et mes_favoris (varchar(255)).
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |