Créer un système de marque-pages à la «delicious» avec Drupal

Les systèmes de partage de marque-pages (bookmarks) tels que «delicious» ont l'avantage d'offrir un mécanisme simple pour marquer une page sur un serveur quelconque, puis avoir un fil RSS de ces signets. On peut aussi ajouter des tags aux signets, pour s'y retrouver avec le temps. Ces systèmes offrent aussi généralement des fonctions plus avancées, comme de partager des signets avec un groupe, chercher par tag dans les signets des autres, etc, mais ceci ne m'intéresse pas, j'ai rarement trouvé ça utile.

Ceci dit, ces systèmes entreposent nos données sur leurs serveurs. L'interaction aux données est donc limitée. J'ai mon propre site, j'aimerais y placer mes signets directement.

  1. installer le module «prepopulate» (cd sites/drupal.est.bidon.ca/modules; drush dl prepopulate). Comme son nom l'indique, il permet de remplir automatiquement des champs d'un formulaire de "node/add/truc".
  2. créer un nouveau type de contenu, si nécessaire (ex: "signet")
  3. créer un champ pour l'adresse (URL) du site que l'on veut ajouter à nos signets (ex: «url»)
  4. (optionnel) configurer pathauto pour le type de contenu (ex: bookmark/[title-raw])
  5. (optionnel) créer une vue avec un bloc pour simuler l'apparence d'un fil RSS des signets récemment ajoutés, permettre une recherche par tag, etc.

Reste à configurer le bouton "ajouter à mes signets" dans Firefox:

  1. Créer un nouveau marque-page (gérer les marque pages, ajouter ..)
  2. Dans le champ "location", entrer: javascript:t='
    '+document.getSelection()+'

    ';%20void(window.open('http://votresite.example.org/node/add/bookmark?edit[title]='+escape(document.title)%20+'&edit[field_body][0][value]='+escape(t)+'&edit[field_url][0][url]='+window.document.location+'','_blank',%20'left=150,width=700,height=500,status=yes,resizable=yes,toolbar=no,scrollbars=yes'));

  3. attention de bien adapter le URL (votresite.example.org) à votre site, ainsi que le type de contenu (node/add/bookmark) et le champ "url" (edit[field_url][0][url])

Lorsqu'on veut ajouter une page à nos signets, cliquer sur ce signet de Firefox. Une fenêtre ouvrira (popup) avec le formulaire de création de node, mais avec les champs titre et url déjà remplis. Reste juste optionnellement à ajouter des tags au signet et un commentaire dans le corps de la node.

Trucs à améliorer:

  • Même si les champs requis sont pré-replis, le formulaire est quand même long et il faut faire défiler («scroller») la page pour cliquer sur le bouton soumette. Entres autres, parce que le champ du corps est très gros.
  • On pourrait faire un hook_form_alter pour cacher des champs inutiles, tels que: menu settings, revision information, url path settings, authoring information, publishing options.

Archives