Seblod Importer (Plug-in)

Autor: Christian Hamberger, Kategorie: Seblod, Erstellt am: 10.11.2015, Bearbeitet: 10.11.2015, Aufrufe: 3541

Mithilfe des kostenlosen Plugins SEBLOD Importer, ist es möglich CSV-Dateien direkt zu importieren. Als Alternative gibt es natürlich auch die Möglichkeit direkt in die MySQL Datenbank zu importieren.

Grundwissen

  • Vorab UNBEDINGT Import so lange in einer Testumgebung durchspielen bis er einwandfrei klappt. In der Regel stößt man noch auf viele Probleme bis es reibungslos funktioniert.
  • Die Feldnamen (Kopfzeile in der CSV-Datei) müssen exakt den Spaltenname der SQL-Tabelle entsprechen (Ausnahme: Bei Custom Storage und Speicherung in einem geteitlen Feld z. B. introtext den Feldnamen verwenden)
  • Vorhandene Datensätze können mit Feldinhalten ergänzt/upgedatet werden (ID bzw. Artikel-ID der Joomla Contentabelle stellt die Basis des Abgleiches dar)
  • Neue Felder werden beim Import hinzugefügt, falls kein übereinstimmender Feldname vorhanden ist
  • Generell lassen sich folgenden Feldarten importieren
    • Joomla Core-Felder aus der SQL-Tabelle "content" title, id etc. (Ausnahme:  Wird ein das Seblod "Custom Storeage" verwendet, so innerhalb eines seblodeigenen Tags innerhalb des Feldes importiert)
    • Eigene erstellte globale Felder oder Felder die einen Content-Type zugeordnet sind mit Speicherziel in einer eigenen Spalte
    • Felder mit Custom Storage im Sammelfeldern z. B. introtext und in eigenen Spalten
    • NICHT import werden können FieldX und GroupX Felder 
  • Folgende Felder sollte eine CSV-Datei min. enthalten (Empfehlung)
    • id (Hinweis: Es auch möglich ohne ID zu Importieren. Indiesem Fall wird die ID autoamtisch vergeben. Anfangswert ist die höchste ID + 1 in der Joomla Contenttabelle)
    • title (Hinweis: Aus dem "title" wir der "alias" generiert. Zwei identische Artikeltitel führen daher zum gleichen Alias, was nicht erlaubt ist und zu einer Fehlermeldung führt. Daher ist zu empfehlen vorab das Titel-Feld auf Duplikate zu überprüfen) 
  • "Custom Fields" müssten den "machine name" entsprechen (db column name)
  • Seperatoren
    • Mögliche Seperatoren "," ";" oder "|"
    • Textfelder sollte mit Anführungszeichen Maskiert werden. Im Zweifel einfach alles mit "" inkl. Titelzeile maskieren, das funktioniert auch.
  • Codierung & Zeilenbruch (Häufige Ursache von Problemen)
    • Zeichen in UTF-8 codiert (UTF-8 mit BOM oder ohne BOM ist egal)
    • Zeilenbruch muss "Windows CLRF" sein

Feldverhalten 

Feld  Format  Feldfüllung, bei fehlender Angabe  Notiz
 id Zahl  Fortlaufenden Nummer   
title Text  Zeitstempel von Importzeit  Basis für Alias
alias Text Generiert sich aus title Feld und wandelt
diese Zeichen in eine websichere Zeichenkette um
 
created yyyy-mm-dd hh:mm:ss 0000-00-00 00:00:00   
modified yyyy-mm-dd hh:mm:ss 0000-00-00 00:00:00   
checked_out_time yyyy-mm-dd hh:mm:ss 0000-00-00 00:00:00   
publish_up yyyy-mm-dd hh:mm:ss 0000-00-00 00:00:00   
publish_down yyyy-mm-dd hh:mm:ss 0000-00-00 00:00:00   

Vorbereitungsarbeiten

  1. Kategorie-ID (in CSV) an die vorhandenen Kategorien anpassen bzw. kontrollieren
  2. Nur IDs importieren, die im neuem System noch nie verwendet wurden, sonst wird Artikel überschrieben (außer es ist beabsichtigt)
  3. Kontrolle ob Pflichtfelder vorhanden sind (CSV) und ob die Feldnamen dem des Content-Types entspricht
  4. Entsprechend die Standart-Datums und Zeitfelder dem vorgegebenen Format?
  5. Welcher Separator wird verwendet (Mögliche Seperatoren "," ";" oder "|")

CSV Beispiele

1. Beispiel

id,title,alias,state,custom_field_1
100,Titel A,title-a-seo-url,custom content
102,Titel B,title-b,custom content

2. Beispiel

"id","title"
"4000","Schütze dein Revier"

3. Beispiel (Empfehlung)

"id";"title";"alias";"state";"custom_field_1"
"100";"Titel A";"title-a-seo-url";"custom content"
"102";"Titel B";"title-b";"custom content"

Importieren

Folgende Einstellungen sollten gesetzt sein:

  • Passenden Objektyp und Contenttyp auswählen
  • Korrekten Seperator einstellen
  • Force UTF-8 "Nein" (da CSV bereits in UTF-8 und dies dies Sonderzeichen verändert)
  • Nach Import > Meldung bzw. Logfile checken
  • SQL-Datenbank überprüfen z. B. könnte bei falscher Feldbenennung eine neue Spalte angelegt worden sein.

Sonderfall: GroupX und FieldX

Generell verwendet Seblod ein eigenes Datenformat, wenn als Storageoption "Custom" angegeben ist. In der Regel wird dieses im Introtextfeldes des Artikels abgespeichern, außer man gibt ein anderen Ziel als die Spalte "introtext" (Tabelle _content) an. Zumeist sind im Introtext mehrere Felder auf einmal gespeichert. Insbesondere findet hier standartmäßig die Inhaltsspeicherung von FieldX und GroupX-Feldern statt.

Über den Importer können GroupX und FieldX nicht importiert werden. Der einfachste ist sich den Aufbau der Custom-Feld-Logik zu erschließen und die Werte dann via MySQL zu importieren/implementieren. Ich habe einen Workaround mit dem Importer versucht, der jedoch nicht funktioniert hat.

Troubleshooting

  • Importfehlermeldung
    • Keine doppelten ID`s in CSV
    • Keine identitschen Titel in "title"-Feld (alias Doppelung führt zu Fehlermeldung)
    • Inkorrekte Spaltenzuweisung
    • Es wird keine "Windows CLRF" Zeilenumbruch verwendet

  • Weitere Probleme
    • Sonderzeichen sowie ü,ä etc. werden nicht korrekt in die MySQL Datenbank importiert
      >>> Unbedingt CSV in UTF-8 verwenden und beim Seblod Importer bei "Force UTF-8" auf "Nein" stellen
    • Importproblem kann nicht idetifiziert werden
      >>> In diesem Fall empfielt sich sicht ein Stück für Stück Import. Beispielsweise sollten zuerst die Felder "id" und "title" importiert werden anschließend weitere mit abgleich auf die ID im Update-Verfahren. Zum Beispiel "id" "state" "created"
Christian Hamberger
10.11.2015
Seblod
10.11.2015
3541
Hinweis

Die Umsetzung der hier gemachten Lösungen und Vorschläge geschehen immer auf eigener Gefahr.