> ## Documentation Index
> Fetch the complete documentation index at: https://dokumentation.websale.de/llms.txt
> Use this file to discover all available pages before exploring further.

# WS-DataFlowManager: Tag-Referenz

> Alle Tags für Export-Templates des DataFlowManagers: EXP-, WSINI-, PR-, DC-, DC-FP, PRCONV-, Cat-, Tpl- und die Formatierungs-Tags.

Diese Seite listet die Tags, mit denen Sie Export-Templates des [DataFlowManagers](https://dokumentation.websale.de/v8s/schnittstellen/marketing-seo-und-portale/ws-dataflowmanager.md) aufbauen. Die Tags gliedern sich nach Herkunft der Daten: Shopweite Angaben, Konfigurationswerte, Produktdaten, Kategoriedaten, Rechen- und Vergleichsoperationen sowie Formatierung.

## EXP-: shopweite Daten

Diese Tags liefern Angaben, die nicht in der `shop.config` oder einer anderen Konfigurationsdatei stehen.

| Tag | Beschreibung |
| - | - |
| `~EXP-ShopId~` | ID des Shops |
| `~EXP-SubshopId~` | ID des Subshops |
| `~EXP-Counter~` | Zähler, der bei jedem Export hochgesetzt wird |

## WSINI-: Werte aus der shop.config

Diese Tags fügen Parameter aus der `shop.config` ein. Sie werden nach dem Schema `~WSINI-(Sektion,Parameter)~` gebildet.

```
~WSINI-(Currency-Txt,Name)~
```

fügt die Währung des Subshops ein.

## PR-: Produktdaten

Ein `PR-`-Tag entsteht aus dem Präfix und dem technischen Feldnamen. Damit lassen sich beliebige Standardfelder und freie Felder einfügen, sofern das interne Speicherformat für den Export geeignet ist.

```
~PR-Descr~
```

fügt die Produktbeschreibung ein.

### Optionen an PR-Tags

Feldinhalte lassen sich vor der Ausgabe verändern. Die Anweisungen geben Sie als Attribute mit. Diese Optionen funktionieren auch bei Bereichs-Tags.

| Attribut | Beschreibung | Beispiel |
| - | - | - |
| `maxlength` | Kürzt den Inhalt auf die angegebene Länge | `~PR-Descr(maxlength:100)~` oder kurz `~PR-Descr(100)~` |
| `search` / `replace` | Ersetzt alle Fundstellen von `search` durch `replace`. Ist `replace` leer oder fehlt es, werden die Fundstellen entfernt. | `~PR-Descr(search:netto,replace:brutto)~` |
| `trimend` | Entfernt die angegebenen Zeichen am Ende des Inhalts | `~PR-Descr(trimend:\ $)~` |
| `toupper` | Gibt den Inhalt in Großbuchstaben aus | `~PR-Descr(toupper)~` |
| `tolower` | Gibt den Inhalt in Kleinbuchstaben aus | `~PR-Descr(tolower)~` |
| `compare` | Vergleicht den Inhalt mit dem angegebenen Text | `{PR-New(compare:yes)}1{/PR-New(compare:yes)}` |

Bei `search`, `replace` und `trimend` zählen auch Leerzeichen mit. Soll ein Komma ersetzt werden, schreiben Sie dafür den Platzhalter `%%comma%%`.

Mehrere Attribute kombinieren Sie mit Komma:

```
~PR-Descr(maxlength:100,trimend:\ ,toupper)~
```

### Schleifen und Klammerungen für Produkte

| Tag | Beschreibung |
| - | - |
| `{@PR-Articles}` | Schleife über alle Produktdaten |
| `{@PR-SearchItems}` | Schleife über die Suchbegriffe. Das Feld `searchitems` wird dafür in einzelne Wörter aufgeteilt, Trennzeichen ist jedes Zeichen, das weder Buchstabe noch Ziffer ist. |
| `{PR-DepVariations}` | Klammerung, die erscheint, wenn die Option **Abhängige Variationen als eigenständige Produkte exportieren** aktiv ist und das Produkt abhängige Varianten hat |
| `{@PR-DepVariations}` | Schleife über Namen und Werte der abhängigen Variationen, mit `~PR-DepVariationName~`, `~PR-DepVariationValue~`, `~PR-DepVariationIdx~` und `{last}` |

Die folgenden Tags setzen voraus, dass die Option **Abhängige Variationen als eigenständige Produkte exportieren** **nicht** aktiv ist:

| Tag | Beschreibung |
| - | - |
| `{PR-DepVarProducts}` / `{@PR-DepVarProducts}` | Klammerung und Schleife für die Produktdaten abhängiger Variationen. Innerhalb der Schleife sind nur einfache Produktdaten-Tags erlaubt, also keine, die Konvertierungen oder eigene Schleifen brauchen. Die Schleife lässt sich mehrfach einfügen, beispielsweise erst für Produktnummern, dann für Produktnamen. |
| `{PR-DistinctDepVarField}` / `{@PR-DistinctDepVarField(...)}` | Gibt die unterschiedlichen Werte eines Produkt-Attributs aus, dessen Name als Parameter steht. Mehrfach vorkommende Werte erscheinen nur einmal. |
| `{PR-DepVarNames}` / `{@PR-DepVarNames}` / `{@PR-DepVarValues}` | Namen und Werte der abhängigen Variationen, mit `~PR-DepVariationName~` und `~PR-DepVariationValue~` |
| `{PR-DepVarField}` / `{@PR-DepVarField(...)}` | Verschachtelte Ausgabe von Varianten-Werten |
| `{LastDepVarField}` | Klammerung für den letzten Eintrag der aktuellen Varianten-Wert-Liste |
| `{PR-DepVarAttribute1…N}` / `~PR-DepVarAttribute1…N~` | Klammerung beziehungsweise Ausgabe des N-ten Attributs. Die äußerste Klammerung muss immer `{PR-DepVarAttribute1}` sein. |
| `{@PR-DepVarValues1…N}` | Schleife über alle aktiven Werte des N-ten Attributs, nur innerhalb von `{PR-DepVarAttribute1…N}` |
| `{LastDepVarValue}` / `{!LastDepVarValue}` | Prüfung auf den letzten Wert innerhalb von `{@PR-DepVarValues1…N}` |
| `~PR-DepVarValue1…N~` | Ausgabe des Werts des N-ten Attributs, nur innerhalb von `{@PR-DepVarValues1…N}` |

Beispiel für verschachtelte Varianten:

```
{@PR-DistinctDepVarField(Farbe)}
  ~PR-Farbe~
{/@PR-DistinctDepVarField(Farbe)}
```

Bei einem Produkt mit drei Varianten, von denen zwei die Farbe `rot` und eine die Farbe `grün` haben, gibt das `rot grün` aus.

## DC-: Vergleiche und Rechnen

Die `DC-CompareDigit`-Klammerungen vergleichen Zahlenwerte und blenden Abschnitte abhängig vom Ergebnis ein oder aus. Sie entsprechen weitgehend den gleichnamigen Tags des Shops, brauchen hier aber keine spezielle Syntax für die Parameter.

```
{DC-CompareDigitLTE(~PR-Amount~,5)}Kleiner Bestand{/DC-CompareDigitLTE(~PR-Amount~,5)}
```

| Tag | Bedingung |
| - | - |
| `{DC-CompareDigitLTE(a,b)}` | a kleiner oder gleich b |
| `{DC-CompareDigitLT(a,b)}` | a kleiner b |
| `{DC-CompareDigitGTE(a,b)}` | a größer oder gleich b |
| `{DC-CompareDigitGT(a,b)}` | a größer b |
| `{DC-CompareDigitIBE(a,b,c)}` | b größer oder gleich a und kleiner oder gleich c |
| `{DC-CompareDigitIB(a,b,c)}` | b größer a und kleiner c |

Zwei Regeln gelten für alle `DC-`-Tags: Die Parameter des Start-Tags müssen am End-Tag wiederholt werden, und zu jeder Klammerung gibt es auch die negative Form.

### Teilen und Datumsformate

| Tag | Beschreibung |
| - | - |
| `{@DC-Split(Wert,Separator)}` | Teilt einen Wert in Teilwerte. Für Komma und Leerzeichen als Separator stehen die Platzhalter `comma` und `space`. |
| `~DC-SplitValue~` | Gibt den aktuellen Teilwert aus, nur innerhalb von `{@DC-Split()}` |
| `{DC-SplitLastValue}` | Klammerung für den letzten Teilwert |
| `~DC-ConvertDateTime(timestamp,format)~` | Wandelt einen Unix-Timestamp in das angegebene Format. `format` muss ein Format aus C++ `strftime` sein. |
| `~DC-ConvertDateTime(timestamp,orig_format,format)~` | Wandelt einen Timestamp aus `orig_format` in `format` |

```
~DC-ConvertDateTime(~PR-CreationDate~,%d/%m/%Y)~
```

### Rechnen

| Tag | Beschreibung |
| - | - |
| `~DC-Add(a,b,Dezimalstellen)~` | Addiert a und b |
| `~DC-Subtract(a,b,Dezimalstellen)~` | Zieht b von a ab |
| `~DC-Multiply(a,b,Dezimalstellen)~` | Multipliziert a und b |
| `~DC-Divide(a,b,Dezimalstellen)~` | Teilt a durch b |
| `~DC-Modulo(a,b)~` | Rest der ganzzahligen Division von a durch b |

Ohne den dritten Parameter kommt das Ergebnis als Ganzzahl. Geben Sie die Anzahl der Nachkommastellen an, erhalten Sie eine Fließkommazahl. Fließkommazahlen brauchen einen Punkt als Dezimaltrenner, ein Komma funktioniert hier nicht.

## DC-FP: freie Parameter

Mit den `DC-FPX`-Tags setzen, verändern und lesen Sie eigene Zwischenwerte. Statt des `X` schreiben Sie einen frei gewählten alphanumerischen Namen.

| Tag | Beschreibung |
| - | - |
| `~DC-FP1~` | Gibt den aktuellen Wert aus. Als Bereichs-Tag `{DC-FP1}` prüft es, ob der Parameter gesetzt ist. |
| `~DC-FP1_set(Wert)~` | Setzt den Wert |
| `~DC-FP1_reset~` | Löscht den Wert |
| `~DC-FP1_append(Wert)~` | Hängt an den vorhandenen Wert an |

```
~DC-FP1_set(Welt)~
Hallo ~DC-FP1~
```

ergibt `Hallo Welt`.

## CurrentTimestamp

| Tag | Beschreibung |
| - | - |
| `~CurrentTimestamp~` | Zeitpunkt des Exportstarts als Unix-Timestamp |

Zusammen mit den freien Parametern und den Vergleichen lässt sich damit beispielsweise das Alter eines Produkts auswerten:

```
~DC-FPproductAge_set(~DC-Subtract(~CurrentTimestamp~,~PR-CreationDate~)~)~
{DC-CompareDigitLT(~DC-FPproductAge~, 1209600)}
   Das Produkt wurde innerhalb der letzten 2 Wochen angelegt.
{/DC-CompareDigitLT}
```

1209600 Sekunden entsprechen zwei Wochen.

## PRCONV-: konvertierte Produktfelder

Diese Tags stehen für Felder, die über eine Tabelle übersetzt werden. Welche Felder das sind und welche Tabelle gilt, legen Sie in `convert-fields.csv` fest. Die Einrichtung ist unter [WS-DataFlowManager](https://dokumentation.websale.de/v8s/schnittstellen/marketing-seo-und-portale/ws-dataflowmanager.md) beschrieben.

## Cat-: Kategoriedaten in der Produktschleife

| Tag | Beschreibung |
| - | - |
| `~Cat-Index~` | Index der Kategorie, in der das Produkt steht |
| `{@Cat-Names}` | Schleife der Kategorienamen von oben nach unten in der Hierarchie |
| `{@Cat-RevNames}` | Dieselbe Schleife in umgekehrter Reihenfolge |

## Cat-: Tags im Kategorieexport

Im Kategorie-Template stehen weitere Tags zur Verfügung.

| Tag | Beschreibung |
| - | - |
| `{@Cat-Categories}` | Schleife über die Kategoriedaten |
| `~Cat-Name~` | Name der Kategorie |
| `~Cat-Index~` | Index der Kategorie |
| `{Cat-Index}` | Prüft, ob die Kategorie indiziert werden soll, also `RobotIndex` nicht auf `no` steht |
| `~Cat-Descr~` | Beschreibung der Kategorie |
| `~Cat-Link~` | Link zur Kategorie, SEO-URL-fähig |
| `~Cat-ImgAdvNav~` | Erweitertes Navigationsbild |
| `~Cat-ImgClosed~` | Navigationsgrafik geschlossen |
| `~Cat-ImgOpen~` | Navigationsgrafik geöffnet |
| `~Cat-ImgOverview~` | Übersichtsbild |
| `~Cat-ImgSelected~` | Navigationsgrafik ausgewählt |
| `{@Cat-ParentCategories}` | Schleife über die übergeordneten Kategorien. Innerhalb der Schleife wechselt der Kontext, `~Cat-Name~` bezieht sich dann auf die übergeordnete Kategorie. Zusätzlich sind `{Cat-last}` und `{!Cat-last}` verwendbar. |
| `{@Cat-RevParentCategories}` | Dieselbe Schleife in umgekehrter Reihenfolge |
| `{@Cat-Data}` | Schleife über Kategorienamen und Indizes von oben nach unten |
| `{@Cat-RevData}` | Dieselbe Schleife in umgekehrter Reihenfolge |
| `{Cat-LastModDate}` | Prüft, ob sich ein Änderungsdatum ermitteln ließ |
| `~Cat-LastModDate~` | Datum der letzten Änderung an der Kategorie, einschließlich der letzten Änderung der Kategoriezuweisungen |

`{@Cat-Data}` innerhalb von `{@Cat-AllAssigned}` ist stark eingeschränkt: Dort lassen sich nur `~Cat-Name~` und `~Cat-Index~` auslesen, dazu `{last}` für den letzten Eintrag.

### Kategorien ausfiltern

| Tag | Beschreibung |
| - | - |
| `{Cat-FilterEq(Feldname,Feldwert)}` | Erscheint, wenn das Feld den angegebenen Wert hat |
| `{Cat-FilterNEq(Feldname,Feldwert)}` | Erscheint, wenn das Feld den Wert nicht hat |
| `{Cat-Feldname}` | Erscheint, wenn das Feld gefüllt ist |

## Tpl-: URLs von Informationsseiten

Für Sitemaps und ähnliche Ausgaben liefern diese Tags die URLs der statischen Informationsseiten.

| Tag | Beschreibung |
| - | - |
| `{@Tpl-Template}` | Schleife über alle URLs von Informationsseiten |
| `~Tpl-Link~` | Link zur Informationsseite |
| `~Tpl-LastModDate~` | Datum der letzten Änderung der Template-Datei im Subshop-Verzeichnis |

```
{@Tpl-Template}
   <url>~n~
      <loc>~Tpl-Link~</loc>~n~
      <lastmod>~Tpl-LastModDate~</lastmod>~n~
      <changefreq>weekly</changefreq>~n~
   </url>~n~
{/@Tpl-Template}
```

## Spezialtags für BMEcat

| Tag | Beschreibung |
| - | - |
| `~BMECat-CategoryStructur~` | Kategoriestruktur nach BMEcat-Standard |
| `~BMECat-GroupMap~` | Zuordnung von Produkten zu Kategorien nach BMEcat-Standard |

## Formatierungs-Tags

| Tag | Beschreibung |
| - | - |
| `~t~` | Wird durch einen Tabulator ersetzt |
| `~n~` | Wird durch einen Zeilenumbruch ersetzt |

Zusammen mit der Option **Zeilenumbrüche entfernen** können Sie die Felder im Template untereinander schreiben, obwohl sie in der Ausgabedatei in einer Zeile stehen. Bei Exportdateien mit vielen Feldern ist das erheblich übersichtlicher:

```
id~t~
titel~t~
description~t~
price~t~
categories~n~
{@PR-Articles}
  ~PR-Number~~t~
  ~PR-Name~~t~
  ~PR-Descr~~t~
  ~PR-Price~~t~
  {@Cat-Names}~Cat-Name~{!last}>{/!last}{/@Cat-Names}~n~
{/@PR-Articles}
```

## Verwandte Themen

* Wegweiser: [WS-DataFlowManager](https://dokumentation.websale.de/v8s/schnittstellen/marketing-seo-und-portale/ws-dataflowmanager.md)
* Wegweiser: [Marketing, SEO und externe Portale](https://dokumentation.websale.de/v8s/schnittstellen/marketing-seo-und-portale.md)


## Related topics

- [WS-DataFlowManager](https://dokumentation.websale.de/v8s/schnittstellen/marketing-seo-und-portale/ws-dataflowmanager.md)
- [Spezielle Online-Dienste](https://dokumentation.websale.de/v8s/online-servicebereich/spezielle-online-dienste.md)
- [Marketing, SEO und externe Portale](https://dokumentation.websale.de/v8s/schnittstellen/marketing-seo-und-portale.md)
- [Konfiguration wsautoexpdelcost.cfg](https://dokumentation.websale.de/v8s/referenz/konfigurationen/konfiguration-wsautoexpdelcost-cfg.md)
- [Integration von FINDOLOGIC](https://dokumentation.websale.de/v8s/externe-dienste/integration-von-findologic.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.