SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 290 visiteurs en ce moment

Accueil > Interactivité, échanges > Signets et favoris > Sélectionner des pages d’un site dans une liste de favoris

Sélectionner des pages d’un site dans une liste de favoris

31 juillet 2005 – par Yorghos – 26 commentaires

2 votes

Comment créer une liste d’articles favoris et y accéder directement

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

GIF - 4.3 ko
Formulaire de sélection à inclure dans article.html

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.

GIF - 21.5 ko
Article inclus dans les favoris

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

P.-S.

Cette contribution utilise énormément le principe des variables de contexte. Le code nécessaire est inclus dans les fichiers .php3. Ceci signifie que leur fonctionnement est prévu en tant qu’INCLURE et non comme code à recopier dans vos squelettes.

Dernière modification de cette page le 20 janvier 2014

Retour en haut de la page

Vos commentaires

  • Le 30 août 2006 à 14:54, par indie En réponse à : Sélectionner des pages d’un site dans une liste de favoris

    Quelqu’un utilise cette contrib’ avec spip 1.9 ? Cela fontionne-t-il sans problème, sans modification ? Dans tous les cas, je me charge de tester et de rapporter ici même le résultat.

    • Le 30 août 2006 à 17:37, par Yorghos En réponse à : Sélectionner des pages d’un site dans une liste de favoris

      A mon avis elle ne marchera pas telle que sur une 1.9. J’avoue avoir complètement décroché depuis 6 mois. Je suis prêt à filer un coup de main si c’est utile.

      YR

    • Le 31 août 2006 à 15:39, par indie En réponse à : Sélectionner des pages d’un site dans une liste de favoris

      Merci yorghos,
      en effet, tel quel, je n’essaie même pas. Je vais donc adapter tout ça, si vraiment ça coince, je viendrais demander de l’aide ici. Affaire à suivre.

    • Le 18 septembre 2006 à 22:20, par matthieu En réponse à : Plugin pour la 1.9

      Effectivement ce serait génial d’arriver à faire un plugin pour la version 1.9. J’ai un petit peu commencer mais je ne suis pas sur de la structure :

      il y aurait à la racine d’un dossier « favoris » les fichiers suivants :

      -  liste_favoris.html :
      établit la liste des favoris en fonction de « id_auteur »

      -  signet.html :
      indique dans un article si celui-ci est dans les favoris en fonction de « id_auteur » (si il est logué ou identifier par un coockie) et de « id_article »
      pourquoi pas permettre depuis ce fichier de pouvoir enlever des favoris ?

      -  favoris_mes_fontions.php :
      ajoute la table « spip_auteurs_favoris »
      -  favoris.xml
      indique le titre et la description du plugins

      dans un dossier « formulaires » il y aurait :
      -  formulaire_favoris.html :
      il affiche le formulaire permettant d’ajouter un article comme favoris ou de l’enlever.

      dans un dossier « balise » il y aurait :
      -  formulaire_favoris.php :
      il récupére les données de « formulaire_favoris.html » et ajoute et retire les articles, au champs « id_article » de la table spip_auteurs_favoris

      Je ne sait pas si il y a des personnes qui essaye de faire la même chose, dans ce cas serait pas mal de le faire ensemble. J’ai poster avant de continuer le travail au cas ou Yorghos ou quelqu’un d’autre est en train de faire la même chose.

    • Le 19 février 2009 à 15:41, par jocelyne En réponse à : Sélectionner des pages d’un site dans une liste de favoris

      Bonjour,
      Avez-vous réussi à adapter ce plugin ? Je suis particulièrement intéressée car, ne connaissant pas suffisamment tout ça, je ne sais trop comment faire alors que cette fonctionnalité me faciliterait bien « la vie » :) Dans tous les cas, merci à vous.

    Répondre à ce message

  • Le 6 octobre 2007 à 15:54, par ? En réponse à : Sélectionner des pages d’un site dans une liste de favoris

    Il me semble qui manque le fichier mesfavoris.php(3)..?

    Répondre à ce message

  • Le 11 novembre 2005 à 19:42, par thx11 En réponse à : Sélectionner des pages d’un site dans une liste de favoris

    Très intéressant mais cela ne fonctionne pas chez moi. Faut il créer une nouvelle table directement dans mysql ou le script php3 s’en charge t-il ? Merci de cette précision.

    Répondre à ce message

  • Le 24 octobre 2005 à 15:01, par Bernard Blazin En réponse à : Sélectionner des pages d’un site dans une liste de favoris

    Pourquoi inclure (liste_favoris) ne m’affiche rien ?

    Pour le reste très bien, mais je n’affiche ni le petit logo ni les favoris

    Il faut faire une boucle speciale ?

    On pourrait avoir un petit exemple STP ? Merci

    • Le 24 octobre 2005 à 15:28, par Yorghos En réponse à : Sélectionner des pages d’un site dans une liste de favoris

      Le petit logo est affiché par le fichier mark_signet.html. Le signet.png doit être placé dans le dossier png du répertoire IMG.

      Pour l’affichage de liste_favoris, as-tu bien recopié le script_favoris (inclus dans le zip) dans ton fichier mes_fonctions.php3 ?

    • Le 24 octobre 2005 à 17:26, par Bernard Blazin En réponse à : Sélectionner des pages d’un site dans une liste de favoris

      J’ai suivi à la lettre ce que j’ai lu et bien entendu le rajout des php dans mes options mais rien ne se passe. J’ai aussi mis le inclure mark devant #TITRE mais je vois pas le logo non plus. en mode debug j’ai ça :

      <script><div align="left">
      &lt;?php
      $contexte_inclus = array('id_article?' => '');
      include('./liste_favoris.php3');
      ?>
      </script>

      Vide ? Pourtant la base est renseignée.

    • Le 24 octobre 2005 à 17:53, par Yorghos En réponse à : Sélectionner des pages d’un site dans une liste de favoris

      C’est marqué dans le texte et je l’ai répété tout à l’heure. Il faut mettre le script dans mes_fonctions.php3, à la racine du site et non dans mes_options qui se trouve dans ecrire. mes_fonctions.php3 est le fichier qui comprend toutes les fonctions personnelles.

      Il est possible de tester la balise #MES_FAVORIS, n’importe où dans le squelette. Elle devrait retourner 10#25#312# etc. Dans la table spip_para_perso il y a quoi ?

    • Le 24 octobre 2005 à 18:13, par Bernard Blazin En réponse à : Sélectionner des pages d’un site dans une liste de favoris

      oui pardon c’est bien dans mes_fonctions à la racine. #MES_FAVORIS ne me retourne rien du tout

      Dans la base spip_para_ il y a Id_auteur et mes_favoris dans id_auteur il y a mon id et dans mes_favoris j’ai une chaine comme 2#3#100#12#

      j’ai rechargé les modules à mettre dans mes_fonctions, des fois que j’aurai mal fait les choses mais rien. Je suis assez surprise et je ne comprends pas.

    Répondre à ce message

  • Le 21 octobre 2005 à 11:26, par Bernard En réponse à : Sélectionner des pages d’un site dans une liste de favoris

    Bonjour, j’ai du mal à faire tourner cette contrib non pas qu’elle soit mal expliqué mais parce qu’il y a beaucoup de choses que je ne saisi pas.
    Par exemple ne pas oublier de rajouter devant #TITRE...( quoi exactement ? )
    J’ai crée la table spip_para_perso et un squelette annotation, avecv la boucle de reconnaissance..Je ne vois pas les deux liens et je ne comprends pas cette boucle car si celui qui se logue est 1comite ça ne peut pas marcher ?
    Si je clique sur le bouton add mes favoris dans la page article, je ne provoque rien sur la table...Je suis en 1.8.2
    Je pense que je dois créer d’autres squelettes mais je ne sais pas lesquels..
    Pourriez vous m’aider s’il vous plait car l’idée est géniale !! et j’aimerai bien pouvoir offrir ç à mes membres
    Merci d’avance

    Répondre à ce message

  • Le 14 septembre 2005 à 16:11, par goushi En réponse à : > Sélectionner des pages d’un site dans une liste de favoris

    Bonjour,
    Je cherche cette contrib depuis un moment mais je n’arrive vraiment pas à l’installer...
    Je suis sous 1.8, la table spip_para_perso est bien installée mais je n’arrive pas à comprendre les étapes d’installation. Auriez vous un peu plus d’info !
    Merci beaucoup.

    • Le 14 septembre 2005 à 17:39, par ? En réponse à : > Sélectionner des pages d’un site dans une liste de favoris

      L’installation ne suffit peut-être pas. Il faut y avoir accès par une déclaration dans mes_fonctions.php3. Le formulaire produit-il le résultat escompté, cad ajouter l’id_article à la liste des favoris : 11#12#55# etc ?

      Il faut aussi que le formulaire soit placé dans un squelette article pour que l’id_article soit accessible et que l’auteur soit authentifié pour récupérer son id_auteur qui est le point d’entrée dans la table para_perso.

      J’ai essayé de relire la contrib qui a été écrite il y a plusieurs mois et il me semble que tout est expliqué.

    • Le 16 septembre 2005 à 09:39, par Goushi En réponse à : > Sélectionner des pages d’un site dans une liste de favoris

      Merci pour ta réponse, j’a progressé un peu mais pas trop...
      Actuellement, dans ma page article j’ai en gros ca :

      <boucle_article>
      <inclure authenticate.php3 //qui reconnait bien l'auteur connecté>
      <formulaire ci-dessus>
      #TITRE
      </boucle_article>

      Le résultat de la requête est
      query=UPDATE spip_para_perso SET mes_favoris='30#' WHERE id_auteur=''result=1
      En gros il ne me prend pas l’auteur dans le formulaire lié à AddToMyFavorites.php3
      L’ordre est-il bon ?

      Second problème, lorsque je force le AddToMyFavorites en mettant en dur l’id_auteur (juste pour voir si ca marche !) : le UPDATE ne fonctionne que si l’id_auteur est déjà présent dans la base, il ne le crée pas...

      Là je sèche...
      Merci de ton aide !

    • Le 16 septembre 2005 à 09:50, par ? En réponse à : > Sélectionner des pages d’un site dans une liste de favoris

      Normalement la fonctionnalité n’apparaît utile que si les auteurs sont répertoriés dans la base (déjà inscrits). Sur mon site le bouton vers le formulaire est désactivé si le visiteur n’est pas authentifié. Je cherche à garder la maîtrise sur les utilisateurs du site. Autrement tu risque d’avoir de nombreuses entrées inutiles dans ta table. Si l’utilisateur est authentifié, le formulaire capte son id_auteur et ajoute l’id_article à la liste des favoris.

    • Le 16 septembre 2005 à 10:00, par Goushi En réponse à : > Sélectionner des pages d’un site dans une liste de favoris

      Suaf faute de ma part, j’ai créer une table spip_para_perso, mais elle n’est pas liée a la table spip_auteur. Pour moi aussi, le bouton n’apparait que pour les utilisateurs enregistrés mais comment son t-il inscrit dans la base spip_para_perso ???
      Merci de ta rapidité !

    • Le 16 septembre 2005 à 10:14, par ? En réponse à : > Sélectionner des pages d’un site dans une liste de favoris

      Tu as raison, la première entrée dans la table n’est pas prévue dans le script. La contrib ayant été écrite avant la 1.8 et l’ajout de tables, à l’origine (c’est le fonctionnement que j’ai conservé) les favoris sont stockés dans un champs ad hoc de la table spip_auteurs (champs extra sous la 1.7).

      Je ne sais pas trop quelle est la meilleure solution. Je dispose d’une autre version des scripts AddToMyFavorites et DelFromMyFavorites qui travaillent sur la table des auteurs, mais je ne sais pas s’il est possible de l’ajouter à la contrib. Sinon, je peux les envoyer en privé.

    • Le 16 septembre 2005 à 10:23, par Goushi En réponse à : > Sélectionner des pages d’un site dans une liste de favoris

      Avec plaisir et si ce n’est pas trop abusé, ton squelette article.chtmeleu en plus, sinon, je me débrouillerais...
      Merci encore !

    • Le 17 septembre 2005 à 16:40, par ? En réponse à : > Sélectionner des pages d’un site dans une liste de favoris

      Voilà je te suggère de rajouter en bas du fichier AddToMyFavorites.php3 les lignes

      else {
      spip_query ("INSERT INTO spip_para_perso (id_auteur, mes_favoris) VALUES ($id_auteur, $mes_favoris)");
      }

      Je n’ai pas testé mais il ne devrait pas avoir de problème. En ce qui concerne le squelette article.html, il comporte plusieurs autres fonctionnalités, toutes à bases d’inclure, qui font qu’il n’est pas transposable tel que. S’il y a un aspect spécifique qui t’intéresse envois moi un message via la liste de diffusion de SPIP.

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • GIS 4

    11 août 2012 – 1308 commentaires

    Présentation et nouveautés La version 4 de GIS abandonne la libraire Mapstraction au profit de Leaflet. Cette librairie permet de s’affranchir des librairies propriétaires tout en gardant les mêmes fonctionnalités, elle propose même de nouvelles (...)

  • Formidable, le générateur de formulaires

    23 janvier 2012 – 2051 commentaires

    Un générateur de formulaires facilement configurable pour les non-informaticiens et facilement extensible pour les développeurs. Introduction L’objectif était de créer un plugin permettant de générer des formulaires. Historiquement, 2 plugins (...)

  • Pages uniques

    11 décembre 2008 – 259 commentaires

    Allez, avouez... il ne vous est jamais arrivé d’avoir besoin d’articles qui ne sont rattachés à aucun rubriquage particulier ? Des articles uniques, n’ayant ni de thème, ni de rapport avec aucun autre ? Ou encore des articles pour lesquels vous avez (...)

  • ciar : plugin « Accès restreints issus de Giseh »

    28 novembre 2011 – 86 commentaires

    Cette version ajoute une gestion par groupe d’auteurs, ainsi que la compatibilité avec SPIP 3. Pour mémoire, le plugin « ciar » offre des accès restreints reprenant les fonctionnalités de ceux de Giseh. Le plugin est utilisable sans utiliser les autres (...)

  • Saisies

    27 mars 2010 – 474 commentaires

    Introduction Créer un formulaire est une tâche toujours un peu répétitive : les champs ont souvent les mêmes propriétés, le même accompagnement (message d’erreur, explication, ...) et la même structure HTML. Ce plugin est un outil pour les développeurs (...)