Productimport uit tekstbestanden
Het handmatig toevoegen van producten is acceptabel als je winkel slechts enkele artikelen bevat. Maar wat gebeurt er als je honderden of zelfs duizenden producten hebt? Deze methode kost veel tijd en is niet erg efficiënt voor grote winkels. Bedenk dat als je 10.000 producten hebt en het toevoegen van één product ongeveer vijf minuten kost, je ongeveer vijf maanden werk nodig hebt om de procedure te voltooien. Bovendien kun je te maken krijgen met problemen zoals trage internetverbindingen of invoerfouten. Daarom is de beste oplossing het importeren van producten uit een tekstbestand. Je kunt producten importeren uit drie bestandstypen: door komma’s gescheiden waarden (CSV), door puntkomma’s gescheiden waarden (SSV), of tab-gescheiden waarden (TSV). Een CSV-bestand bevat de inhoud van een tabel of lijst. Het formaat van een CSV-bestand bestaat uit regels met velden die door komma’s zijn gescheiden. Bijvoorbeeld, als je de volgende tabel hebt:
Hier is de CSV-weergave van deze tabel:
"Name","Category","SKU","Price"
"iPod Nano","iPods",100001,"199.99"
"iPod Classic","iPods",100002,"249.99"
"iPod Shuffle","iPods",100003,"79.99"
SSV-bestanden vervangen de komma door een puntkomma, en in TSV-bestanden worden velden gescheiden door tabs. We gebruiken CSV-bestanden in dit voorbeeld, maar de procedure is hetzelfde voor andere bestandstypen.
Voordat je CSV-bestanden kunt importeren in Ubercart, moet je eerst de module Node import installeren. Volg hiervoor deze stappen:
1. Ga naar http://drupal.org/project/node_import en download de module Node import. Kies de nieuwste versie voor Drupal 6.x. Je moet ook de afhankelijkheden downloaden: Date en Advanced help. Download de module Date API van http://drupal.org/project/date en daarna de module Advanced help van http://drupal.org/project/advanced_help.
2. Pak deze bestanden uit en kopieer ze naar de map sites/all/modules
.
3. Ga naar de modulepagina en activeer Date, Advanced help en Node import.
4. De importpagina bevindt zich onder Beheren | Inhoudsbeheer | Inhoud importeren.
Deze pagina heeft drie tabbladen:
- List — toont alle gemaakte importen en de geüploade bestanden. Je hebt nog niets aangemaakt, dus de lijst is leeg.
- New import — opent de nieuwe importwizard. We komen hier later op terug.
- Settings — opent de configuratiepagina.
Voordat je begint met importeren, klik op Settings om de configuratiepagina te bekijken.
- Import directory: hier kun je CSV-bestanden uploaden via FTP of de importwizard.
- Als je bestanden via FTP wilt uploaden, vink dan Allow FTP uploads aan.
- Om veiligheidsredenen moet je, als je FTP-upload toestaat, ook de bestandsbeheerder opgeven. Anders kunnen geüploade bestanden toegankelijk zijn voor iedereen, zelfs voor anonieme gebruikers.
- Allowed extensions: hier geef je op welke bestandsextensies zijn toegestaan. Alle andere worden genegeerd.
Voor je winkel hoef je hier niets te wijzigen. Klik gewoon op “Configuratie opslaan” om terug te keren naar de vorige pagina. Voordat we de importwizard gaan gebruiken, bekijken we eerst de juiste structuur van CSV-bestanden en hoe je deze kunt aanmaken.
De eenvoudigste manier om een CSV-bestand te maken is door een spreadsheet-editor te gebruiken, zoals Microsoft Excel of OpenOffice. Al deze programma’s slaan bestanden op in hun eigen formaat, maar kunnen eenvoudig exporteren naar CSV. Het invoeren van gegevens in een tabel is veel sneller dan direct werken in Ubercart. Het grootste voordeel is dat als je al een database in een ander programma hebt, je die kunt converteren naar een CSV-bestand en importeren in Ubercart.
In een spreadsheet stelt elke rij een product voor en elke kolom een producteigenschap. Herinner je hoe we een nieuw product aanmaakten? Voor elk veld in dat formulier moet je een aparte kolom maken. Niet alle velden zijn nodig voor jouw winkel, dus je gebruikt alleen de belangrijkste. Als voorbeeld heb ik de volgende tabel gemaakt:
Sla de tabel op in CSV-formaat.
De tabel heeft zes kolommen: SKU, naam, beschrijving, categorie, prijs en afbeelding. Je kunt een vergelijkbare structuur aanmaken in jouw toepassing en het bestand opslaan als CSV. De laatste stap is het uploaden van productafbeeldingen naar de server. Gebruik een FTP-programma om alle bestanden te uploaden naar sites/default/files
. Zoals te zien is in de tabel gebruiken we een nieuwe map “import” om deze afbeeldingen te scheiden van andere bestanden op de site. Standaard worden afbeeldingen opgeslagen in de map sites/default/files
. Als je bijvoorbeeld je afbeeldingen toevoegt aan de map “products”, moet je het pad in de kolom aanpassen, bijvoorbeeld: /products/036.jpg
.
Na het opslaan van het CSV-bestand en het uploaden van de afbeeldingen, ga terug naar Ubercart en klik op “New import”. De import start nu.
De introductiepagina toont informatie over de procedure en de belangrijkste knoppen. Lees deze door en klik op “Volgende”.
1. Op de eerste pagina van de wizard moet je kiezen welk inhoudstype je wilt importeren op je site. Kies Product en klik op “Volgende”.
2. Op de tweede pagina moet je het CSV-bestand selecteren en uploaden. Als je al bestanden hebt geüpload, verschijnen ze in een lijst. Kies het gewenste bestand. Om een nieuw bestand te uploaden, klik op “Bladeren”, selecteer het bestand en klik op “Uploaden”. Nadat het bestand is geüpload, klik je op “Volgende”.
3. Op de derde pagina kun je enkele basisinstellingen configureren. Eerst geef je aan of de eerste rij kolomnamen bevat. In dit geval wel, dus laat dit aangevinkt. Kies vervolgens het bestandsformaat — CSV. Onderaan de pagina zie je voorbeeldgegevens uit de eerste vier regels van het bestand.
Let op: Microsoft Excel slaat CSV’s meestal op met puntkomma’s, OpenOffice met komma’s.
Klik op “Volgende”.
Als er een foutmelding verschijnt zoals:
Fatal error: Call to undefined function uc_product_node_is_product() in Z:\home\ubercart\www\sites\all\modules\node_import-6.x-1.0-rc4\node_import\supported\ubercart\uc_product.inc on line 15
Ga dan naar het Ubercart-forum voor de oplossing:
http://www.ubercart.org/forum/bug_reports/12843/csv_import_step_3
In regel 15 van het bestand node_import\supported\ubercart\uc_product.inc:
vervang uc_product_node_is_product($node_type)
door uc_product_is_product($node_type)
.
4. Op de vierde pagina moet je de kolommen van het bestand koppelen aan de productvelden. Als je de kopteksten hebt gebruikt zoals in het voorbeeld, zal de module dit automatisch doen. Controleer of alle velden correct overeenkomen. Corrigeer waar nodig via het vervolgkeuzemenu. Klik op “Volgende”.
5. Op de vijfde pagina kun je enkele extra instellingen aanpassen, maar dit is niet verplicht. Klik op “Volgende”.
6. Op de zesde pagina staan standaardwaarden voor velden die niet in het CSV-bestand zijn gedefinieerd. Selecteer zo nodig standaardwaarden voor ontbrekende productkenmerken en klik op “Volgende”.
7. Op de zevende pagina kun je het importoverzicht bekijken. Controleer zorgvuldig op eventuele fouten. Klik op “Volgende” als alles correct is.
Let op mogelijke problemen met tekencodering. CSV-bestanden moeten in UTF-8 zijn gecodeerd. MS Excel slaat standaard op in ANSI, wat rare tekens kan veroorzaken:
Als alles goed is, kun je doorgaan met de import.
8. Op de achtste (en laatste) pagina vóór de import zie je de hoofdinstellingen en voorbeeldgegevens. Klik op “Start import” om door te gaan. Na voltooiing verschijnt een rapport met geïmporteerde rijen en eventuele fouten. Als je het CSV-bestand niet meer nodig hebt, klik op “Verwijderen” om het van de server te wissen.
Na de productimport kun je het foutenrapport bekijken:
Hoera! Tijdens het importeren treden vaak fouten op, maar maak je geen zorgen — dat overkomt veel gebruikers. Vaak zijn oplossingen te vinden via Google of in de Ubercart-forums.
En nu, direct naar de catalogus — voilà!