Inhalte importieren
Diese Seite richtet sich an Entwickler, die eine Website mit Inhalten von anderswo füllen müssen: aus einer Tabelle, einem anderen CMS, einer alten Exponential-Website, einem Ordner mit Fotos. Verwenden Sie zuerst die vorhandenen Werkzeuge und schreiben Sie ein Skript nur für das, was sie nicht können. Jedes Werkzeug unten ist ausführlich unter Import- und Exportwerkzeuge von Exponential beschrieben; diese Seite hilft Ihnen bei der Wahl.
Inhalt
- Welches Werkzeug für welche Quelle
- xrowextract: der wichtigste Importer
- ezcsvimport: der einfache Importer des Kernels
- Pakete: zwischen Exponential-Installationen
- Medien, Dokumente und Feeds
- Layouts
- Über HTTP
- Ein eigenes Skript
- Regeln für jeden Import
Welches Werkzeug für welche Quelle
| Quelle | Erste Wahl | Hinweise |
|---|---|---|
| Eine Tabelle oder CSV-Datei einer Art von Element | xrowextract mit --map | standardmäßig ein Probelauf |
| Ein Export eines anderen CMS (WordPress, Drupal, Joomla) | in CSV, XML oder JSON umwandeln, dann xrowextract | kein Werkzeug liest diese Exporte direkt |
| Eine andere Exponential-Website | Pakete oder eine Kopie der Datenbank, wenn die ganze Website umzieht | |
| Ein Ordner mit Bildern und Dateien | der ZIP-Importer der Upload-Seite | behält auf Wunsch die Ordnerstruktur |
| Office-Dokumente | ezodf | braucht LibreOffice oder OpenOffice auf dem Server |
| Ein News-Feed während eines Übergangs | RSS-Import | nur die neuesten Elemente des Feeds |
| Layouts und ihre Regeln | exp:layouts export und import | zwischen Exponential-Installationen |
| Ein System, das nur über HTTP erreichbar ist | ein eigenes Skript mit der Kernel-API |
Die vollständige Tabelle: Welches Werkzeug für welche Aufgabe.
xrowextract: der wichtigste Importer
xrowextract (se7enxweb/xrowextract, von der composer.json im Hauptverzeichnis verlangt) liest CSV, XML oder JSON
und legt Objekte einer Klasse unter einem übergeordneten Knoten an oder aktualisiert sie. Ohne --apply schreibt es
nichts, es kann vorhandene Objekte für Aktualisierungen zuordnen, ordnet fremde Spalten Attributen zu, verarbeitet
große Dateien im Hintergrund und setzt nach einer Unterbrechung fort:
./console ext:xrowextract:import --file=var/tmp/import/events.csv --class=exp_event --parent=<node id> \
--map=title=title,start=start_date
./console ext:xrowextract:import --file=var/tmp/import/events.csv --class=exp_event --parent=<node id> \
--map=title=title,start=start_date --applyAm einfachsten treffen Sie das Format, indem Sie ein Beispielobjekt der Zielklasse mit xrowextract exportieren und seine Spalten übernehmen (xrowextract, Importieren mit xrowextract).
ezcsvimport: der einfache Importer des Kernels
./console exp:ezcsvimport --class=exp_event --creator=<user object id> --storage-dir=var/tmp/import/files <node id> var/tmp/import/events.csvDie Datei verwendet ; als Trennzeichen und hat keine Kopfzeile: Spalte n geht über fromString() an das n-te
Attribut der Klasse. Es legt nur an, ein zweiter Lauf erzeugt also Duplikate; verwenden Sie es für ein erstes Laden
einer einfachen Klasse.
Pakete: zwischen Exponential-Installationen
Pakete (.ezpkg) übertragen Klassen und Inhaltsobjekte mit ihren Dateien von einer Exponential-Installation in eine
andere und sind der Weg, Klassen mit Ihrem Projekt auszuliefern (Pakete,
Seitenpakete und Installer). Sie sind kein Format, das andere Systeme erzeugen.
Medien, Dokumente und Feeds
- ZIP-Importer (
ezmultiupload): Jede Datei wird je nach Typ zu einem Bild- oder Dateiobjekt; Keep the folder structure legt Ordner an. Die Grenzen stehen inezmultiupload.ini [ZipSettings]. Bilder, deren Klasse einen Alternativtext verlangt, werden übersprungen, weil ein ZIP keinen hat (Medien und Uploads). - Office-Dokumente (
ezodf): Writer-Dokumente zu Inhaltsobjekten und zurück. - RSS-Import (Setup > RSS): Neue Elemente eines Feeds werden zu Objekten einer gewählten Klasse; der
Cronjob
rssimport.phpführt ihn aus (RSS-Feeds).
Layouts
./console exp:layouts export --all --output=var/tmp/layouts.zip
./console exp:layouts import var/tmp/layouts.zip --dry-runLayouts, gemeinsame Layouts und ihre Zuordnungsregeln werden als eine ZIP-Datei übertragen (Layouts exportieren und importieren).
Über HTTP
Die REST-Schnittstelle kann ab v2 Knoten anlegen, aktualisieren und entfernen (eine Aktualisierung ist eine neue
Version; ezprestapi 1.2.9), und expservices bietet die Funktionen der Administration als HTTP-Dienste an
(Die REST-API, Entfernte Dienste und Apps). Verwenden Sie
sie, wenn der Importer auf einem anderen Rechner laufen muss; bei großen Importen ist ein Skript auf dem Server
schneller.
Ein eigenes Skript
Passt kein Werkzeug, schreiben Sie ein Skript mit der Kernel-API: Lesen Sie die Quelle, ordnen Sie jedes Element zu und
legen Sie es dann über eZContentFunctions mit einer Remote-ID je Element an oder aktualisieren Sie es, damit Läufe
wiederholt werden können (Inhalte aus PHP und das Gerüst unter
Ein eigenes Importskript).
Seit Exponential 6.0.15 ist expContentWriter aus dem Kernel oft der kürzere Weg: Die Klasse nimmt Rich Text als HTML
und Dateien als öffentliche Webadressen an, also in der Form, in der die meisten Quellen sie haben, und antwortet für
jedes Element, was sie getan hat. Die REST-API schreibt über dieselbe Klasse. Siehe
Inhalte aus PHP schreiben mit expContentWriter.
Regeln für jeden Import
- Zuerst das Modell. Legen Sie die Klassen und den Ordnerbaum vor dem Import an (Ein Inhaltsmodell entwerfen).
- Remote-IDs aus der Quelle (
wp-1234,crm-42) an jedem Objekt: Aktualisierungen statt Duplikaten, und Relationen lassen sich in einem zweiten Durchgang auflösen. - Zuerst Medien, dann Behälter in der Reihenfolge der übergeordneten Knoten, dann Elemente, dann Relationen und innere Links.
- Probelauf, dann eine Kopie, dann live. Halten Sie die Quelldateien außerhalb des Web-Roots (
var/tmp/ist auf einem Entwicklungsrechner in Ordnung). - Danach: Bauen Sie den Suchindex neu auf (
php bin/php/updatesearchindex.php --clean), prüfen Sie die URL-Aliase, leeren Sie die Inhalts-Caches (Suche, URL-Aliase und Routing). - Keine personenbezogenen Daten, die Sie nicht brauchen. Importieren Sie Benutzerkonten nur mit Rechtsgrundlage,
und testen Sie mit Adressen unter
example.invalid.
Verwandte Seiten
- Inhalte auf Exponential abbilden
- Checkliste für die Migration
- Das richtige Import- oder Exportwerkzeug wählen
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.