Node Import (Drupalmodule)
Uit DeVliegendeWiki
Zie ook Importeren van artikelgegevens in Übercart 1.x
Node import is een module om verschillende soorten content (nodes, gebruikers, etc.) te importeren in een Drupalinstallatie. Het is beschikbaar voor Drupal 4.7, 5, 6 en 7. De versie voor Drupal 6 bereikte pas in 2011 productiekwaliteit. Voor ons was dit een van de belangrijkste redenen om te wachten met de overstap naar Drupal 6. Voor Drupal 7 bestaat voor dit doel daarnaast de Feeds-module.
Wat je kunt importeren:
- Nodes: blog, books, comment, ruwe node-gegevens (titel, body, etc.), path, taxonomieietermen, uploads;
- Gebruikers;
- Vocabulaires;
- Specifieke CCK-velden: Date, Email, FileField, ImageField, Link, Node reference, Number, Text en User reference;
- Alternatieve contenttypen waar een contrib of add-on voor Node Import voor is gemaakt: Übercart en Location. Voor Drupal 6 is deze contrib opgenomen in de module zelf.
Handige kolomnamen
Het is aan te bevelen om op de eerste rij van een spreadsheet met te importeren gegevens, de namen van de kolommen te vermelden.
Importeren wordt een stuk gemakkelijker als de kolommen exact dezelfde namen hebben als de corresponderende velden in Node Import. Enkele van deze velden:
- Name - Artikelnaam, dus de aanhef die bezoekers zien. Liefst een leesbare en aantrekkelijke naam of zin
- Image - ?
- Vocabularies - Onder dit kopje verschijnen vermoedelijk de namen van de verschillende taxonomieën die beschikbaar zijn
- Description
- SKU
- Sell price
- Shippable
- URL path settings
Geen tekstscheidingsteken
Importeren lijkt het beste te gaan als er geen tekens worden gebruikt om strings aan te geven. Oa. het veld shippable wordt daardoor onleesbaar. Daarnaast snap ik toch al niet waarom je dergelijke tekens nodig hebt. Het veldscheidingsteken is voldoende.
Tab als veldscheidingsteken
Gebruik tab als veldscheidingsteken, want dat komt (tot op heden) nooit voor binnen velden. In tegenstelling tot bv. dubbele aanhalingstekens of enkele aanhalingstekens, want dat komt wel degelijk voor, al is het maar om inches aan te geven in maten.
Valuta als numeriek veld
Een euroteken is geen probleem, maar gedoe met spaties rondom het bedrag, wel. Daarnaast kan het voorkomen dat geldbedragen onder water meer decimalen kennen, en dat kan afrondfouten geven.
Beste oplossing tot op heden: In de database waar de productgegevens uit afkomstig zijn, prijzen niet als valuta opslaan, maar als enkele-precisie-getallen, en daar het aantal decimalen bijwerken met functie Round (OpenOffice/LibreOffice/Microsoft Access).
Exporteren vanuit Microsoft Access 2003
Afbeeldingen mee-importeren (Drupal 5)
Zie artikel Afbeeldingen mee-importeren (Drupal)
Taxonomische informatie meeïmporteren
Zie ook Taxonomieën (algemeen) en Taxonomy CSV import/export (Drupalmodule)
In juni 2011 hadden we een situatie waarin we in Übercart zo'n 700 artikelen wilde invoeren. De taxonomie die daar bij hoorde bevatte maar liefst 23.000 termen. Die moesten dus automatisch geïmporteerd worden. Aanpak:
- Vanuit de aangeleverde artikelgegevens twee aparte overzichten gegenereerd: taxonomie, en opgeschoonde artikelgegevens. Dit is trouwens erg veel werk, en nog lastig werk ook. Het zou wellicht interessant zijn om te zien of dit (deels) te automatiseren is. Zie elders in dit artikel
- Taxonomie geïmporteerd middels de Taxonomy_csv-module (Drupal 5, mede naar aanleiding van [1]. Status voor Drupal 6 onbekend);
- Artikelen geïmporteerd middels Node Import.
Voorbeelden:
Met één compleet pad
Hier is een succesvol voorbeeld van een importbestand waarbij een artikel slechts via één pad bereikbaar is:
ProductSKU ProductName Shippabe SellPrice Description Taxonomie Test Test 1 4,19 Omschrijving Afmetingen|8 x 5 x 13,5
Met één eindelement
Succesvol voorbeeld met een eindelement en spaties in de naam van de taxon [2]:
ProductSKU ProductName Shippabe SellPrice Description Taxonomie Test Test 1 4,19 Omschrijving 8 x 5 x 13,5
Geen aanhalingstekens of komma's
Geen aanhalingstekens of komma's gebruiken [3]. Dit werkt dus niet:
ProductSKU ProductName Shippabe SellPrice Description Taxonomie Test Test 1 4,19 Omschrijving "8 x 5 x 13,5"
Double pipe + eindtermen
Dit werkt [4]:
ProductSKU ProductName Shippabe SellPrice Description Taxonomie Test Test 1 4,19 Omschrijving 8 x 5 x 13,5||FSC1.6
Omdat je alleen de namen van de elementen op het laatste taxonomische niveau specificeert, verschijnen ook alleen die termen als tags op de productpagina, en dat is waarschijnlijk wel prettig.
Alleen eindtermen specificeren kan problematisch zijn als verschillende paden bij gelijke eindtermen belanden. Bv.:
Auto's > Ferrari's > Rood Auto's > Rode Ster Tractors > Rood
Maar ook daar is een oplossing voor:
Complete paden
In dit geval wordt een pad gegeven (Afmetingen > 8 x 5 x 13,5) en een eindterm. Dit werkt.
ProductSKU ProductName Shippabe SellPrice Description Taxonomie Test02 Test02 1 4,19 Omschrijving Afmetingen|8 x 5 x 13,5||FSC1.6
Uitsluitend complete paden werkt ook:
ProductSKU ProductName Shippabe SellPrice Description Taxonomie Test03 Test03 1 4,19 Omschrijving Afmetingen|8 x 5 x 13,5||Multitool|FEIN|FSC1.6
Voorbeeld
In januari 2012 heb ik 89 artikelen geïmporteerd. De bijbehorende taxonomie was al eerder geïmporteerd.
Bronnen
- http://drupal.org/node/198723 - Bevat een succesvol voorbeeld
- http://drupal.org/node/162474 - Er is hoop
- Module Taxonomy CSV import/export kan handig zijn
- http://tomandcrystal.com/creating_products_in_ubercart
- http://drupal.org/node/437834
Taxonomieën automatisch genereren
Het is veel werk om van een aangeleverde Excel-sheet met artikelgegevens een werkende vocabulaire te genereren. Hiervoor moet je twee overzichten genereren:
- Artikelgegevens inclusief bijbehorende paden;
- Apart overzicht met alle paden.
Terwijl alle informatie al voorhanden is in de aangeleverde artikelgegevens. Dit roept om automatisering. Ideeën:
- De gegevens die in de aangeleverde tabel samengevoegd zijn in kolommen, weer splitsen;
- Paden defineren. Dat is waarschijnlijk deels handwerk;
- Automatisch genereren van een vocabulaire aan de hand van de paden;
- Misschien kan dit als een LibreOffice- of Drupalmodule.
Bestaande artikelen overschrijven
Het zou mogelijk moeten zijn om bestaande artikelen te overschrijven:
Vragen & antwoorden
Beantwoord
- Vaak lijkt het dat Node Import de dubbele aanhalingstekens rondom velden niet verwijdert. Dit geeft storingen, bv. voor waardes in de kolom shippable. Moet je er voor zorgen dat er totaal geen dubbele aanhalingstekens worden gebruikt, of alleen voor 'tekstvelden'? --> Geen teken rondom velden gebruiken
- Hoe importeer je ook al weer afbeeldingen mee? --> Zie artikel Node Importmodule
- Moet je per se eerst een taxonomie defineren? Kan die niet gewoon on the fly vastgesteld worden ahv. de geïmporteerde artikelen? --> Ja, dat moet apart. Zie elders in dit artikel.
Open
Bronnen
- http://drupal.org/project/node_import - Projectpagina
- http://drupal.org/documentation/modules/node_import - Documentatie: Maar drie pagina's
- http://www.journeymm.com/blogs/drupal/importing-and-exporting-nodes-taxonomy-and-cck-fields - Uitgewerkt voorbeeld
