Oui, c'est facile si vous utilisez PMB …

Astuce des fichiers _subst (substitution)

 

A quoi servent les fichiers de substitution ?

En bref, le but fondamental est de modifier quelques aspects de la configuration de PMB (dans des fichiers .xml), sans devoir refaire cette manoeuvre lors de mises à jour ultérieures de PMB. Grâce à cette astuce, les fichiers modifiés ne risquent pas d’être « écrasés » par la nouvelle version de PMB.
N.B. En guise d’illustration, je vais montrer comment on peut ajouter une fonction d’auteur ou en modifier le libellé.

 

Remarque préliminaire

Il m’est impossible d’expliquer l’astuce des fichiers de substitution sans la situer dans un contexte global. C’est pourquoi le début de ce document est conçu comme un rappel de quelques notions de base.

Si vous avez déjà lu la page consacrée à la différence entre type de notice et type de support (exemplaire), vous aurez une impression de « déjà-vu » : c’est normal. Dans ce cas, vous pouvez allègrement « sauter » le début de mes explications.

Dans le cas contraire, ce résumé vous permettra de comprendre rapidement de quoi il s’agit.

 

Comment les données sont-elles organisées dans la base ? Où les trouve-t-on ?

La plupart du temps, les données des notices et des exemplaires se trouvent dans une des tables de la base.

Ex. les notices dans la table « notices », les statuts des notices dans « notice_statut », les statuts des exemplaires dans « docs_statut », les éditeurs dans « publishers », les auteurs dans « authors », etc.

 

Dans certains cas, il s’agit de fichiers de configuration (extensions .xml)

Dans le cas d’une installation en français, vous trouvez la plupart de ces fichiers de configuration dans \pmb\includes\marc_tables\fr_FR\

  • la liste de tous les types de documents Unimarc et leurs codes (a = texte imprimé, b = texte manuscrit …)
  • la liste des langues et leurs codes (français = fre, anglais = eng, espagnol = spa, italien = ita …)
  • les types de relations entre notices (notice-mère, notice-fille, « in », fait partie de …)
  • les fonctions des auteurs et leurs codes (auteur au sens strict = 070, éditeur scientifique = 340, traducteur = 730 …)

 

Les messages sont aussi enregistrés dans des fichiers .xml.

  • Les messages en français affichés dans le module de gestion sont dans le fichier fr_FR.xml, qui se trouve dans le dossier \pmb\includes\messages\
  • Les messages en français affichés dans l’OPAC sont dans le fichier fr_FR.xml, qui se trouve dans le dossier \pmb\opac_css\includes\messages\

N.B. Dans les mêmes dossiers, il y a également des fichiers qui contiennent les messages dans d’autres langues (gestion ou OPAC).

 

Or, on souhaite parfois modifier un de ces fichiers, par exemple

  • function.xml pour modifier le libellé d’une fonction d‘auteur ou créer une nouvelle fonction
  • fr_FR.xml pour personnaliser un message affiché dans le module de gestion

 

Bien sûr, on peut modifier un fichier .xml situé dans un des répertoires cités ci-dessus et le sauvegarder à nouveau sous le même nom. Mais cela ne suffit pas !

Vu que l’OPAC peut fonctionner de manière autonome par rapport à la partie gestion, tous ces fichiers .xml sont aussi copiés dans le dossier
pmb\opac_css\includes\marc_tables\fr_FR\

 

Donc si vous avez adapté un de ces fichiers .xml et que vous voulez que les changements soient visibles en gestion et aussi dans l’OPAC, il faut recopier dans le dossier opac_css la version modifiée des fichiers.

 

En outre, il existe plusieurs variantes de tous ces fichiers, car PMB est conçu pour fonctionner en mode multilingue, que ce soit dans l’interface de gestion ou dans l’OPAC.

Donc, si vous travaillez en mode multilingue en gestion et/ou dans l’OPAC, et que vous avez décidé d’opérer des changements dans un ou plusieurs fichiers .xml, il faut

  • faire les modifications dans la partie gestion pour chacune des langues concernées
  • dans les dossiers \pmb\includes\marc_tables\fr_FR\
    ou \pmb\includes\marc_tables\en_UK\ …

  • copier-coller les versions modifiées dans la partie OPAC pour chacune des langues concernées
  • dans les dossiers \pmb\opac_css\includes\marc_tables\fr_FR\
    ou \pmb\ opac_css\includes\marc_tables\en_UK\ …

 

Il subsiste toutefois un problème crucial : si vous n’y prenez pas garde, vous risquez de perdre le bénéfice de votre travail lors de mises à jour ultérieures de PMB !

En effet, lorsqu’on décompresse le zip afin de mettre PMB à jour, tous les scripts php et les fichiers xml qui existaient déjà auparavant seront « écrasés » par la nouvelle version de PMB, puisque le nom est identique et que l’arborescence est la même.

 

Exemple : pour modifier les fonctions d’auteur, vous avez adapté le fichier function.xml et créé un clone pour l’OPAC.

Ce fichier existe donc à deux endroits :
– \pmb\includes\marc_tables\fr_FR\
– \pmb\opac_css\includes\marc_tables\fr_FR\

Le problème, c’est que le zip avec la nouvelle version de PMB contient lui aussi deux fichiers qui portent exactement le même nom (function .xml) et qui sont situés dans les mêmes sous-dossiers. Après décompression du zip, les nouvelles versions vont donc « écraser » les versions que vous aviez adaptées, et vous perdrez les fruits de votre travail.

 

Certes, vous avez joué la carte de la prudence, vous avez créé des copies de sécurité des versions que vous aviez modifiées.
Je n’en doute pas l’ombre d’un instant     😉

Mais vous n’aimeriez quand même pas devoir recopier un grand nombre de fichiers après chaque mise à jour.
Et ce serait encore plus fastidieux si vous avez fait des changements pour plusieurs langues de l’interface.

 

Heureusement, les concepteurs de PMB, notre Petite Merveille de Bijouterie, ont pensé à tout et ont imaginé une solution astucieuse : les fichiers de substitution, appelés aussi les fichiers _subst

 

Comment créer un fichier de substitution, un fichier _subst ?

Comme expliqué ci-dessus, modifier l’original du fichier function.xml n’offre pas d’intérêt à long terme. Un jour ou l’autre, vous serez amené à mettre PMB à jour ou à réinstaller PMB ailleurs (sur un autre ordinateur ou en ligne), donc vous risquez de perdre votre version modifiée.

Pour créer le fichier de substitution

  • Copier-coller function.xml dans le même dossier (vous obtenez un fichier appelé function – Copie.xml)
  • Renommer la copie, elle doit s’appeler function_subst.xml
  • Vous avez donc ajouté le suffixe _subst au nom original (cela commence par l’underscore, le trait de soulignement)

 

Comment PMB va-t-il utiliser ce fichier de substitution ?

PMB cherche d’abord les valeurs dans le fichier xml « normal », ensuite il vérifie s’il y a un fichier _subst à utiliser.
PMB en tiendra compte seulement si le nom est le même – excepté bien sûr le suffixe _subst que vous avez ajouté.

 

Quel message PMB va-t-il afficher ?

  • S’il n’y a pas de fichier _subst, ou si un code particulier n’y figure pas, rien ne change, vous voyez le message d’origine.
  • S’il y a un fichier _subst, et qu’il contient un code particulier qui a un sens dans le contexte actuel
    • Si ce code figurait dans le fichier xml de départ, vous voyez le message de substitution et non pas celui d’origine.
    • Si ce code ne figurait pas dans le fichier xml de départ, vous voyez bien sûr le nouveau message que vous avez prévu.

 

Quel contenu mettre dans le fichier de substitution ?

Un fichier _subst peut être plus court que l’original, il faut en garder le début et la fin, mais il ne doit pas contenir toutes les fonctions, tous les messages, il suffit d’y mettre ceux que vous avez ajoutés et/ou modifiés et leurs codes respectifs.

 

En guise d’illustration, je vous propose un cas concret d’adaptation du fichier function.xml : c’est le fichier qui contient les fonctions des auteurs.
N.B. Le processus de base est le même pour modifier d’autres fichiers .xml

Deux exemples de départ : les fonctions « mécène » et « dessinateur »

 

Premier cas : la fonction existe, elle a un code « standard », mais le libellé ne convient pas tout à fait.

–          La fonction 400 se présente ainsi : « Mécène (obsolète) »

–          En consultant le site de la BnF, j’ai constaté que cette fonction 400 s’appelait aussi « bailleur de fonds », qu’on avait aussi ajouté l’adjectif « obsolète », et qu’on conseillait de la remplacer par la 723 (parraineur ou sponsor).

–          Certes, les mécènes se font de plus en plus rares de nos jours, les sponsors attendent un « retour sur investissement »  aussi rapide que possible, mais ne choquons quand même pas les quelques bienfaiteurs qui nous aident !

–          Si une partie de votre fonds a été offerte par un généreux mécène  et que ce message apparaît tel quel dans l’OPAC, je ne crois pas qu’il serait heureux d’apprendre (grâce au qualificatif  « obsolète ») qu’il fait partie d’une espèce en voie de disparition  😉

–          Blague à part, je ne prétends pas que ce soit l’exemple le plus génial, mais il me permet de montrer comment modifier un libellé.

 

Deuxième cas : on a vraiment besoin d’une fonction spécifique, or elle fait défaut.

–          Une bibliothèque a une riche collection de bandes dessinées et de dessins humoristiques, mais la fonction « dessinateur » n’existe pas dans les fonctions de base prédéfinies.

–          Il y a certes un « illustrateur » dont le code est 440, mais on aimerait créer une fonction supplémentaire, tout à fait spécifique pour les BD, une fonction visible en gestion et dans l’OPAC.

 

Comment ajouter et/ou modifier les fonctions des auteurs ?

Vous créez une copie de function.xml, vous la renommez function_subst.xml, et vous l’éditez.

Sur base des paramètres par défaut, Windows va vous proposer Internet Explorer comme éditeur de fichiers .xml. Toutefois, je  préfère employer un autre éditeur, Notepad ++ (à  télécharger gratuitement sur Internet).

Le fichier de substitution est en général plus court que l’original : vous gardez le début et la fin, vous supprimez donc la plupart des lignes qui définissent les codes, par exemple
  <entry code= ‘005’>Acteur</entry>

 

Premier cas évoqué : la fonction existe, mais le libellé ne vous convient pas tout à fait.

Solution : vous conservez la ligne qui correspond à ce code, et vous modifiez le libellé afin de faire disparaître le mot « obsolète »
<entry code=’400′>Mécène </entry>

Deuxième cas évoqué : on a vraiment besoin d’une fonction spécifique, or elle fait défaut.

Solution : vous ajoutez une ligne et un numéro de code (choisissez bien sûr un numéro inutilisé), et vous créez un libellé.

<entry code=’850′>Dessinateur</entry>

 

N.B. Je vous conseille de lire la version imprimable de cette page, elle est nettement plus complète : Astuce des fichiers de substitution (pdf)
En effet, il m’est techniquement difficile de montrer ici la différence entre la version originale de function.xml et la version modifiée (elles contiennent des balises html). Le pdf contient en outre de nombreuses captures d’écran qui illustrent l’impact de ces modifications, aussi bien en gestion que dans l’OPAC.

 

Comment choisir un nouveau numéro de code (850 dans ce cas) ? Est-on libre de son choix ?

Le risque majeur est de prendre un numéro qui deviendrait plus tard une norme, ce qui créerait une incohérence.

Or, j’ai constaté que les codes standard étaient attribués jusqu’au numéro 770. Je me suis donc dit qu’en prenant le numéro 850, cela me laissait une certaine marge de manœuvre dans le futur. J’aurais aussi pu prendre une valeur un peu plus grande.

 

Il faut ensuite copier le fichier de substitution aux bons endroits.

Pour obtenir le même impact en gestion et dans l’OPAC, copiez ce fichier dans deux répertoires :
– dans pmb\ \includes\marc_tables\fr_FR\
– dans  pmb\opac_css\includes\marc_tables\fr_FR\

 

Si je veux obtenir le même effet pour d’autres langues, je dois créer de nouvelles variantes de function_subst.xml

Prenons l’exemple de l’anglais, la fonction 400 est décrite ainsi
<entry code=’400′>Patron </entry>

 

Une ébauche d’étude sociologique comparative ?
Notez qu’en anglais, un mécène (« patron ») ne semble pas être une espèce en voie de disparition, en tout cas, le terme n’est pas qualifié d’obsolète ! Inutile donc de modifier le libellé du code 400 en anglais.

 

Il me suffit de créer le code du dessinateur.
<entry code=’850′>Cartoonist</entry>
et ensuite de copier function_subst.xml
– dans pmb\ \includes\marc_tables\en_UK\
– dans  pmb\opac_css\includes\marc_tables\en_UK\

 

Remarques d’ordre linguistique

« Cartoonist » a plusieurs sens en anglais : dessinateur de bandes dessinées, de dessins animés, de dessins humoristiques, de caricatures politiques …
Pour préciser qu’il s’agit de BD, on emploie souvent le mot composé « strip cartoonist ».

« Patron » est aussi polysémique : mécène (patron of the arts), mais ce mot désigne également « la clientèle fidèle, les habitués », par exemple les clients d’un hôtel, restaurant ou magasin, les visiteurs d’un musée, les spectateurs (au théâtre), et même les usagers d’une bibliothèque !
Nos lecteurs seraient-ils aussi nos mécènes ?

 

Un dernier conseil

Lorsqu’on fait des sauvegardes, on pense surtout à préserver les données de la base (lecteurs, catalogue, prêts, etc).

Toutefois, au fil du temps, on ajoute ou on modifie beaucoup de fichiers dans le répertoire de PMB :

  • Scripts d’import des lecteurs
  • Scripts d’import de notices et/ou d’exemplaires
  • Le params.xml qui accompagne les scripts d’import
  • Script de construction des cotes de rangement
  • Votre logo, les images de votre site, des vignettes
  • La feuille de style de votre OPAC
  • Les fichiers de substitution dont nous venons de parler
  • et autres éléments…

Pensez donc aussi à créer des copies de sécurité de toute cette « valeur ajoutée ». Cela vous servira le jour où vous devrez réinstaller PMB – sur le même ordinateur ou ailleurs.

 

Version imprimable
Astuce des fichiers de substitution (fichiers _subst)

 

Voir aussi
Différence entre type de notice et type de support (exemplaire)

 

, ,

Comments are currently closed.