Voraussetzung​

Die Funktion Erweiterter Datenpool kann für die Nachrichtenerstellung genutzt werden, sobald die folgenden Schritte erfolgreich abgeschlossen wurden:

Der Name des Pool-Containers muss die korrekte Groß/-Kleinschreibung berücksichtigen.

Einfügen von Daten in eine Nachricht über Platzhalter​

Um Daten aus einem Pool-Container in eine Nachricht einzufügen, wird ein Platzhalter in den Inhalt der Nachricht eingefügt. Wenn die Nachricht versendet wird, wird der Platzhalter durch Daten aus dem Pool-Container ersetzt.

Die Symbole <% %> definieren den Anfang und das Ende des Platzhalters ​innerhalb des Nachrichtentexts.

Die Elemente des Platzhalters werden von zwei Faktoren bestimmt: (1) Ob der Pool-Container mit einem Attribut verknüpft ist, und (2) ob der Pool-Container einmalig oder nicht einmalig ist.

(1) Der Platzhalter enthält entweder ein Pool-Attribut oder eine Pool-Funktion, abhängig davon, ob der Pool-Container mit einem Attribut verknüpft ist (siehe Pool-Container erstellen und verwenden​).

Der Platzhalter enthält:

  • ​Ein entsprechendes Attribut​, wenn Daten aus einem Pool-Container verwendet werden sollen, der mit einem Attribut verknüpft ist

  • ​die Funktion ecx:related​, wenn Daten aus einem Pool-Container verwendet werden sollen, der nicht mit einem Attribut verknüpft ist

(2) Des Weiteren ist entscheidend, ob der Datensatz ​einmalig​ ist (d.h. der Datensatz ist nur ein Mal im Pool-Container vorhanden) oder ​nicht einmalig​ (d.h. der Datensatz kann mehrfach in ein und demselben Pool-Container vorhanden sein).

Ist der Datensatz ​nicht einmalig​, wird eine ​ForEach-Schleife​ in den Platzhalter eingefügt.

Nachstehend werden folgende Fälle betrachtet:

  • Daten aus einem verknüpften Pool-Container auslesen (einmalig).

  • Daten aus einem unverknüpften Pool-Container auslesen (einmalig).

  • Daten aus einem verknüpften Pool-Container auslesen (nicht einmalig).

  • Daten aus einem unverknüpften Pool-Container auslesen (nicht einmalig).

Sortieren von Datensätzen

Die Anzeige von Daten aus dem Pool-Container erfolgt zufällig und in keiner bestimmten Reihenfolge. Wenn die Daten in einer bestimmten Reihenfolge angezeigt werden sollen, nutzen Sie die Funktion zur Sortierung von Daten (siehe ​ecx:sort​).

Darüber hinaus ist es häufig notwendig, Daten nicht nur anhand des Schlüssels auszuwählen, sondern diese auch anhand zusätzlicher Kriterien aus anderen Datenspalten zu identifizieren. Filter für die Auswahl von Daten werden durch Funktionen definiert (siehe ​Funktionen zum Filtern von Pool-Containern​).

Erweiterter Datenpool und das CMS​

Wenn Sie den erweiterten Datenpool im Zusammenhang mit dem CMS nutzen, werden die Daten über einen Datenabrufvorgang, der für jedes CMS Template festgelegt ist, eingefügt. Welche Paragraphen des CMS auf welche Datenspalten zugreifen, wird (von Ihrem Ansprechpartner) für Ihr spezielles CMS Template vorgegeben. Für die Nutzung des CMS müssen Sie lediglich den vereinbarten Schlüssel in den entsprechenden Platzhalter eingeben; Sie müssen nicht die manuell zu erstellenden Platzhalter verwenden, die im Folgenden beschrieben werden.

Sollte die Verwendung des erweiterten Datenpools in Ihrem Mapp Engage System unklar sein, kontaktieren Sie Ihren Ansprechpartner. Wie der erweiterte Datenpool in eine CMS Nachricht eingefügt wird, hängt von den individuellen Templates ab und kann nur für ein spezifisches System ausführlich beschrieben werden.

Auswahl und Import von Daten aus einem einmaligen Pool-Container​

Das Einfügen von Daten in eine Nachricht erfolgt über einen Platzhalter mit den Tags <% %>. Dieser Platzhalter steht für den Wert, der ersetzt wird.

Innerhalb des Platzhalters werden der Pool-Container und der Datensatz über zwei Befehle ausgewählt.

  1. Daten aus einem verknüpften Pool-Container auslesen (einmalig)
    Das entsprechende Attribut user.relatedAttribute['Datensatz']['Spalte'] wird genutzt, wenn der Pool-Container mit einem Attribut verknüpft ist.
    Der Platzhalter bzw. die Funktion lautet: <%${user.relatedAttribute['Datensatz']['Spalte']}%>
    Die für den Kunden relevanten Daten werden identifiziert, wenn das verknüpfte Attribut mit dem Schlüssel im Pool-Container übereinstimmt. Somit werden Daten nur dann aus dem Pool-Container ausgewählt und in eine Nachricht eingefügt, wenn die individuelle Eingabe des Attributs identisch mit dem Schlüsselwert ist.

    • user.relatedAttribute: Gibt an, dass der Pool-Container mit einem Attribut verknüpft ist.

    • Datensatz: Hier steht der Name des Pool-Containers, aus dem die Daten entnommen werden sollen. (Generell können mehrere Pool-Container mit einem einzelnen Attribut verknüpft werden. Daher ist es notwendig, den genauen Pool-Container anzugeben.)

    • Spalte: Hier steht der Name der Spalte aus dem Pool-Container, aus dem die Daten entnommen werden sollen.

  2. Daten aus einem unverknüpften Pool-Container auslesen (einmalig)
    Die Funktion ecx:related('Datensatz', 'Schlüssel')['Spalte''] wird zum Platzhalter hinzugefügt, wenn der Pool-Container mit keinem bestimmten Empfängerattribut verknüpft ist. Das bedeutet normalerweise, dass der Pool-Container Daten enthält, die zu keinem bestimmten Empfänger gehören.
    Der Platzhalter lautet dann: <%${ecx:related('Datensatz', ‚Schlüssel')['Spalte']}%>

    • <% %>: Bestimmt den Anfang und das Ende des Platzhalters im Nachrichtentext.

    • ${ }: Bestimmt den Anfang und das Ende einer Funktion, die die im Platzhalter anzuzeigenden Werte auswählt.

    • ecx:related: Funktion für die Auswahl und den Import von Daten.

    • Datensatz: Der Name des Pool-Containers, aus dem die Daten entnommen werden sollen.

    • Schlüssel: Der Name des Schlüssels für den Pool-Container, aus dem die Daten entnommen werden sollen. Der Schlüssel kann ein definierter Wert sein, ein in einem Attribut gespeicherter Wert oder ein Pool-Container.
      Es ist möglich, eine Verschachtelung von Funktionen anzulegen, um auf Werte zuzugreifen, die in anderen Pool-Containern gespeichert sind, anstatt einen festgelegten Wert anzugeben.

    • Spalte: Der Name der Spalte im Datensatz, aus dem die einzufügenden Daten entnommen werden sollen (in einem Produktkatalog wäre die Spalte z. B. der Preis des Produkts).

Beispiele für die Verwendung des Schlüssels in einem unverknüpften Pool-Container​

Die unterschiedliche Nutzung des Schlüssels lässt sich am Beispiel eines Produktkatalogs demonstrieren.

Alle in eine Nachricht einzufügenden Daten sind in einem Pool-Container mit dem Namen ​Produktkatalog​ gespeichert. Der Pool-Container beinhaltet mehrere Datensätze (einen für jedes Produkt). Durch einen Schlüssel wird angegeben, welche Daten in die Nachricht eingefügt werden sollen. In diesem Beispiel wird die Spalte Beschreibung, die Informationen zu den Produkten beinhaltet, ausgewählt und in unsere Nachricht eingefügt.

Der Schlüssel ist ein definierter Wert

Das Produkt und somit auch der Schlüssel ist für alle Empfänger derselbe. Der Platzhalter sollte in diesem Fall den Wert enthalten, der festlegt, welche Daten eingefügt werden sollen. Die Beschreibung des Produkts mit der Produktnummer 1234 wird in die Nachricht eingefügt. Die Produktnummer ist der Schlüssel des Datensatzes (siehe Aufbau von XML- und CSV-Dateien (erweiterter Datenpool)​).

In diesem Fall lautet der einzufügende Platzhalter: <%${ecx:related('Produktkatalog', ‚1234‘)['Beschreibung']}%> Als definierter Wert muss 1234 in Hochkommata gesetzt werden.

Der Schlüssel wird aus einem Attribut ausgelesen

Das Produkt und somit auch der Schlüssel variieren je nach Empfänger. Welches Produkt und welche Beschreibung in der Nachricht angezeigt werden, hängt vom letzten Einkauf des Empfängers ab. Dieser Einkauf ist in einem Attribut mit dem​ Namen ​Einkäufe​ gespeichert. In dieser Funktion entspricht der Schlüssel daher einem Attribut.

In diesem Fall lautet der einzufügende Platzhalter: <%${ecx:related('Produktkatalog', user.CustomAttribute['Einkäufe'])['Beschreibung']}%>

Der Schlüssel wird aus einem anderen Pool-Container mit einem einmaligen Datensatz ausgelesen

Es gibt einen anderen Pool-Container mit dem Namen ​Shop​. Dieser Pool-Container beinhaltet die aktuellen Angebote unterschiedlicher Shops.

Es sollen die Angebote aus dem Shop Paris in die Nachricht eingefügt werden. Der Schlüssel des Pool-Containers Shop entspricht dem Namen des Shops. Nur die Produkt ID ist in diesem erweiterten Datenpool gespeichert. Die Produkt-ID ist in der Spalte ​Produkt​ hinterlegt. Die Beschreibung des Produkts ist in einem Pool-Container mit dem Namen Produktkatalog gespeichert.

In diesem Fall lautet der einzufügende Platzhalter: <%${ecx:related('Produktkatalog', ecx:related('Shop', 'Paris')[‚Produkt'])['Beschreibung']}%>

Anstelle eines Schlüssels wird eine zweite Funktion hinzugefügt. Der Schlüssel dieser zweiten Funktion ist Paris: ecx:related('Shop', 'Paris')['Produkt'].

Der Schlüssel wird aus einem anderen Pool-Container ausgelesen, der einen Attributeintrag enthält

Der Wert eines Attributs kann auch anstelle eines definierten Werts als Schlüssel in einem Pool-Container verwendet werden ('Paris' im vorherigen Beispiel). Dies ermöglicht die automatische Auswahl eines aktuellen Angebots des Shops, der für den Empfänger am passendsten ist.

In diesem Beispiel ist der für den Empfänger passendste Shop in einem angepassten Attribut mit dem Namen ​BevorzugterShop​ gespeichert. Der Pool-Container ​AktuellesAngebotProShop​ enthält einen Datensatz pro Shop. Die Einträge in diesem Datensatz enthalten zwei Werte - den Namen des Shops (Schlüssel-Spalte) und das spezielle Angebot jedes Shops, angegeben durch die ​Produkt-ID​ in der Spalte ​Produkt​. Dieser Pool-Container ist nicht mit einem Attributeintrag verknüpft (Beachten Sie die unterschiedliche Syntax).

Um die ​Produkt-ID​ für das Spezialangebot des für den Empfänger passendsten Shops zu erhalten, wird die Funktion ecx:related('AktuellesAngebotProShop', user.CustomAttribute['BevorzugterShop'])['Produkt'] verwendet. Diese Informationen werden verwendet, um die Produktbeschreibung (oder andere Informationen zum Produkt) im Pool-Container ​Produktkatalog​ nachzuschlagen, der die ​Produkt-ID​ als Schlüssel-Spalte verwendet.

In diesem Fall lautet der Platzhalter: <%${ecx:related('Produktkatalog', ecx:related('AktuellesAngebotProShop', user.CustomAttribute['BevorzugterShop'])['Produkt'])['Beschreibung']}%>.

Daten aus einem Pool-Container mit nicht einmaligen Datensätzen auslesen​

Für einen Pool-Container mit nicht einmaligen Datensätzen (d.h.mehrere Datensätze sind mit demselben Schlüssel gespeichert) muss eine ​ForEach​-Schleife im Platzhalter verwendet werden.

Eine ​ForEach​-Schleife wählt keinen einzelnen Datensatz aus, sondern eher alle Datensätze, die die definierte Bedingung erfüllen. Die resultierenden Daten werden in keiner bestimmten Reihenfolge angezeigt. Für das Sortieren von Daten oder die Suche nach speziellen Daten gibt es spezielle Funktionen (siehe Funktionen zum Filtern von Pool-Containern​).

Nicht einmalige Non-unique Datensätze aus einem verknüpften Pool-Container auslesen:

Daten aus einem verknüpften, nicht einmaligen Pool-Container können mit user.relatedAttribute in eine Nachricht eingefügt werden. Da mehr als ein Datensatz im Pool-Container gespeichert ist, wird eine ​ForEach​-Schleife verwendet:

<%ForEach var="count" items="${user.relatedAttribute['dataset']}" max="5"%> <%${count['column']}%> <%/ForEach%>


Die ForEach-Schleife ist wie folgt aufgebaut:

  • <%ForEach%>   </%ForEach%>: Die Tags definieren den Anfang und das Ende der Schleife.

  • var="count": Erzeugt eine Variable, die später für die Ausgabe genutzt wird.

  • items="{ }": Gibt an, welche Werte berücksichtigt werden sollen (in diesem Fall ein verknüpfter Pool-Container).

  • user.relatedAttribute['Datensatz']: Gibt an, welche Daten gewählt werden sollen; d.h. Datensätze aus einem Pool-Container. Der Parameter Datensatz wird durch den Namen des entsprechenden Pool-Containers ersetzt.

  • max="5": Gibt an, dass maximal 5 Datensätze gewählt und in die Nachricht eingefügt werden sollen. Die Auswahl der Datensätze erfolgt zufällig. Das Datensatzlimit ist optional und kann weggelassen werden. Darüber hinaus ist es möglich, zeitliche oder thematische Filter zu verwenden, die definieren, welche Datensätze angezeigt werden sollen (siehe Funktionen zum Filtern von Pool-Containern​).

  • <%${count['Spalte']}%>: Der Platzhalter, in den die Daten eingegeben werden. Die Spalte gibt an, aus welcher Spalte die Daten entnommen werden.

Hinweis:

Die ForEach-Schleife kann nicht direkt zu einem Link hinzugefügt werden. Die folgende Syntax ist NICHT korrekt und verursacht einen Fehler:

<a href="http://www.domain.com/test?email=<%ForEach var="count" items="$ {user.relatedAttribute['Beispiel']} " max="1"%><%$ {count['Spalte1']}%><%/ForEach%>">LINK<a>

Die korrekte Syntax für dieses Beispiel lautet wie folgt:

<%ForEach var="count" items="${user.RelatedAttribute['Beispiel']}" max="1"%> <a href=“">">linklinkhttp://www.domain.com?column1=<%${count['Spalte1']}%>">link</a> <%/ForEach%>

Beispiel:

Es gibt einen Pool-Container mit dem Namen ​Einkäufe​, in dem alle Einkäufe der Kunden gespeichert sind. Der Pool-Container ist mit dem Attribut ​Kundennummer​ verknüpft. Die Schlüssel-Spalte des Pool-Containers entspricht der Kundennummer. Es gibt mehrere Datenspalten: Die Produkt-ID ist in der Spalte ​Produkt​ gespeichert; der Kaufpreis in der Spalte ​Einkäufe​; und das Kaufdatum in der Spalte Datum. Da ein Kunde beliebig viele Einkäufe tätigen kann, ist der Datensatz nicht einmalig (d.h., dass jeder Schlüssel (Kundennummer) für eine beliebige Anzahl von Datensätzen verwendet werden kann).

Es soll ein Newsletter erzeugt werden, in dem Kaufdatum und Kaufpreis als Tabelle mit maximal drei Einträgen in die Nachricht eingefügt werden. Mit den notwendigen HTML-Tags ist die ​ForEach​-Schleife wie folgt aufgebaut:

<table>
    <tbody>
        <%ForEach var="count" items="${user.relatedAttribute['Purchase']}" max="3"%>
            <tr>
                <td><% ${count['Price']}%></td>
                <td> <% ${count['Date']}%></td>
            </tr>
        <%/ForEach%>
    </tbody>
</table>
CODE

Nicht einmalige Datensätze aus einem unverknüpften Pool-Container auslesen

Die Auswahl der Daten aus einem unverknüpften Pool-Container erfolgt über die Funktion ecx:related. Da mehr als ein Datensatz im Pool-Container gespeichert ist, wird folgende ​ForEach​-Schleife genutzt:

<%ForEach var="count" items="${ecx:related('Datensatz', 'Schlüssel')}" max="5"%> <%${count['Spalte']}%> <%/ForEach%>


Die ​ForEach​-Schleife ist wie folgt aufgebaut:

  • <%ForEach%>   </%ForEach%>: Die Tags definieren den Anfang und das Ende der Schleife.

  • var="count": Erzeugt eine Variable, die später für die Ausgabe genutzt wird.

  • items="{ }": Gibt an, welche Werte berücksichtigt werden sollen (in diesem Fall ein unverknüpfter Pool-Container).

  • ecx:related('Datensatz', 'Schlüssel'): Gibt an, welche Daten ausgelesen werden sollen; d.h. ein Datensatz aus einem unverknüpften Pool-Container (ecx:related ('Datensatz', 'Schlüssel'). Hier müssen die entsprechenden Namen eingegeben werden.

  • max="5": Gibt an, dass maximal 5 Datensätze ausgewählt und in die Nachricht eingefügt werden sollen. Die Auswahl der Datensätze erfolgt zufällig.

  • <% ${count['Spalte']}%>: Der Platzhalter, in den die Daten eingegeben werden. Die Spalte gibt an, aus welcher Spalte die Daten entnommen werden.


Beispiel:

Die Touristenattraktionen in mehreren verschiedenen Städten sind in einem Pool-Container mit dem Namen ​Stadt​ gespeichert. Es sollen vier Attraktionen der Stadt Paris in Ihren Newsletter eingefügt werden. Der Name der Attraktion ist in der Spalte ​Name​ gespeichert; eine kurze Beschreibung der Attraktion ist in der Spalte ​Beschreibung​ gespeichert. Der Schlüssel ist der Name der Stadt. Sowohl der Name als auch die Beschreibung sollen in der Tabelle im Newsletter erscheinen.

<table>
    <tbody>
        <%ForEach var="count" items="${ecx:related('City', 'Paris')}" max="3"%>
            <tr>
                <td><% ${count['Name']}%></td>
                <td><% ${count['Description']}%></td>
            </tr>
        <%/ForEach%>
    </tbody>
</table>
CODE

Angezeigte Daten sortieren​

Bei der Verwendung einer ​ForEach​-Schleife werden mehrere Datensätze eingefügt und in zufälliger Reihenfolge angezeigt . Verwenden Sie die Funktion ecx:sort, um die angezeigten Daten zu sortieren (siehe ecx:sort​).