Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Inhaltsklassen auf externe Daten abbilden

Datensätze eines anderen Systems in Inhaltsobjekte verwandeln - die Klasse entwerfen, Datentypen wählen, die Textformate von fromString() der gängigen Datentypen, Bilder und Dateien aus einem DAM, Beziehungen, Sprachen…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/integrators/mapping-content-classes-to-external-data.md

On this page

This page is a translation. Read the English original

Inhaltsklassen auf externe Daten abbilden

Diese Seite ist für Integrationsentwickler und Inhaltsarchitekten, die entscheiden, wie Datensätze eines PIM, eines ERP, eines DAM oder eines Veranstaltungssystems zu Inhalten in Exponential werden. Die Abbildung ist der Vertrag der Integration: Sobald Daten fließen, ist eine Änderung eine Migration. Legen Sie sie vor dem ersten Import schriftlich fest.

Inhalt

  1. Die Klasse für die Integration entwerfen
  2. Textformate der gängigen Datentypen
  3. Bilder und Dateien aus einem DAM
  4. Beziehungen zwischen importierten Datensätzen
  5. Sprachen und Platzierungen
  6. Eine Abbildungstabelle

Die Klasse für die Integration entwerfen

EntscheidungEmpfehlung
Eine Klasse pro Art von Datensatzproduct, product_category, event; überladen Sie keinen allgemeinen article
Namen der Bezeichnerstabil und in Kleinbuchstaben (sku, price, stock); der Import verwendet Bezeichner, nie Attribut-IDs
Felder, die der Quelle gehörenin der Attributbeschreibung kennzeichnen („vom ERP-Import gesetzt; Änderungen werden überschrieben“) und eine Rolle erwägen, die sie nicht bearbeiten kann
Felder, die Redakteuren gehörengetrennt halten (ein redaktionelles intro neben der importierten description); der Import berührt sie nie
Versteckte technische Felderein Textattribut für die Prüfsumme oder letzte Änderung der Quelle, in Templates nicht angezeigt
Pflichtattributenur, was die Quelle immer liefert; ein Pflichtfeld, das die Quelle manchmal leer lässt, lässt das Anlegen scheitern
Durchsuchbarmarkieren, wonach Besucher suchen; technische Felder aus dem Index lassen

Liefern Sie die Klasse mit Ihrer Erweiterung als Paket aus, damit jede Umgebung dieselben Bezeichner hat (Pakete). Das Inhaltsmodell einer ganzen Website ist ein Thema für Workshops (Workshops zur Inhaltsmodellierung).

Textformate der gängigen Datentypen

eZContentFunctions::createAndPublishObject() und updateAndPublishObject() nehmen jeden Wert als Zeichenkette und übergeben ihn an fromString() des Datentyps; toString() gibt dasselbe Format zurück. Aus den Datentypen des Kernels (kernel/classes/datatypes/<type>/<type>type.php):

DatentypFormatBeispiel
ezstring, eztext, ezemail, ezisbnder TextTrail shoe 42
ezinteger, ezfloateine Zahl12, 19.95
ezboolean1 oder 0 (anderer Text wird auf 0 oder 1 abgebildet)1
ezdate, ezdatetimeein Unix-Zeitstempel1793404800
ezpricePreis|ID des USt-Typs|USt enthalten (1 oder 0)119.00|1|1
ezurlAdresse|Linktext (unsichere Schemata werden abgewiesen)https://example.com/manual.pdf|Manual
ezselectionNamen der Optionen, getrennt durch |Red|Blue
ezkeywordSchlüsselwörter, durch Kommas getrennttrail,running
ezobjectrelationlistObjekt-IDs, getrennt durch -5678-5679
ezauthorAutoren, getrennt durch &, jeder Name|E-Mail|IDAda Example|[email protected]|0
ezimagePfad|Alternativtext; der Pfad muss eine Datei innerhalb der Installation, ihres var- oder temporären Verzeichnisses seinvar/import/img/10442.jpg|Trail shoe, side view
ezbinaryfile, ezmediaein Dateipfadvar/import/files/manual-10442.pdf
ezxmltextdas gespeicherte XML (siehe unten)<?xml version="1.0" encoding="utf-8"?><section ...><paragraph>...</paragraph></section>

Lesen Sie im Zweifel fromString() des Datentyps: Die Methode ist kurz, und mehrere wurden in 6.0.15 gehärtet, sodass sie ungültige Werte abweisen, statt sie zu speichern (Die API von eZDataType).

Rich Text. ezxmltext speichert sein eigenes XML (section, paragraph, header, link ...), kein HTML. Wandeln Sie das HTML der Quelle in Ihrem Import in dieses XML um, halten Sie die Menge der erlaubten Elemente klein, und maskieren Sie Text. Die Erweiterung nxc_powercontent, die von der REST-Route zum Anlegen verwendet wird, akzeptiert HTML für Attribute vom Typ ezxmltext (nxc_powercontent). Datentypen aus Erweiterungen wie eztags haben eigene Formate; lesen Sie deren fromString().

Bilder und Dateien aus einem DAM

  1. Laden Sie die Datei in ein Verzeichnis unter var/ der Installation herunter (zum Beispiel var/import/), nie in das Web-Wurzelverzeichnis einer anderen Website.
  2. Geben Sie im Attributwert den Pfad relativ zur Installation an, oder übergeben Sie einmal storage_dir und pro Datensatz die Dateinamen (createAndPublishObject() setzt storage_dir für ezimage, ezbinaryfile und ezmedia davor).
  3. Entfernen Sie nach dem Import die heruntergeladenen Kopien; der Datentyp hat seine eigene gespeichert.
  4. Vergleichen Sie vor einem erneuten Herunterladen eine Prüfsumme der Quelldatei, damit ein unverändertes Bild nicht erneut importiert wird.

Fragen Sie bei großen Medienbibliotheken, ob die Website die Dateien überhaupt braucht oder nur einen Link zur Auslieferungs-URL des DAM (ein Attribut ezurl oder Text), was das Kopieren vermeidet.

Beziehungen zwischen importierten Datensätzen

Beziehungen speichern Objekt-IDs, die Sie erst kennen, wenn beide Objekte existieren:

  1. Importieren Sie zuerst alle Datensätze der bezogenen Klasse (Kategorien vor Produkten).
  2. Lösen Sie jeden Verweis der Quelle über seine Remote-ID auf: eZContentObject::fetchByRemoteID( 'pim-category-shoes' ), dann verwenden Sie dessen id im Wert von ezobjectrelationlist.
  3. Wenn sich ein Verweis noch nicht auflösen lässt, importieren Sie ohne ihn und setzen ihn in einem zweiten Durchlauf.

Sprachen und Platzierungen

  • Sprachen: ein Objekt pro Datensatz, eine Übersetzung pro Sprache. Übergeben Sie language (zum Beispiel ger-DE) an createAndPublishObject() für die erste Sprache und an updateAndPublishObject() für jede weitere. Die Sprache muss in der Installation existieren (Inhaltssprachen).
  • Platzierungen: parent_node_id gibt die Hauptplatzierung an. Ein Datensatz, der an mehrere Stellen gehört, bekommt weitere Platzierungen (expobject und die Inhaltsjobs bieten das Hinzufügen von Platzierungen an; in PHP die Knotenoperationen). Entscheiden Sie, ob ein Kategoriewechsel an der Quelle das Objekt verschiebt (eZContentObjectTreeNodeOperations::move()) oder eine Platzierung hinzufügt.
  • Sektionen und Zustände: section_id beim Anlegen; Objektzustände für einen Workflow-Status wie „zurückgezogen“.

Eine Abbildungstabelle

Übernehmen Sie dies in die Schnittstellenspezifikation, eine Tabelle pro Klasse:

Class: product (identifier)          Source: ERP article export, file articles.csv
remote_id scheme: erp-product-<ARTNR>
Parent: node <id> "Products" (main location); category as an extra location

Source field   | Attribute     | Datatype   | Transformation              | Owner  | Required
---------------+---------------+------------+-----------------------------+--------+---------
ARTNR          | sku           | ezstring   | as is                       | ERP    | yes
NAME_EN        | name          | ezstring   | trim                        | ERP    | yes
NAME_DE        | name (ger-DE) | ezstring   | translation                 | ERP    | no
PRICE          | price         | ezprice    | "<PRICE>|1|1"               | ERP    | yes
STOCK          | stock         | ezinteger  | as is                       | ERP    | no
IMAGE_URL      | image         | ezimage    | download to var/import/     | DAM    | no
-              | intro         | ezxmltext  | not imported                | editor | no

Die Spalten bedeuten: Quellfeld, Attribut, Datentyp, Umwandlung, Verantwortlicher, Pflicht.

Verwandte Seiten

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.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x