Ce module permet d'importer/exporter des taxinomies, des structures ou de simples listes de termes dans/depuis un vocabulaire à partir/vers d'un fichier CSV, d'une url ou d'un texte copié-collé.
Le format CSV correspond à une simple liste de valeurs séparées par un séparateur, souvent une virgule(,
) ou un point-virgule (;
), et des caractères de délimitation, souvent les guillemets ("
). Si vous ne savez pas comment créer un fichier CSV, vous pouvez utiliser LibreOffice Calc ou un autre tableur pour exporter vos données dans un fichier CSV.
Des formats d'import ou d'export spécifiques peuvent être ajoutés simplement par un mécanisme d'extensions (sinon, demander à l'auteur !).
Plusieurs formats peuvent être utilisés pour importer ou exporter un vocabulaire. Le plus souvent, la première colonne correspond au nom du terme. Vous pouvez indiquer comment les colonnes suivantes doivent être exportées ou importées.
La structure du vocabulaire doit être importée en premier lorsque plusieurs fichiers sont utilisés. Il faut donc choisir d'abord les options Champs et liens, plat, structure, polyhiérarchie, premier niveau de parents ou d'enfants avant les options relations, descriptions, etc.
Les termes sont importés comme de simples termes. Les colonnes suivantes sont ignorées. Exemple :
Diamant
Or
Bois
Les termes sont importés avec un schéma csv fourni par l'utilisateur.
Le schéma csv doit contenir chaque entête de colonne du vocabulaire à importer. L'entête de colonne est le nom (pas l'étiquette) du champ dans lequel importer les éléments. Cela peut être un champ par défaut (name, description, weight) ou un champ personnalisé.
Par exemple, vous voulez importer une liste de constructeurs automobiles et vous voulez que chaque constructeur ait des champs personnalisés indiquant la nationalité et la date de création (origine de l'exemple, fictif):
[Terme de taxinomie - [Champ personnalisé] - [Champ personnalisé]
Constructeur auto - Pays - Date d'origine
-----------------------------------------------------------------
Ford - US - 1900
Renault - France - 1901
Toyota - Japon - 1902
Nissan - Japon - 1903
Daimler Benz - Allemagne - 1904
Le format des champs personnalisés sera alors :
name, field_pays, field_date_origine
ou de façon plus générique :
name, field_monchampperso_1_machinename, field_monchampperso_2_machinename...
Les champs personnalisés sont créés automatiquement s'ils n'existent pas et is sont ensuite attachés au vocabulaire.
Actuellement, les champs personnalisés disponibles sont texte ('text'), reference à un autre terme ('taxonomy_term_reference') et même fichier ('file').
Le format par défaut est 'text'. Si vous voulez en utiliser un autre, vous devez l'indiquer avec le sympbole '|' dans la section 'Vocabulaire' du formulaire, sauf si le champ existe déjà.
Par exemple, vous voulez importer ces éléments (origine de l'exemple):
nom par défault 1,nom tax gtin 1,description 1, /home/robertom/file1.pdf, statut 1
nom par défault 2,nom tax gtin 2,description 2, /home/robertom/file2.pdf, statut 2
nom par défault 3,nom tax gtin 3,description 3, /home/robertom/file3.pdf, statut 3
Le format personnalisé pourra être :
name, field_nom_interne, description, field_fichier, field_statut
Les champs personnalisés seront :
field_fichier|file
Cette option permet d'importer la définition complète d'un terme ainsi que ses liens avec les autres termes.
Le format est : nom du terme, identifiant du terme, identifiant du vocabulaire, description, poids, nombre de synonymes, nombre de parents de premier niveau, nombre d'enfants de premier niveau, nombre de termes associés, liste des synonymes, liste des identifiants des parents de premier niveau, liste des identifiants des enfants de premier niveau, liste des identifiants des termes associés, liste des identifiants des vocabulaires des termes associés.
Seul le nom doit être défini, les autres valeurs pouvant être vides. Les identifiants ne sont pas les numéros internes des terme ou des vocabulaires, mais des identifiants uniques. Ils peuvent être des noms ou des nombres. Dans la plupart des cas, vous pouvez simplement utiliser les véritables noms. En fait, les identifiants doivent être spécifiques seulement pour les noms de termes doublons de manière à identifier chaque élément. De ce fait, pour les doublons, vous pouvez utiliser le nom plus un nombre. L'identifiant du terme principal est nécessaire seulement lorsque le terme est un doublon.
Exemples :
foo, , , "Description de foo", 10, 1, 1, 2, 2, Synonyme de foo, bar parent 1, bar enfant 1, bar enfant 2, bar relation 1, bar relation 2, , vocabulaire de relation 2
France, , Lieux, "Un grand pays", 1, 1, 1, 3, 3, République française, Europe, Paris, Lyon, Vichy, États-Unis, Japon, Chine
Japon, , Lieux, "Un vieux pays", 1, 1, 1, 2, 2, Le pays du soleil levant, Asie, Tokyo, Kyoto, Chine, France
Chine, , Lieux, "Un gros pays", 2, 1, 1, 1, 2, L'empire du milieu, Asie, Pékin, Japon, France
Asie, , Lieux, "Un continent étendu", 1, 0, 0, 2, 0, Japon, Chine
Avec ce format, le vocabulaire de destination est determiné par la source. Si la troisième colonne est vide, un nouveau vocabulaire sera créé. S'il s'agit d'un nom ou d'un nombre, un vocabulaire sera créé s'il n'existe pas. Ce processus est également utilisé pour les termes associés. Si le vocabulaire d'un terme associé n'est pas défini, le vocabulaire du terme principal est utilisé. Attention : il est déconseillé de modifier le vocabulaire d'un terme qui a des liens.
Un format plus simple, Définitions complètes de termes
, permet d'importer les seules définitions.
Cette option permet d'importer un ensemble de termes de manière à créer un vocabulaire plat. Tous les éléments du fichier seront importés en tant que termes. Exemple :
Vétements, Arbres, Maisons
Paris, Drupal
Cette option permet de créer la structure arborescente d'un vocabulaire (géographie, classification...). Pour importer une hiérarchie à plusieurs parents, il est préférable d'utiliser les importations "Polyhiérarchie", "Enfants de premier niveau" ou "Parents de premier niveau".
Votre fichier peut être écrit selon deux schémas et un mixte.
Animal,Mammifère,Baleine
Animal,Mammifère,Singe
Animal,Mammifère,Humain
Mammifère,Humain
Mammifère
> serait importé comme terme de premier niveau et non comme un enfant du terme < Animal
> comme dans la ligne précédente.
Monde
Asie
Japon
Tokyo
Corée
Séoul
Monde
,Asie
,,Japon
,,,Tokyo
,,Corée
,,,Séoul
,Europe
,,France
,,,Paris
,,Italie,Abruzzes,Chieti,Chieti
,,,,,Civitaluparella
Paris
> sera automatiquement ajouté comme enfant du terme < France
>.
Les lignes peuvent être partielles. Ainsi, la ligne suivante pourrait être :
,,Suisse,Bern
Suisse
> serait alors ajouté comme enfant d'< Europe
> et bien sûr < Bern
> comme enfant de < Suisse
>.
De la même façon, les lignes ci-dessus peuvent être simplifiées en :
Monde, Asie, Japon, Tokyo
,, Corée, Séoul
Monde, Europe, France, Paris
Séoul
> deviendrait un enfant de < Japon
>.
Cette option permet de créer une structure polyhiérarchique telle qu'une généalogie.
Le format est le même que le précédent : chaque terme est l'enfant du précédent : parent, enfant, petit-enfant... et ainsi de suite.
Cependant, quatre points différent. Premièrement, le premier élément ne doit pas forcément être une racine. Deuxièmement, les doublons sont toujours fusionnés, sauf lorsque l'un est parent direct de l'autre, ceci étant interdit dans Drupal. De ce fait, dans le cas d'un vocabulaire monohierarchique sans doublons non-direct, comme l'exemple géographique ci-dessus, le résultat est le même qu'avec l'option précédente. Troisièmement, les lignes peuvent également être partielles, mais dans certains cas de doublons, le résultat sera différent. Enfin, la polyhierarchie peut être récursive.
Par exemple, des lignes peuvent être :
Grand-Mère, Mère, Fille
Grand-Père, Mère, Fils
Grand-Mère 2, Père, Fille
Grand-Père 2, Père, Fils
, , Fils 2
, Oncle
Grand-Mère 2, Oncle
Père, Fils 3
Cette option permet d'importer un vocabulaire dans lequel les termes peuvent avoir plusieurs parents, comme dans une généalogie (polyhierarchy).
Le premier élément est importé en tant que terme et les suivants en tant que parents de premier niveau du terme. Par exemple, des lignes peuvent être :
Fille, Mère, Père
Fils, Mère, Père
Fils 2, Père
Fils 3, Père
Mère, Grand-Mère, Grand-Père
Père, Grand-Mère 2, Grand-Père 2
Oncle, Grand-Mère 2, Grand-Père 2
Cette option permet d'importer un vocabulaire dans lequel les termes peuvent avoir plusieurs parents, comme dans une généalogie (polyhierarchy).
Le premier élément est importé en tant que terme et les suivants en tant qu'enfants de premier niveau du terme. Par exemple, des lignes peuvent être :
Mère, Fille, Fils
Père, Fille, Fils, Fils 2, Fils 3
Grand-Mère, Mère
Grand-Père, Mère
Grand-Mère 2, Père, Oncle
Grand-Père 2, Père, Oncle
Attention : sous Drupal 7, les termes associés ont été supprimés et remplacés par les champs (fields). Cette option est donc disponible seulement avec Drupal 6. Pour disposer de la même fonctionnalité, il faut créer un champ 'relations'.
Cette option permet de créer des liens entre les termes comme les "voir aussi" dans une encyclopédie. La deuxième colonne et les suivantes seront importées en tant que termes connexes du terme de la première colonne. Par exemple, une ligne pourrait être :
Baobab, Madagascar, Fantôme
Baobab
> renverra à < Madagascar
> et à < Fantôme
>. Une option permet de créer également les sous-relations, en l'occurrence entre < Madagascar
> et < Fantôme
> (voir ci-dessous).
La deuxième colonne et les suivantes seront importées comme termes synonymes du terme de la première colonne. Exemple :
"Royaume Uni", "Grande-Bretagne", "Angleterre"
Cette option permet d'importer des définitions complètes de termes.Le format est : nom, poids, description, liste des synonymes éventuels. Exemple :
Rue, 1, "Une voie urbaine", Avenue, Route
Champs et liens des termes
, permet d'importer non seulement les définitions, mais également les liens.
La seconde colonne sera importée comme description du terme défini dans la première colonne. Exemple :
"Baobab","Un arbre africain"
La seconde colonne sera importée comme poids du terme défini dans la première colonne. Exemple :
Baobab, 3
Ce format est utilisé par Taxonomy manager pour exporter des vocabulaires. Les colonnes sont : identifiant du vocabulaire, identifiant du terme, nom du terme, description du terme, id du parent 1 de premier niveau, ..., id du parent n de premier niveau. Example:
, 1, "Île-de-France", "Main region"
, 2, "Paris", "Capital of France", 1
Dans ce format, l'ordre des lignes est important : il est impossible d'attacher un parent à un terme si ce parent n'a pas été importé dans une ligne précédente.
Lorsqu'un vocabulaire est importé dans un vocabulaire existant, seule l'option "ignorer et créer" peut être utilisée.
Importe et exporte des termes de géotaxinomie.
Format
nom, latitude, longitude, parent, frontières haut, droite, bas, gauche
Exemple
"Paris", 48.833, 2.333, "Île-de-France"
"Île-de-France", 47, 2, "France"
Seuls le nom, la latitude et la longitude sont nécessaires. Indiquer un parent est recommandé afin d'aboutir à une structure hiérarchique.
Les identifiants peuvent être des nombres ou non, par exemple le nom du terme lui-même, mais ils doivent être uniques pour éviter les termes doublons. Seuls les doublons ont besoin d'un identifiant.
Taxonomy CSV permet d'importer des structures et des propriêtés de termes.
La source peut être configurée avec le premier groupe d'options. Le plus souvent, la première colonne indique le nom du terme importé. Vous pouvez indiquer comment les colonnes suivantes doivent être importées en choisissant le format.
Vous pouvez importez les termes à partir d'un fichier ou avec une zone de texte. Sélectionnez simplement votre choix. L'adresse du fichier peut être un chemin local ou une url.
Les paramètres avancés permettent de choisir le séparateur et le délimiteur de champ.
L'import doit être formaté au format utf-8, de préférence sans la marque d'ordre des octets.
Ce groupe d'options permet de définir les séparateur et délimiteur spécifiques des champs ainsi qu'une format de langue tel que 'fr_FR.utf8'.
,
" par défaut, point-virgule ";
" ou tabulation) entre les termes peut être choisi dans les paramètres avancés du deuxième groupe d'options. Le séparateur peut également être personnalisé. Il ne peut avoir qu'un seul caractère. Exemple avec le séparateur < ¤
> :terme 1¤Ce champ contient des virgules, un point-virgule (;), des guillemets (") et une tabulation, mais il est correctement importé.
"
), notamment s'ils contiennent des caractères non-ASCII ou si les éléments importés, en particulier les descriptions, contiennent le séparateur choisi. Exemple:"terme 1","Ce champ contient une virgule, mais il sera correctement importé."
"
) sont automatiquement pris en compte.
Vous pouvez importer vos termes dans un vocabulaire existant ou en créer un nouveau. Vous pouvez également importer vos termes dans une copie d'un vocabulaire existant.
Quand vous voulez importer une nouvelle liste dans une taxinomie existante, il est recommandé de procéder en trois étapes de façon à garantir la qualité de l'importation.
Si vous voulez seulement créer un nouveau vocabulaire, le premier choix est suffisant, à moins que vous avez plusieurs fichiers pour un vocabulaire.
Quand le contenu de la source est Définitions complètes de termes et liens
, la destination est déterminée par la source. Si la troisième colonne est un identifiant, un nouveau vocabulaire sera créé. S'il s'agit d'un nom, un vocabulaire sera créé s'il n'existe pas. Si elle est vide ou égale à zéro, le vocabulaire sera autocréé, dupliqué ou utilisé selon l'option. Il en est de même pour les termes associés.
La destination peut être configurée avec le second groupe d'options. Vous pouvez définir ce que deviendront les termes existants. Jusqu'à quatre choix sont possibles selon le contenu de la source :
Met à jour les termes existants lorsque le nom correspond avec celui des termes importés et fusionne les descriptions, parents, synonymes et termes connexes existants. Les doublons sont supprimés. Ce choix est conseillé si vous voulez conserver un vocabulaire et si vous avez des descriptions, des parents, des synonymes et des termes connexes que vous ne voulez pas perdre.
Met à jour les termes existants si le nom correspond à celui des termes importés, mais remplace les descriptions, les parents, les termes synonymes et connexes existants. Choisissez cette option si vous voulez créer proprement un nouveau vocabulaire sans perdre les termes existants.
Attention : s'il n'y a pas de description, parent, synonyme ou terme connexe, c'est-à-dire si la ligne contient seulement un terme dans la première colonne, cela supprimera l'existant.
Conserve les termes existants tels qu'ils sont et crée un nouveau terme pour le terme de la première colonne.
Attention : cela peut créer des doublons. Cette option est conseillée seulement si vous êtes sûr que la taxinomie importée contient seulement des termes nouveaux ou si votre vocabulaire autorise les parents multiples.
Crée un nouveau terme pour chaque terme de la ligne.
Ce groupe d'options permet de choisir les informations affichés à la fin du traitement.
Pour importer une taxinomie de taille importante (à partir de 1000 ou 10000 lignes selon le serveur) lorsqu'il n'est pas possible de modifier les temps et mémoire maximum autorisés par le serveur, il est d'abord conseillé de désactiver certains modules utilisant les taxinomies tels que "pathauto" avant l'importation. Les paramètres ne sont pas perdus lorsqu'un module est désactivé - et non désinstallé -.
Ensuite, vous pouvez utiliser les paramètres avancés suivants (dans les groupes d'options).
Les stats, termes, remarques et avertissements affichés à la fin du traitement consomment de la mémoire. Vous pouvez donc les réduire ou les désactiver.
Déterminer le niveau hiérarchique d'un vocabulaire nécessite beaucoup de mémoire. Cette option permet donc de le définir manuellement sans vérification.
Si vous êtes sûr que le vocabulaire à importer est correctement formaté (utf8, ordre des éléments...), vous pouvez désactiver la vérification. Cette option augmente la vitesse d'importation de 5%.
Taxonomy CSV permet d'exporter les structures et les propriétés des termes d'un ou plusieurs vocabulaires.
Choisissez simplement ce que vous voulez exporter (cf. formats) et comment exporter. Certains formats ne sont pas disponibles.
Ce module peut être utilisé comme une API. Vous pouvez utiliser le module complet comme dépendance ou directement dans votre module. L'import s'effectue ainsi :
$csv_lines = '"Europe", "France", "Paris"';
$csv_lines .= "\n". ',, "Lyon"';
$csv_lines .= "\n". ',"Royaume-Uni", "Lyon"';
$csv_lines .= "\n". ',"Portugal", "Lisbonne"';
$result = taxonomy_csv_import(
array(
'text' => $csv_lines,
'import_format' => 'tree_structure',
'existing_items' => 'update_replace',
));
Ou comme cela (import au niveau d'une ligne) :
$result = taxonomy_csv_line_import(
array("Europe", "France", "Paris"),
array(
'import_format' => 'tree_structure',
'vocabulary_id' => 2,
'existing_items' => 'update_replace',
));
Les formats d'importation sont présentés dans les commentaires et ci-dessus. Certains peuvent être indisponibles.
Des infos complémentaires sont disponibles dans TECHINFO.txt.
Pour importer des termes, l'utilisateur doit avoir les permissions générales de taxinomies (Drupal 6) ou taxinomies (Drupal 7). Ces droits d'accès sont souvent associés aux permissions pour accéder aux pages d'administration.
Un autre module Drupal permet également l'importation d'une taxinomie par le biais d'un fichier CSV, malgré son nom : taxonomy XML. Son approche est différente. Il utilise un fichier unique conforme à la norme ISO 2788 sur les thésaurus, en l'occurrence un fichier CSV à trois colonnes : terme, type de lien (relation, description, synonyme...), élément
, ou, pour les specialistes, sujet, prédicat, objet
. Les champs supplémentaires sont traités comme le troisième. Pour Drupal 4.7 et Drupal 5, taxonomy batch operations peut également être utilisé. Vous pouvez donc choisir le module correspondant le mieux à vos besoins.
Pour l'exportation, vous pouvez utiliser également Taxonomy XML ou l'un des modules de sauvegardes. Taxonomy CSV est un outil plus spécialisé qui permet des paramètrages plus précis.