La liste des nouveautés de l’ACPL

Ce post est la traduction d’un billet d’Owen Leonard sur Koha Blog.

L’OPAC de la Athens County Public Library dispose d’un bloc qui affiche la liste de nos nouvelles acquisitions. Bien que cette liste s’affiche dans la page de Koha, son contenu proviens d’une source externe. Voici les composants de ce système :

  • La liste des nouveautés, maintenue dans une base MySQL séparée avec sa propre interface web
  • Un script PHP qui sélection aléatoirement quelques titres et les affiche.
  • Un peu de HTML, principalement un iframe, à ajouter dans la préférence système opacmainuserblock de Koha

Mise en place de la base de donnée
A l’ACPL, nous avons choisi de gérer les listes de livres coté portail web, dans le but de permettre aux bibliothécaires de créer n’importe quel type de listes. Voici les deux tables pour nos données, bookshelf et bookshelfitems :

bookshelfitems

Field
Type
Null
Key
Default
Extra

shelfitemid
int(11)

PRI
NULL
auto_increment

shelfid
int(11)
YES

NULL

adddate
date
YES

NULL

title
varchar(255)
YES

NULL

authorfirst
varchar(80)
YES

NULL

authorlast
varchar(80)
YES

biblionumber
int(11)

0

isbn
varchar(20)

sortorder
tinyint(4)
YES

NULL

La table bookshelfitems contiens les items qui vont apparaitre dans une liste. Le champ sortorder n’est pas obligatoire. Nous l’utilisons pour préciser un ordre d’apparitions concernant d’autres listes dans notre site.

bookshelf

Field
Type
Null
Key
Default
Extra

shelfid
int(11)

PRI
NULL
auto_increment

shelftitle
varchar(255)
YES

NULL

description
text
YES

NULL

bannerimage
varchar(150)
YES

NULL

dateadded
date
YES

NULL

displayfrom
date
YES

NULL

displayto
date

0000-00-00

category
tinyint(4)
YES

NULL

La table bookshelf contiens les noms et les réglages de chaque liste. Elle n’est vraiment utile que si vous gérez plus d’une liste. Les champs description, bannerimage, category etdate-related ne sont pas obligatoires.
Dans le cadre de notre liste de nouveautés, nous avons créé une liste avec comme shelftitle “New and Upcoming”. Puis nous avons ajouté des entrées dans bookshelfitems en spécifiant la valeur du shelfid de la liste “New and Upcoming”.
Récupérer les données
L’étape suivante est de récupérer les données de cette liste pour les afficher. Créez un nouveau fichier PHP, et collez ce code consitué principalement d’une requête sur la base de donnée :
<?php
$newtitles_sql = "SELECT * FROM `bookshelfitems` WHERE
shelfid = 1 order by rand() limit 3";
$newtitles_result = mysql_query($newtitles_sql);
?>

Bien sur, votre clause WHERE doit préciser l’id de votre liste.
<table><tr>
<?php while($row = mysql_fetch_array($alllidsresult)){ ?>
<td>
<a target="_parent"
href="http://path/to/koha/opac-detail.pl?biblionumber=
<?php echo $row['biblionumber']; ?>
"><img src="http://images.amazon.com/images/P/<?php echo
$row['isbn']; ?>.01._TZZZZZZZ_PU_PU-5_.jpg" alt="" /></a>
<a target="_parent"
href="http://path/to/koha/opac-detail.pl?biblionumber=
<?php echo $row['biblionumber']; ?>">
<?php echo $row['title']; ?></a>

<?php if($row[‘authorlast’]){ ?>
By <a target= »_parent » href= »http://path/to/koha/opac-search.pl?q=au:
<?php echo $row[‘authorlast’]; ?>,%20<?php echo $row[‘authorfirst’];
?> »><?php echo $row[‘authorfirst’]. » « .$row[‘authorlast’]; ?></a>.
<?php } ?>
</td>
<?php } ?>
</tr></table>
Et vous devez bien entendu modifier les URLs pour qu’elles pointent vers votre OPAC. Comme vous pouvez le voir, ACPL récupère les couvertures des livres chez Amazon. Cette partie du code pourrait être modifiée pour utiliser une autre source de donnée choisie par votre bibliothèque. Accédez maintenant à votre script PHP, votre liste devrait s’afficher :

Insertion dans l’OPAC
Connectez vous à l’interface d’administration de Koha, rendez vous dans Préférences Système, et modifiez la préférence OpacMainUserBlock. Ce qui suit est un exemple du code HTML que nous utilisons à l’ACPL :
<h4>Selections From the New and Upcoming Titles List:</h4>
<iframe src="http://path/to/your/script/upcoming.php" frameborder="0"
style="width: 90%; height: 21em; overflow: hidden;">
</iframe>

Améliorations possibles

  • La hauteur du iframe est fixe. La hauteur de 21em de l’iframe est un compromis : il faut pouvoir afficher les titres longs, mais ne pas afficher trop d’espace vide. Cela ne marche pas toujours bien.
  • Détection dynamique du débordement pour les affichages réduits. Si votre navigateur est large de 800 pixels ou moins, le troisième titre serait coupé par la propriété CSS overflow:hidden. L’ajout de code Javascript qui contrôlerait la largeur de l’iframe au chargement de la page et supprimerait complètement la dernière vignette serait une amélioration notable.
  • Gérer élégamment les les couvertures manquantes. Tous les titres que nous listons n’ont pas forcément une couverture chez Amazon.com. Il existe plusieurs techniques permettant de gérer ce problème. La méthode en javascript utilisée par Koha ferait certainement l’affaire.
Share

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *