You are here

Aide de Taxonomy CSV import/export in Taxonomy CSV import/export 6.5

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 !).

Après avoir installé le module, les permissions "importer des taxinomies par csv" et "exporter des taxinomies par csv" doivent être activées. La permission "administrer les taxinomies" n'est pas nécessaire pour utiliser le module, mais est recommandée.

Les termes peuvent être internationalisés, à l'exception des champs attachés [Taxonomy CSV pour Drupal 7 seulement]. Vous pouvez donc importer une liste ou une structure de termes puis traduire ces derniers.

Ce module peut être utilisé avec drush : il est possible d'importer et d'exporter des taxinomies par le biais de la ligne de commandes.

1. Formats

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.

1. Termes seuls

Les termes sont importés comme de simples termes. Les colonnes suivantes sont ignorées. Exemple :

  • Diamant
  • Or
  • Bois

2. Champs personnalisés (Drupal 7 Fields)

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 éléments peuvent être répétés pour les champs multivalués (Taxonomy CSV 7.x-10.x-dev).

name, description, weight, parent, synonyme, synonyme, synonyme, terme_lien, terme_lien, terme_lien, terme_lien

Le module peut importer tous les types de champs (Field) tant que leur valeur principale est 'value'. Ces champs ont été vérifiés :

  • text
  • text_long
  • text_with_summary
  • number_decimal
  • number_integer
  • number_float
  • list_boolean
  • taxonomy_term_reference
  • file

Les champs personnalisés sont créés automatiquement s'ils n'existent pas et is sont ensuite attachés au vocabulaire. Le format par défaut est 'text'. Si vous voulez en utiliser un autre, vous devez l'indiquer avec le symbole '|' dans la section 'Vocabulaire' du formulaire. Le champ n'est pas créé ni modifié s'il existe déjà.

Par exemple, vous voulez importer ces éléments (origine de l'example) :

  • nom 1, nom tax gtin 1, description 1, /home/robertom/file1.pdf, statut 1, terme lié 1, terme lié 2, terme lié 3
  • nom 2, nom tax gtin 2, description 2, /home/robertom/file2.pdf, statut 2, terme lié 1, term lié 4
  • nom 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, terme_lien, terme_lien, terme_lien

Les champs personalisés seront :

field_fichier|file, terme_lien|taxonomy_term_reference

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 pays libre", 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.

4. Termes (vocabulaire plat)

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

5. Structure hiérarchique ou en tableau d'un terme par ligne

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.

Premier schéma: tous les ancètres d'un terme
Dans le premier schéma, vous devez indiquer tous les ancêtres de chaque terme. La deuxième colonne sera importée comme un enfant du terme de la première colonne. La troisième colonne sera importée comme un enfant du terme de la deuxième colonne et ainsi de suite. Les lignes peuvent avoir n'importe quel ordre. Exemple:

  • Animal,Mammifère,Baleine
  • Animal,Mammifère,Singe
Attention : lorsqu'un enfant est ajouté ou mis à jour, la ligne doit contenir tous ses ancêtres. Ainsi, une troisième ligne pourrait être :
  • Animal,Mammifère,Humain
mais pas :
  • Mammifère,Humain
car dans ce cas, < Mammifère > serait importé comme terme de premier niveau et non comme un enfant du terme < Animal > comme dans la ligne précédente.
Second schéma: structure en tableau d'un terme par ligne
Dans le schéma "structure en tableau d'un terme par ligne", vous pouvez importer les termes sans répéter tous les ancêtres si la ligne précédente les contient. Ce mode est très pratique pour importer une structure depuis un tableur. Il permet également de construire facilement une structure et de télécharger un fichier plus léger. Votre hiérarchie peut être présentée de la façon suivante :
Monde
Asie
Japon
Tokyo
Corée
Séoul

Ainsi, les premières lignes de votre fichier csv seraient :
  • 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 >.
Schema mixte

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
Les lignes complètes, avec un seul terme ou partielles peuvent être mélangées, mais l'ordre est pris en compte deux lignes par deux, sauf lorsque toutes les lignes sont complètes. Dans cet exemple, si les cinquième et sixième lignes sont interverties, < Séoul > deviendrait un enfant de < Japon >.

6. Structure polyhiérarchique

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

7. Parents de premier niveau

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

8. Enfants de premier niveau

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
Les trois exemples précédents correspondent au même vocabulaire lorsque l'option des termes existants est "mettre à jour et fusionner", ce qui est l'option recommandée.

9. Termes associés (termes connexes)

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
Ainsi, < 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).

10. Termes synonymes

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"

11. Définitions complètes de termes

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
Un autre choix, Champs et liens des termes, permet d'importer non seulement les définitions, mais également les liens.

12. Descriptions des termes

La seconde colonne sera importée comme description du terme défini dans la première colonne. Exemple :

  • "Baobab","Un arbre africain"

13. Poids des termes

La seconde colonne sera importée comme poids du terme défini dans la première colonne. Exemple :

  • Baobab, 3

14. Traduction du nom et de la description [Drupal 7 seulement]

3. Term translation

Ce format est disponible seulement si le sous-module "i18n Taxonomy" du module Internationalization est activé. De plus le mode de traduction du vocabulaire doit être "Translate" ou "Localize".

Attention : Si vous avez une structure hiérarchique, vous devez importer celle-ci avant d'importer les traductions, pour chaque traduction si le mode de traduction est Translate.

Format: Le terme est dans la première colonne, suivi par ses traductions. Si le mode est Localize, alors la description du terme et ses traductions peuvent être ajoutée.

Pour un vocabulaire avec le mode Translate :

nom du terme/id, première traduction, deuxième traduction...

Pour un vocabulaire avec le mode Localize :

nom du terme/id, première traduction... , description, première traduction de la description...

Exemples :

  • foo, bar
  • "United Kingdom", "Royaume-Uni", "Vereinigte Königreich"
  • "Germany", "Allemagne", "A European country", "Un pays européen" [vocabulaire avec le mode Localize seulement]

Notes

  • Avec un vocabulaire dans le mode Translate, un terme avec un language indéfinie ne peut être traduit. En conséquence, il ne faut pas oublier de choisir une langue lorsque vous importez les termes.
  • Avec un vocabulaire dans le mode Localize, seuls les termes avec un language indéfini peuvent être traduits. De ce fait, il convient de ne pas définir de language lors de l'import.
  • Toutes les langues doivent avoir été activées dans les paramètres régionaux avant l'import.
  • Important: Si votre taxinomie est structurée, vous devez importer la structure avant. De plus, si le mode du vocabulaire est Translate, vous devez importer la structure pour chaque traduction avant. La procédure crée seulement des groupes de traduction, mais ne recrée pas la structure.
  • Avec le mode Translate, les termes avec une langue indéfinie ("und") ne peuvent pas être traduits.
  • Avec le mode Localize, seuls les termes avec une langue indéfinie peuvent être traduits. La première langue doivent donc être "und" et la langue par défaut du site ne peut être utilisée.

La première colonne correspond au nom, la seconde à sa traduction et les deux suivantes à leur description éventuelle. Exemple :

  • foo, bar, description de foo, description de bar
  • "Royaume-Uni", "United Kingdom"
  • "Allemagne", "Germany", "Un pays européen", "A European country"

La langue du premier terme est "Neutre" et celle du second élement peut être sélectionné dans le troisième onglet.

Ce format est disponible seulement si le sous-module "i18n Taxonomy" du module Internationalization est activé.

15. Taxonomy manager

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.

16. Geotaxonomy

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.

2. Import

Taxonomy CSV permet d'importer des structures et des propriêtés de termes.

1. Que voulez-vous importer (contenu de la source) ?

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.

2. Où se trouvent les termes à importer ?

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.

3. Quel est le format de la source ?

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'.

  • Le séparateur (virgule "," 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é.
  • Il est conseillé de protéger les termes par des caractères de délimitation tels que les guillemets ("), 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é."
    Vous pouvez choisir un caractère de délimitation personalisé dans les paramètres avancés du deuxième groupe d'options. Il ne peut avoir qu'un seul caractère ou être nul. Les guillemets (") sont automatiquement pris en compte.
  • Attention : quand vous exportez un vocabulaire, le séparateur et le délimiteur ne doivent pas être utilisés dans les définitions des termes, notamment dans les descriptions. L'export s'arrêtera en cas de problème.

4. Quel est le vocabulaire de destination ?

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.

  • D'abord, vérifier le fichier d'importation en choisissant l'option < Autocréer un nouveau vocabulaire >. Répéter cette étape tant qu'il y a des avertissements et des messages.
  • Ensuite, vérifier la fusion entre les nouveaux termes et les termes existants avec l'option < Dupliquer un vocabulaire existant >. Ce choix crée une copie de votre vocabulaire cible et y importe les termes. Les attachements aux nœuds ne sont pas copiés.
  • Enfin, vous pouvez importer votre fichier dans le bon vocabulaire avec l'option < Importer dans un vocabulaire existant >. Cela permet de conserver les liens entre les termes et les nœuds.

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.

5. Quand un terme existe, que faire avec ?

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 :

  • Mettre les termes à jour et fusionner avec l'existant

    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.

  • Mettre les termes à jour et remplacer l'existant

    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.

  • Ignorer les termes existants et en créer de nouveaux

    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.

  • Ignorer tous les termes et en créer de nouveaux

    Crée un nouveau terme pour chaque terme de la ligne.

6. Infos sur le traitement et import de grosses taxinomies

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).

  • Réduire le niveau d'informations

    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.

  • Indiquer manuellement le niveau hiérarchique du vocabulaire

    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.

  • Désactiver la vérification des lignes

    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%.

Attention: la fonction "Lister les termes" par défaut de Drupal peut engendrer des erreurs de mémoire avec les taxinomies de taille importante. Dans ce cas, il est préférable d'utiliser un autre gestionnaire de taxinomies tel que Taxonomy manager.

3. Export

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.

4. Taxonomy csv import API

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.

5. Paramètres avancés et conseils

1. Permissions

Pour importer/exporter des termes, l'utilisateur doit disposer des droits 'Importer des taxinomies par CSV' et 'Exporter des taxinomies par CSV'.
De plus, l'utilisateur doit disposer des permissions générales d'administration des'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.

2. Autres conseils

  • Il est conseillé d'utiliser un fichier encodé au format utf8 pour éviter les problèmes avec les termes non-ASCII.
  • Si vous voulez importer à la fois des termes enfants, des descriptions, des poids, des termes synonymes et connexes et une structure hiérarchique, vous devez commencer par le fichier contenant la structure hiérarchique des parents et des enfants. Ainsi, vous devez d'abord importer le fichier des termes enfants en choisissant l'option Vocabulaire plat, Structure, Parents ou Enfants. Ensuite, vous pouvez importer les autres fichiers en choisissant l'option adéquate et l'une ou l'autre option Mettre à jour...
  • Attention : si 1) le choix de la source n'est pas "Ignorer" les colonnes supplémentaires, 2) le fichier ou une ligne dans le fichier contient seulement une colonne et 3) vous choisissez "Mettre à jour et remplacer", le processus d'importation deviendra un processus de suppression des éléments correspondants (les termes de la première colonne sont toujours conservés ou importés).
  • Des problèmes de mémoire ou de compatibilité ont été signalés pour certains modules tels que Pathauto, taxonomy_vtn and taxonomynode (see #495548, #447852 et #540916). Il est conseillé d'augmenter temporairement la mémoire du serveur et de php (aucun problème n'a été signalé avec 256 Mo) ou de désactiver ces modules manuellement (les paramètres ne sont pas perdus lors d'une désactivation - et non une désinstallation -). Après l'importation, vous pouvez réduire la mémoire et réactiver les modules.

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.


File

taxonomy_csv.help.fr.html
View source
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Aide de Taxonomy CSV import/export</title>
  <style type="text/css"><!--
    h3 {
      font: bold 120% sans-serif;
    }
    h4 {
      font: bold 100% sans-serif;
      margin-top: 24px;
      margin-left: 18px;
    }
    h5 {
      font: italic 100% sans-serif;
      margin-top: 8px;
      margin-left: 36px;
    }
    table {
      width: 80%;
    }
    table,
    div.codeblock {
      border: 1px solid rgb(204, 204, 204);
      padding: 4px;
      background-color: rgb(238, 238, 238);
      margin: 6px 96px 12px 24px;
    }
    code {
      white-space: pre;
    }
  --></style>
</head>
<body>
<p>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 <a href="http://fr.wikipedia.org/wiki/Comma-separated_values" title="Définition Wikipedia">CSV</a>, d'une url ou d'un texte copié-collé.</p>
<p>Le format CSV correspond à une simple liste de valeurs séparées par un séparateur, souvent une virgule(<strong><code>,</code></strong>) ou un point-virgule (<strong><code>;</code></strong>), et des caractères de délimitation, souvent les guillemets (<strong><code>"</code></strong>). Si vous ne savez pas comment créer un fichier CSV, vous pouvez utiliser <a href="http://www.libreoffice.org" title="LibreOffice.org">LibreOffice Calc</a> ou un autre tableur pour exporter vos données dans un fichier CSV.</p>
<p>Des formats d'import ou d'export spécifiques peuvent être ajoutés simplement par un mécanisme d'extensions (sinon, demander à l'auteur !).</p>
<p>Après avoir installé le module, les permissions "importer des taxinomies par csv" et "exporter des taxinomies par csv" doivent être activées. La permission "administrer les taxinomies" n'est pas nécessaire pour utiliser le module, mais est recommandée.</p>
<p>Les termes peuvent être internationalisés, à l'exception des champs attachés [Taxonomy CSV pour Drupal 7 seulement]. Vous pouvez donc importer une liste ou une structure de termes puis traduire ces derniers.</p>
<p>Ce module peut être utilisé avec <a href="https://drupal.org/project/drush">drush</a> : il est possible d'importer et d'exporter des taxinomies par le biais de la ligne de commandes.</p>
  <div class="toc">
    <h2 class="nonum"><a id="contents" name="contents">Sommaire</a></h2>
    <ol class="toc">
      <li>
        <a href="#formats">Formats</a>
        <ol class="toc">
          <li>
            <a href="#alone_terms">Termes seuls</a>
          </li>
          <li>
            <a href="#custom_fields">Champs personnalisés (Drupal 7 Fields)</a>
          </li>
          <li>
            <a href="#def_links">Champs et liens des termes</a>
          </li>
          <li>
            <a href="#flat">Termes (vocabulaire plat)</a>
          </li>
          <li>
            <a href="#tree_structure">Structure hiérarchique ou en tableau d'un terme par ligne</a>
          </li>
          <li>
            <a href="#polyhierarchy">Structure polyhiérarchique</a>
          </li>
          <li>
            <a href="#parents">Parents de premier niveau</a>
          </li>
          <li>
            <a href="#children">Enfants de premier niveau</a>
          </li>
          <li>
            <a href="#relations">Termes associés (termes connexes)</a>
          </li>
          <li>
            <a href="#synonyms">Termes synonymes</a>
          </li>
          <li>
            <a href="#fields">Définitions complètes de termes</a>
          </li>
          <li>
            <a href="#descriptions">Descriptions des termes</a>
          </li>
          <li>
            <a href="#weights">Poids des termes</a>
          </li>
          <li>
            <a href="#translation_name">Term and description translation</a>
          </li>
          <li>
            <a href="#taxonomy_manager">Taxonomy manager</a>
          </li>
          <li>
            <a href="#geotaxonomy">Geotaxonomy</a>
          </li>
        </ol>
      </li>
      <li>
        <a href="#import">Import</a>
        <ol class="toc">
          <li>
            <a href="#import_content">Que voulez-vous importer ?</a>
          </li>
          <li>
            <a href="#source">Où se trouvent les termes à importer ?</a>
          </li>
          <li>
            <a href="#file_format">Quel est le format de la source ?</a>
          </li>
          <li>
            <a href="#destination">Quel est le vocabulaire de destination ?</a>
          </li>
          <li>
            <a href="#import_options">Quand un terme existe, que faire avec ?</a>
          </li>
          <li>
            <a href="#info_process">Infos sur le traitement et import de grosses taxinomies</a>
          </li>
        </ol>
      </li>
      <li>
        <a href="#export">Export</a>
      </li>
      <li>
        <a href="#import_api">Taxonomy csv import API</a>
      </li>
      <li>
        <a href="#advanced_options">Paramètres avancés et conseils</a>
        <ol class="toc">
          <li>
            <a href="#permissions">Permissions</a>
          </li>
          <li>
            <a href="#other_hints">Autres conseils</a>
          </li>
        </ol>
      </li>
    </ol>
  </div>
<h3 id="formats"><a href="#contents">1. Formats</a></h3>
  <p>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.<br />
  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.</p>
  <h4 id="alone_terms"><a href="#contents">1. Termes seuls</a></h4>
    <p>Les termes sont importés comme de simples termes. Les colonnes suivantes sont ignorées. Exemple :</p>
      <div class="codeblock"><ul>
        <li><code>Diamant</code></li>
        <li><code>Or</code></li>
        <li><code>Bois</code></li>
      </ul></div>
  <h4 id="custom_fields"><a href="#contents">2. Champs personnalisés (Drupal 7 Fields)</a></h4>
    <p>Les termes sont importés avec un schéma csv fourni par l'utilisateur.</p>
    <p>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é.</p>
    <p>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 (<a href="https://drupal.org/node/1027068#comment-4152194">origine de l'exemple, fictif</a>):</p>
    <div class="codeblock"><ul>
      <li><code>[Terme de taxinomie - [Champ personnalisé] - [Champ personnalisé]</code></li>
      <li><code>Constructeur auto   - Pays                 - Date d'origine      </code></li>
      <li><code>-----------------------------------------------------------------</code></li>
      <li><code>Ford            - US             - 1900</code></li>
      <li><code>Renault         - France         - 1901</code></li>
      <li><code>Toyota          - Japon          - 1902</code></li>
      <li><code>Nissan          - Japon          - 1903</code></li>
      <li><code>Daimler Benz    - Allemagne      - 1904</code></li>
    </ul></div>
    <p>Le format des champs personnalisés sera alors :</p>
    <div class="codeblock">
      <code>name, field_pays, field_date_origine</code>
    </div>
    <p>ou de façon plus générique :</p>
    <div class="codeblock">
      <code>name, field_monchampperso_1_machinename, field_monchampperso_2_machinename...</code>
    </div>
    <p>Les éléments peuvent être répétés pour les champs multivalués (Taxonomy CSV 7.x-10.x-dev).</p>
    <div class="codeblock">
      <code>name, description, weight, parent, synonyme, synonyme, synonyme, terme_lien, terme_lien, terme_lien, terme_lien</code>
    </div>
    <p>Le module peut importer tous les types de champs (Field) tant que leur valeur principale est 'value'. Ces champs ont été vérifiés :
    <ul>
      <li><code>text</code></li>
      <li><code>text_long</code></li>
      <li><code>text_with_summary</code></li>
      <li><code>number_decimal</code></li>
      <li><code>number_integer</code></li>
      <li><code>number_float</code></li>
      <li><code>list_boolean</code></li>
      <li><code>taxonomy_term_reference</code></li>
      <li><code>file</code></li>
    </ul></p>
    <p>Les champs personnalisés sont créés automatiquement s'ils n'existent pas et is sont ensuite attachés au vocabulaire. Le format par défaut est 'text'. Si vous voulez en utiliser un autre, vous devez l'indiquer avec le symbole '|' dans la section 'Vocabulaire' du formulaire. Le champ n'est pas créé ni modifié s'il existe déjà.</p>
    <p>Par exemple, vous voulez importer ces éléments (<a href="https://drupal.org/node/1027068#comment-4194716">origine de l'example</a>) :</p>
    <div class="codeblock"><ul>
      <li><code>nom 1, nom tax gtin 1, description 1, /home/robertom/file1.pdf, statut 1, terme lié 1, terme lié 2, terme lié 3</code></li>
      <li><code>nom 2, nom tax gtin 2, description 2, /home/robertom/file2.pdf, statut 2, terme lié 1, term lié 4</code></li>
      <li><code>nom 3, nom tax gtin 3, description 3, /home/robertom/file3.pdf, statut 3</code></li>
    </ul></div>
    <p>Le format personnalisé pourra être :</p>
    <div class="codeblock">
      <code>name, field_nom_interne, description, field_fichier, field_statut, terme_lien, terme_lien, terme_lien</code>
    </div>
    <p>Les champs personalisés seront :</p>
    <div class="codeblock">
      <code>field_fichier|file, terme_lien|taxonomy_term_reference</code>
    </div>
  <h4 id="def_links"><a href="#contents">3. Champs et liens des termes</a></h4>
    <p>Cette option permet d'importer la définition complète d'un terme ainsi que ses liens avec les autres termes.</p>
    <p>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.</p>
    <p>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.</p>
    <p>Exemples :</p>
      <div class="codeblock"><ul>
        <li><code>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</code></li>
        <li><code>France, , Lieux, "Un pays libre", 1, 1, 1, 3, 3, République française, Europe, Paris, Lyon, Vichy, États-Unis, Japon, Chine</code></li>
        <li><code>Japon, , Lieux, "Un vieux pays", 1, 1, 1, 2, 2, Le pays du soleil levant, Asie, Tokyo, Kyoto, Chine, France</code></li>
        <li><code>Chine, , Lieux, "Un gros pays", 2, 1, 1, 1, 2, L'empire du milieu, Asie, Pékin, Japon, France</code></li>
        <li><code>Asie, , Lieux, "Un continent étendu", 1, 0, 0, 2, 0, Japon, Chine</code></li>
      </ul></div>
    <p>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.</p>
    <p>Un format plus simple, <a href="#fields"><code>Définitions complètes de termes</code></a>, permet d'importer les seules définitions.</p>
  <h4 id="flat"><a href="#contents">4. Termes (vocabulaire plat)</a></h4>
    <p>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 :</p>
      <div class="codeblock"><ul>
        <li><code>Vétements, Arbres, Maisons</code></li>
        <li><code>Paris, Drupal</code></li>
      </ul></div>
  <h4 id="tree_structure"><a href="#contents">5. Structure hiérarchique ou en tableau d'un terme par ligne</a></h4>
    <p>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".<br />
    Votre fichier peut être écrit selon deux schémas et un mixte.<br />
    <h5 id="tree_structure_full_line"><a href="#contents">Premier schéma: tous les ancètres d'un terme</a></h5>
      Dans le premier schéma, vous devez indiquer tous les ancêtres de chaque terme. La deuxième colonne sera importée comme un enfant du terme de la première colonne. La troisième colonne sera importée comme un enfant du terme de la deuxième colonne et ainsi de suite. Les lignes peuvent avoir n'importe quel ordre. Exemple:</p>
        <div class="codeblock"><ul>
          <li><code>Animal,Mammifère,Baleine</code></li>
          <li><code>Animal,Mammifère,Singe</code></li>
        </ul></div>
      Attention : lorsqu'un enfant est ajouté ou mis à jour, la ligne doit contenir tous ses ancêtres. Ainsi, une troisième ligne pourrait être :
        <div class="codeblock"><ul>
          <li><code>Animal,Mammifère,Humain</code></li>
        </ul></div>
      mais <strong>pas</strong> :
        <div class="codeblock"><ul>
          <li><code>Mammifère,Humain</code></li>
        </ul></div>
      car dans ce cas, &lt; <code>Mammifère</code> &gt; serait importé comme terme de premier niveau et non comme un enfant du terme &lt; <code>Animal</code> &gt; comme dans la ligne précédente.
    <h5 id="tree_structure_partial_line"><a href="#contents">Second schéma: structure en tableau d'un terme par ligne</a></h5>
      Dans le schéma "structure en tableau d'un terme par ligne", vous pouvez importer les termes sans répéter tous les ancêtres si la ligne précédente les contient. Ce mode est très pratique pour importer une structure depuis un tableur. Il permet également de construire facilement une structure et de télécharger un fichier plus léger. Votre hiérarchie peut être présentée de la façon suivante :<br />
        <code><table border="1">
          <tr><td>Monde</td><td></td><td></td><td></td></tr>
          <tr><td></td><td>Asie</td><td></td><td></td></tr>
          <tr><td></td><td></td><td>Japon</td><td></td></tr>
          <tr><td></td><td></td><td></td><td>Tokyo</td></tr>
          <tr><td></td><td></td><td>Corée</td><td></td></tr>
          <tr><td></td><td></td><td></td><td>Séoul</td></tr>
        </table></code>
        <br />
      Ainsi, les premières lignes de votre fichier csv seraient :
        <div class="codeblock"><ul>
          <li><code>Monde</code></li>
          <li><code>,Asie</code></li>
          <li><code>,,Japon</code></li>
          <li><code>,,,Tokyo</code></li>
          <li><code>,,Corée</code></li>
          <li><code>,,,Séoul</code></li>
        </ul></div>
        <div class="codeblock"><ul>
          <li><code>,Europe</code></li>
          <li><code>,,France</code></li>
          <li><code>,,,Paris</code></li>
        </ul></div>
        <div class="codeblock"><ul>
          <li><code>,,Italie,Abruzzes,Chieti,Chieti</code></li>
          <li><code>,,,,,Civitaluparella</code></li>
        </ul></div>
      &lt; <code>Paris</code> &gt; sera automatiquement ajouté comme enfant du terme &lt; <code>France</code> &gt;.
    <h5 id="tree_structure_mixed_line"><a href="#contents">Schema mixte</a></h5>
      <p>Les lignes peuvent être partielles. Ainsi, la ligne suivante pourrait être :</p>
        <div class="codeblock"><ul>
          <li><code>,,Suisse,Bern</code></li>
        </ul></div>
      &lt; <code>Suisse</code> &gt; serait alors ajouté comme enfant d'&lt; <code>Europe</code> &gt; et bien sûr &lt; <code>Bern</code> &gt; comme enfant de &lt; <code>Suisse</code> &gt;.
      <p>De la même façon, les lignes ci-dessus peuvent être simplifiées en :</p>
        <div class="codeblock"><ul>
          <li><code>Monde, Asie, Japon, Tokyo</code></li>
          <li><code>,, Corée, Séoul</code></li>
          <li><code>Monde, Europe, France, Paris</code></li>
        </ul></div>
      Les lignes complètes, avec un seul terme ou partielles peuvent être mélangées, mais l'ordre est pris en compte deux lignes par deux, sauf lorsque toutes les lignes sont complètes. Dans cet exemple, si les cinquième et sixième lignes sont interverties, &lt; <code>Séoul</code> &gt; deviendrait un enfant de &lt; <code>Japon</code> &gt;.
  <h4 id="polyhierarchy"><a href="#contents">6. Structure polyhiérarchique</a></h4>
    <p>Cette option permet de créer une structure polyhiérarchique telle qu'une généalogie.<br />
    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.<br />
    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.<br />
    Par exemple, des lignes peuvent être :</p>
      <div class="codeblock"><ul>
        <li><code>Grand-Mère, Mère, Fille</code></li>
        <li><code>Grand-Père, Mère, Fils</code></li>
        <li><code>Grand-Mère 2, Père, Fille</code></li>
        <li><code>Grand-Père 2, Père, Fils</code></li>
        <li><code>            ,     , Fils 2</code></li>
        <li><code>            , Oncle</code></li>
        <li><code>Grand-Mère 2, Oncle</code></li>
        <li><code>Père, Fils 3</code></li>
      </ul></div>
  <h4 id="parents"><a href="#contents">7. Parents de premier niveau</a></h4>
    <p>Cette option permet d'importer un vocabulaire dans lequel les termes peuvent avoir plusieurs parents, comme dans une généalogie (polyhierarchy).<br />
    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 :</p>
      <div class="codeblock"><ul>
        <li><code>Fille, Mère, Père</code></li>
        <li><code>Fils, Mère, Père</code></li>
        <li><code>Fils 2, Père</code></li>
        <li><code>Fils 3, Père</code></li>
        <li><code>Mère, Grand-Mère, Grand-Père</code></li>
        <li><code>Père, Grand-Mère 2, Grand-Père 2</code></li>
        <li><code>Oncle, Grand-Mère 2, Grand-Père 2</code></li>
      </ul></div>
  <h4 id="children"><a href="#contents">8. Enfants de premier niveau</a></h4>
    <p>Cette option permet d'importer un vocabulaire dans lequel les termes peuvent avoir plusieurs parents, comme dans une généalogie (polyhierarchy).<br />
    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 :</p>
      <div class="codeblock"><ul>
        <li><code>Mère, Fille, Fils</code></li>
        <li><code>Père, Fille, Fils, Fils 2, Fils 3</code></li>
        <li><code>Grand-Mère, Mère</code></li>
        <li><code>Grand-Père, Mère</code></li>
        <li><code>Grand-Mère 2, Père, Oncle</code></li>
        <li><code>Grand-Père 2, Père, Oncle</code></li>
      </ul></div>
      Les trois exemples précédents correspondent au même vocabulaire lorsque l'option des termes existants est "mettre à jour et fusionner", ce qui est l'option recommandée.
  <h4 id="relations"><a href="#contents">9. Termes associés (termes connexes)</a></h4>
    <p>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'.<br />
    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 :</p>
      <div class="codeblock"><ul>
        <li><code>Baobab, Madagascar, Fantôme</code></li>
      </ul></div>
    Ainsi, &lt; <code>Baobab</code> &gt; renverra à &lt; <code>Madagascar</code> &gt; et à &lt; <code>Fantôme</code> &gt;. Une option permet de créer également les sous-relations, en l'occurrence entre &lt; <code>Madagascar</code> &gt; et &lt; <code>Fantôme</code> &gt; (voir ci-dessous).
  <h4 id="synonyms"><a href="#contents">10. Termes synonymes</a></h4>
    <p>La deuxième colonne et les suivantes seront importées comme termes synonymes du terme de la première colonne. Exemple :</p>
      <div class="codeblock"><ul>
        <li><code>"Royaume Uni", "Grande-Bretagne", "Angleterre"</code></li>
      </ul></div>
  <h4 id="fields"><a href="#contents">11. Définitions complètes de termes</a></h4>
    <p>Cette option permet d'importer des définitions complètes de termes.Le format est : nom, poids, description, liste des synonymes éventuels. Exemple :</p>
      <div class="codeblock"><ul>
        <li><code>Rue, 1, "Une voie urbaine", Avenue, Route</code></li>
      </ul></div>
    Un autre choix, <a href="#def_links"><code>Champs et liens des termes</code></a>, permet d'importer non seulement les définitions, mais également les liens.
  <h4 id="descriptions"><a href="#contents">12. Descriptions des termes</a></h4>
    <p>La seconde colonne sera importée comme description du terme défini dans la première colonne. Exemple :</p>
      <div class="codeblock"><ul>
        <li><code>"Baobab","Un arbre africain"</code></li>
      </ul></div>
  <h4 id="weights"><a href="#contents">13. Poids des termes</a></h4>
    <p>La seconde colonne sera importée comme poids du terme défini dans la première colonne. Exemple :</p>
      <div class="codeblock"><ul>
        <li><code>Baobab, 3</code></li>
      </ul></div>
  <h4 id="translation_name"><a href="#contents">14. Traduction du nom et de la description [Drupal 7 seulement]</a></h4>
  <h4 id="translate"><a href="#contents">3. Term translation</a></h4>
    <p>Ce format est disponible seulement si le sous-module "i18n Taxonomy" du module <a href="https://drupal.org/project/i18n">Internationalization</a> est activé. De plus le mode de traduction du vocabulaire doit être "Translate" ou "Localize".</p>
    <p><strong>Attention</strong> : Si vous avez une structure hiérarchique, vous devez importer celle-ci avant d'importer les traductions, pour chaque traduction si le mode de traduction est Translate.</p>
    <p>Format: Le terme est dans la première colonne, suivi par ses traductions. Si le mode est Localize, alors la description du terme et ses traductions peuvent être ajoutée.</p>
    <p>Pour un vocabulaire avec le mode Translate :</p>
    <div class="codeblock">
      <code>nom du terme/id, première traduction, deuxième traduction...</code>
    </div>
    <p>Pour un vocabulaire avec le mode Localize :</p>
    <div class="codeblock">
      <code>nom du terme/id, première traduction... , description, première traduction de la description...</code>
    </div>
    <p>Exemples :</p>
      <div class="codeblock"><ul>
        <li><code>foo, bar</code></li>
        <li><code>"United Kingdom", "Royaume-Uni", "Vereinigte Königreich"</code></li>
        <li><code>"Germany", "Allemagne", "A European country", "Un pays européen"</code> <em>[vocabulaire avec le mode Localize seulement]</em></li>
      </ul></div>
    <p><strong>Notes</strong></p>
    <ul>
      <li>Avec un vocabulaire dans le mode Translate, un terme avec un language indéfinie ne peut être traduit. En conséquence, il ne faut pas oublier de choisir une langue lorsque vous importez les termes.</li>
      <li>Avec un vocabulaire dans le mode Localize, seuls les termes avec un language indéfini peuvent être traduits. De ce fait, il convient de ne pas définir de language lors de l'import.</li>
      <li>Toutes les langues doivent avoir été activées dans les paramètres régionaux avant l'import.</li>
      <li><strong>Important</strong>: Si votre taxinomie est structurée, vous devez importer la structure <em>avant</em>. De plus, si le mode du vocabulaire est Translate, vous devez importer la structure pour chaque traduction avant. La procédure crée seulement des groupes de traduction, mais ne recrée pas la structure.</li>
      <li>Avec le mode Translate, les termes avec une langue indéfinie (<code>"und"</code>) ne peuvent pas être traduits.</li>
      <li>Avec le mode Localize, seuls les termes avec une langue indéfinie peuvent être traduits. La première langue doivent donc être "und" et la langue par défaut du site ne peut être utilisée.</li>
    </ul>

<p>La première colonne correspond au nom, la seconde à sa traduction et les deux suivantes à leur description éventuelle. Exemple :</p>
  <div class="codeblock"><ul>
    <li><code>foo, bar, description de foo, description de bar</code></li>
    <li><code>"Royaume-Uni", "United Kingdom"</code></li>
    <li><code>"Allemagne", "Germany", "Un pays européen", "A European country"</code></li>
  </ul></div>
<p>La langue du premier terme est "Neutre" et celle du second élement peut être sélectionné dans le troisième onglet.</p>
<p>Ce format est disponible seulement si le sous-module "i18n Taxonomy" du module <a href="https://drupal.org/project/i18n">Internationalization</a> est activé.</p>
  <h4 id="taxonomy_manager"><a href="#contents">15. Taxonomy manager</a></h4>
    <p>Ce format est utilisé par <a href="https://drupal.org/project/taxonomy_manager" title="Module Taxonomy manager">Taxonomy manager</a> 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:</p>
      <div class="codeblock"><ul>
        <li><code>, 1, "Île-de-France", "Main region"</code></li>
        <li><code>, 2, "Paris", "Capital of France", 1</code></li>
      </ul></div>
    <p>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.</p><br />
    <p>Lorsqu'un vocabulaire est importé dans un vocabulaire existant, seule l'option "ignorer et créer" peut être utilisée.</p>
  <h4 id="geotaxonomy"><a href="#contents">16. Geotaxonomy</a></h4>
    <p>Importe et exporte des termes de <a href="https://drupal.org/project/geotaxonomy"  title="Module Geotaxonomy">géotaxinomie</a>.</p>
    <p>Format</p>
    <div class="codeblock"><ul>
    <code>nom, latitude, longitude, parent, frontières haut, droite, bas, gauche</code>
    </ul></div>
    <p>Exemple</p>
    <div class="codeblock"><ul>
      <li><code>"Paris", 48.833, 2.333, "Île-de-France"</code></li>
      <li><code>"Île-de-France", 47, 2, "France"</code></li>
    </ul></div>
    <p>Seuls le nom, la latitude et la longitude sont nécessaires. Indiquer un parent est recommandé afin d'aboutir à une structure hiérarchique.</p>
    <p>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.</p>

<h3 id="import"><a href="#contents">2. Import</a></h3>
  <p>Taxonomy CSV permet d'importer des structures et des propriêtés de termes.</p>
  <h4 id="import_content"><a href="#contents">1. Que voulez-vous importer (contenu de la source) ?</a></h4>
    <p>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 <a href='#formats'>format</a>.</p>

  <h4 id="source"><a href="#contents">2. Où se trouvent les termes à importer ?</a></h4>
    <p>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.</p>
    <p>Les paramètres avancés permettent de choisir le séparateur et le délimiteur de champ.</p>

  <h4 id="file_format"><a href="#contents">3. Quel est le format de la source ?</a></h4>
    <p>L'import doit être formaté au format utf-8, de préférence sans la marque d'ordre des octets.</p>
    <p>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'.</p>
    <ul>
      <li>
        Le séparateur (virgule "<strong><code>,</code></strong>" par défaut, point-virgule "<strong><code>;</code></strong>" 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 &lt; <strong><code>¤</code></strong> &gt; :<br />
        <div class="codeblock"><ul>
          <li><code>terme 1¤Ce champ contient des virgules, un point-virgule (;), des guillemets (") et une tabulation, mais il est correctement importé.</code></li>
        </ul></div>
      </li>
      <li>
        Il est conseillé de protéger les termes par des caractères de délimitation tels que les guillemets (<strong><code>"</code></strong>), 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:<br />
        <div class="codeblock"><ul>
          <li><code>"terme 1","Ce champ contient une virgule, mais il sera correctement importé."</code></li>
        </ul></div>
        Vous pouvez choisir un caractère de délimitation personalisé dans les paramètres avancés du deuxième groupe d'options. Il ne peut avoir qu'un seul caractère ou être nul. Les guillemets (<strong><code>"</code></strong>) sont automatiquement pris en compte.
      </li>
      <li>
        Attention : quand vous exportez un vocabulaire, le séparateur et le délimiteur ne doivent pas être utilisés dans les définitions des termes, notamment dans les descriptions. L'export s'arrêtera en cas de problème.
      </li>
    </ul>

  <h4 id="destination"><a href="#contents">4. Quel est le vocabulaire de destination ?</a></h4>
    <p>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.</p>
    <p>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.</p>
    <ul>
      <li>D'abord, vérifier le fichier d'importation en choisissant l'option &lt; <em>Autocréer un nouveau vocabulaire</em> &gt;. Répéter cette étape tant qu'il y a des avertissements et des messages.</li>
      <li>Ensuite, vérifier la fusion entre les nouveaux termes et les termes existants avec l'option &lt; <em>Dupliquer un vocabulaire existant</em> &gt;. Ce choix crée une copie de votre vocabulaire cible et y importe les termes. Les attachements aux nœuds ne sont pas copiés.</li>
      <li>Enfin, vous pouvez importer votre fichier dans le bon vocabulaire avec l'option &lt; <em>Importer dans un vocabulaire existant</em> &gt;. Cela permet de conserver les liens entre les termes et les nœuds.</li>
    </ul>
    <p>Si vous voulez seulement créer un nouveau vocabulaire, le premier choix est suffisant, à moins que vous avez plusieurs fichiers pour un vocabulaire.</p>
    <p>Quand le contenu de la source est <code>Définitions complètes de termes et liens</code>, 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.</p>

  <h4 id="import_options"><a href="#contents">5. Quand un terme existe, que faire avec ?</a></h4>
    <p>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 :</p>
    <ul>
      <li>
        <h5>Mettre les termes à jour et fusionner avec l'existant</h5>
        <p>
          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.
        </p>
      </li>
      <li>
        <h5>Mettre les termes à jour et remplacer l'existant</h5>
        <p>
          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.
          <br />
          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.
        </p>
      </li>
      <li>
        <h5>Ignorer les termes existants et en créer de nouveaux</h5>
        <p>
          Conserve les termes existants tels qu'ils sont et crée un nouveau terme pour le terme de la première colonne.
          <br />
          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.
        </p>
      </li>
      <li>
        <h5>Ignorer tous les termes et en créer de nouveaux</h5>
        <p>
          Crée un nouveau terme pour chaque terme de la ligne.
        </p>
      </li>
    </ul>

  <h4 id="info_process"><a href="#contents">6. Infos sur le traitement et import de grosses taxinomies</a></h4>
    <p>Ce groupe d'options permet de choisir les informations affichés à la fin du traitement.</p>
    <p>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é -.<br />
    Ensuite, vous pouvez utiliser les paramètres avancés suivants (dans les groupes d'options).</p>
    <ul>
      <li>
        <h5>Réduire le niveau d'informations</h5>
        <p>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.</p>
      </li>
      <li>
        <h5>Indiquer manuellement le niveau hiérarchique du vocabulaire</h5>
        <p>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.</p>
      </li>
      <li>
        <h5>Désactiver la vérification des lignes</h5>
        <p>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%.</p>
    </li>
  </ul>
  Attention: la fonction "Lister les termes" par défaut de Drupal peut engendrer des erreurs de mémoire avec les taxinomies de taille importante. Dans ce cas, il est préférable d'utiliser un autre gestionnaire de taxinomies tel que <a href="https://drupal.org/project/taxonomy_manager" title="Module Taxonomy manager">Taxonomy manager</a>.

<h3 id="export"><a href="#contents">3. Export</a></h3>
  <p>Taxonomy CSV permet d'exporter les structures et les propriétés des termes d'un ou plusieurs vocabulaires.</p>
  <p>Choisissez simplement ce que vous voulez exporter (cf. <a href='#formats'>formats</a>) et comment exporter. Certains formats ne sont pas disponibles.</p>

<h3 id="import_api"><a href="#contents">4. Taxonomy csv import API</a></h3>
  <p>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 :</p>
  <div class="codeblock"><code>
    $csv_lines = '"Europe", "France", "Paris"';<br />
    $csv_lines .=  "\n". ',, "Lyon"';<br />
    $csv_lines .=  "\n". ',"Royaume-Uni", "Lyon"';<br />
    $csv_lines .=  "\n". ',"Portugal", "Lisbonne"';<br />
    $result = taxonomy_csv_import(<br />
      array(<br />
        'text'           => $csv_lines,<br />
        'import_format'  => 'tree_structure',<br />
        'existing_items' => 'update_replace',<br />
    ));<br />
  </code></div>
  <p>Ou comme cela (import au niveau d'une ligne) :</p>
  <div class="codeblock"><code>
    $result = taxonomy_csv_line_import(<br />
      array("Europe", "France", "Paris"),<br />
      array(<br />
        'import_format' => 'tree_structure',<br />
        'vocabulary_id' => 2,<br />
        'existing_items' => 'update_replace',<br />
    ));<br />
  </code></div>
  <p>Les formats d'importation sont présentés dans les commentaires et <a href='#formats'>ci-dessus</a>. Certains peuvent être indisponibles.</p>
  <p>Des infos complémentaires sont disponibles dans <a href="http://drupalcode.org/viewvc/drupal/contributions/modules/taxonomy_csv/TECHINFO.txt?view=co">TECHINFO.txt</a>.</p>

<h3 id="advanced_options"><a href="#contents">5. Paramètres avancés et conseils</a></h3>
  <h4 id="permissions"><a href="#contents">1. Permissions</a></h4>
    <p>Pour importer/exporter des termes, l'utilisateur doit disposer des droits 'Importer des taxinomies par CSV' et 'Exporter des taxinomies par CSV'.<br />
    De plus, l'utilisateur doit disposer des permissions générales d'administration des'<a href="?q=admin/user/permissions#module-taxonomy" title="configure taxonomy permissions">taxinomies (Drupal 6)</a> ou <a href="?q=admin/people/permissions#module-taxonomy" title="configure taxonomy permissions">taxinomies (Drupal 7)</a>. Ces droits d'accès sont souvent associés aux permissions pour accéder aux pages d'administration.</p>

  <h4 id="other_hints"><a href="#contents">2. Autres conseils</a></h4>
    <ul>
      <li>
        Il est conseillé d'utiliser un fichier encodé au format utf8 pour éviter les problèmes avec les termes non-ASCII.
      </li>
      <li>
        Si vous voulez importer à la fois des termes enfants, des descriptions, des poids, des termes synonymes et connexes et une structure hiérarchique, vous devez commencer par le fichier contenant la structure hiérarchique des parents et des enfants. Ainsi, vous devez d'abord importer le fichier des termes enfants en choisissant l'option <em>Vocabulaire plat</em>, <em>Structure</em>, <em>Parents</em> ou <em>Enfants</em>. Ensuite, vous pouvez importer les autres fichiers en choisissant l'option adéquate et l'une ou l'autre option <em>Mettre à jour...</em>
      </li>
      <li>
        Attention : si 1) le choix de la source <strong>n'est pas</strong> <em>"Ignorer"</em> les colonnes supplémentaires, 2) le fichier ou une ligne dans le fichier contient seulement une colonne et 3) vous choisissez <em>"Mettre à jour et remplacer"</em>, le processus d'importation deviendra un processus de suppression des éléments correspondants (les termes de la première colonne sont toujours conservés ou importés).
      </li>
      <li>
        Des problèmes de mémoire ou de compatibilité ont été signalés pour certains modules tels que <em>Pathauto</em>, <em>taxonomy_vtn</em> and <em>taxonomynode</em> (see <a href="https://drupal.org/node/495548">#495548</a>, <a href="https://drupal.org/node/447852">#447852</a> et <a href="https://drupal.org/node/540916">#540916</a>). Il est conseillé d'augmenter temporairement la mémoire du serveur et de php (aucun problème n'a été signalé avec 256 Mo) ou de désactiver ces modules manuellement (les paramètres ne sont pas perdus lors d'une désactivation - et non une désinstallation -). Après l'importation, vous pouvez réduire la mémoire et réactiver les modules.
      </li>
    </ul>
<p>Un autre module Drupal permet également l'importation d'une taxinomie par le biais d'un fichier CSV, malgré son nom : <a href="https://drupal.org/project/taxonomy_xml" title="Module Taxonomy XML">taxonomy XML</a>. 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 : <code>terme, type de lien (relation, description, synonyme...), élément</code>, ou, pour les specialistes, <code>sujet, prédicat, objet</code>. Les champs supplémentaires sont traités comme le troisième. Pour Drupal 4.7 et Drupal 5, <a href="https://drupal.org/project/taxonomy_batch_operations" title="Module Taxonomy batch operations">taxonomy batch operations</a> peut également être utilisé. Vous pouvez donc choisir le module correspondant le mieux à vos besoins.</p>
<p>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.</p>
<br />
</body>
</html>