SPIP-Contrib

SPIP-Contrib

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

286 Plugins, 197 contribs sur SPIP-Zone, 328 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 ?
  • [Se connecter]

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

  • Mode portail Communiquant pour SoyezCréateurs

    29 septembre 2010 – 19 commentaires

    5e mode d’affichage de la page d’accueil, ce mode se distingue des autres par une animation proposant un fondu/enchaîné des logos des articles à la une. Zonage Configuration Zone d’entête Nom du site Slogan si plugin bandeau présent (...)

  • Plugin Logo SVG : pouvoir utiliser des logos SVG

    17 octobre – commentaires

    Le SVG est un format vectoriel donc très léger et redimensionnable sans pertes, mais SPIP ne l’acceptait pas sur les logos. Ce plugin comble ce manque. Comment ça fonctionne ? Vous installez ce plugin, vous l’activez, et c’est tout. Crédits Une (...)

  • Utilisez le framework Foundation dans vos squelettes !

    13 août 2013 – 58 commentaires

    Foundation est un framework CSS et Javascript très complet pour réaliser des sites sur une grille propre et homogène. Mais surtout, il permet de rendre un site responsive très facilement ! Ce plugin ajoute le framework Foundation sur l’espace (...)

  • LinkCheck : vérificateur de liens

    13 février 2015 – 65 commentaires

    Ce plugin permet de chercher et tester l’ensemble des liens présents dans les objets. Vous pourrez donc en quelques clics connaître les liens brisés ou défectueux qui se sont immiscés dans le contenu de votre site SPIP. La vérification s’effectue en (...)

  • GIS 4

    11 août 2012 – 1288 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 (...)

Ça spipe par là