> ## 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.

# Tags und Templates

> Alle Tags für INQUIRY4-Templates: Adress- und Lieferadressdaten, allgemeine Eingabefelder, CAPTCHA, PDF-Download, Dateiupload, Design Control Tags und die Regeln für HTML-E-Mail-Templates.

Über Tags fügen Sie in Ihren Templates Benutzereingaben ein und blenden Bereiche abhängig vom Zustand des Formulars ein oder aus. Diese Seite beschreibt die Arten von Tags, ihre Verschachtelung und alle unterstützten Tags.

## Tags und Templates

INQUIRY4 bietet Ihnen die Möglichkeit, in Ihren Templates durch bestimmte, wohldefinierte „Tags“ Informationen entsprechend den Benutzereingaben einzufügen bzw. bestimmte Bereiche ein- oder auszublenden.

### Verwendung von Tags

#### Arten von Tags

Es existieren 3 Arten von Tags:

| | |
| - | - |
| **Einfache Ersetzungs-Tags** | Diese haben die Form ~~TAG-Name~~. Das Tag wird durch den entsprechenden Wert ersetzt. |
| `Bereichs-Tags` | Ein Bereich wird mit \{TAG-Name} geöffnet und mit \{/TAG-Name} geschlossen. Dieser Bereich wird nur angezeigt, wenn das TAG **irgendeinen Wert** hat. |
| **Negative Bereichs-Tags** | Ein negativer Bereich wird mit \{!TAG-Name} geöffnet und mit \{/!TAG-Name} geschlossen. Dieser Bereich wird nur angezeigt, wenn **kein Wert** für dieses TAG existiert. |

Ein Tag kann im Template entweder in Form eines einfachen Ersetzungs-Tags und/oder eines Bereichs-Tags und/oder eines negativen Bereichs-Tags eingesetzt werden. Folgende Kodierung soll hierzu gelten:

Kodierung der Einsatzmöglichkeiten, beispielsweise: 100

Die erste Stelle „1“ bezieht sich auf Ersetzungstags. Die 2. Stelle „0“ bezieht sich auf Bereichs-Tags und die 3. Stelle „0“ auf negative Bereichs-Tags.

* 1 bedeutet: wird unterstützt
* 0 bedeutet: keine Unterstützung

| Unterstützt | Einfaches Tag | Bereichs-Tag | neg. Bereichs-Tag |
| - | - | - | - |
| 100 | ja | nein | nein |
| 011 | nein | ja | ja |
| 111 | ja | ja | ja |

Beispiel 1:

| Tag | Unterstützt | Beschreibung | Besonderheit |
| - | - | - | - |
| `Beispiel` | 100 | Tag für das Feld ABCDE | Dieser Text wird nicht beim ersten Aufruf des Formulars mit INQUIRY4 angezeigt, sondern nur, wenn beim Absenden des Formulars ein Fehler festgestellt wurde. |

Dieses Tag können Sie im Template wie folgt verwenden:

```
~ABCDE~	ok, weil 100
```

Sie können dieses Tag allerdings **nicht** wie folgt verwenden:

```
{ABCDE}	falsch! weil 100
   Text Text Text Text Text Text
{/ABCDE}
```

Dieses Beispiel-Tag unterstützt mit 100 also nur die Möglichkeiten eines “Einfachen Tags“, ist aber kein “Bereichs-Tag“ bzw. kein “Negatives Bereichs-Tag“.

**Beispiel 2:**

| Tag | Unterstützt | Beschreibung |
| - | - | - |
| `INFO-Referer` | 111 | Zeigt den als Parameter `ref=...` übergebenen Wert an. |

Dieses Tag können Sie im Template wie folgt verwenden:

```
~INFO-Referer~				ok, weil 111
```

Dadurch wird dieses Tag durch den übergebenen Wert ersetzt.

Sie können dieses Tag allerdings auch als Bereichs-Tag oder Negatives Bereichs-Tag verwenden:

(a)

```
{INFO-Referer}					ok, weil 111

Folgender Referer wurde übergeben: ~INFO-Referer~.

{/INFO-Referer}
```

(b)

```
{!INFO-Referer}				ok, weil 111

Es wurde kein Referer übergeben.

{/!INFO-Referer}
```

Wenn ein Referer übergeben wurde, wird nur der Bereich (a) angezeigt. Wurde kein Referer übergeben, wird nur der Bereich (b) angezeigt.

#### Verschachtelung von Tags

In einem Bereich (Anzeigebereich auf der erzeugten Webseite) dürfen wiederum beliebige andere Tags vorkommen.

**Beispiel:**

```
{A-LastName_value}

Der von Ihnen eingegebene Nachname lautet: ~A-LastName_value~

{/A-LastName_value}
```

Im Fehlerfall wäre auf der Formularseite beispielsweise zu lesen:

`Herr <Name>, die Eingabe der folgenden Punkte war nicht korrekt:`

### Unterstützte Tags

INQUIRY4 kennt hierbei folgende Tags:

#### Tags der Adressdaten

Die Tags der Adressdaten beginnen alle mit „A-“ und haben die gleiche Bezeichnung wie die zugehörige Sektion in der Konfigurationsdatei.

Es existieren drei Suffixe, die in Kombination mit dem Sektionsnamen ein gültiges Tag ergeben:

| Suffix | Beschreibung |
| - | - |
| **\_value** | Der vom Nutzer eingegebene Wert |
| **\_descr** | Die Beschreibung, wie in der Konfigurationsdatei angegeben |
| **\_name** | Der HTML-Name, wie in der Konfigurationsdatei angegeben. |
| **\_max** | Die in der Konfigurationsdatei angegebene maximale Eingabelänge |
| **\_error** | Fehlerhafte Eingabe:   \* Einfaches Tag: Im Fehlerfall wird das Tag durch „\_error“ ersetzt \* Bereichs-Tag: Im Fehlerfall wird der Bereich angezeigt \* neg. Bereichs-Tag: Im Fehlerfall wird der Bereich nicht angezeigt |

Jedes so erzeugte Tag **unterstützt** dabei **alle drei Arten von Tags**.

```
{A-LastName_value}
  Eingegebener Nachname: ~A-LastName_value~
{/A-LastName_value}
```

Dadurch wird der vom Benutzer eingegebene Nachname, wenn vorhanden, angezeigt.

```
~A-FirstName_descr~:
<input type=“text“ name=“~A-FirstName_name~“ size=32 maxlength="~A-FirstName_max~">
```

Hier wird ein Eingabefeld für den Vornamen erstellt, wobei der HTML-Name wie in der Konfigurationsdatei angegeben eingefügt und die Beschreibung aus der Konfigurationsdatei vorangestellt wird.

Zusätzlich können die Bereichs- und negativen Bereichs-Tags mit dem Suffix \_value auf bestimmte eingegebene Werte geklammert werden.

```
{A-Country_value(DEU)}
  Dieser Bereich wird nur angezeigt, wenn als Land Deutschland ausgewählt wurde.
{/A-Country_value(DEU)}
```

Daneben können Zusatzfelder (sog. Suffix-Felder) verwendet werden.

Auch die Tags der Suffix-Felder beginnen mit „A-“ und haben die gleiche Bezeichnung wie die zugehörige Sektion in der Konfigurationsdatei.

Achtung: Im INQUIRY können **maximal 10 Suffix-Felder** (`<A-Suffix1>` bis `<A-Suffix10>`) genutzt werden. Wenn Sie mehr Zusatzfelder einsetzen möchten, müssen diese mit `<+CommonInput>` realisiert werden. (Siehe oben **Allgemeine Anfragefelder**)

**Zusätzliche Tags:**

| Tag | Unterstützt | Beschreibung | Besonderheit |
| - | - | - | - |
| `A-Salutation_list` | 100 | Generiert automatisch eine Listbox mit Anreden. Dabei wird die Datei aus der Sektion `<Basic>`, Parameter SalutationDat verwendet. Besonderheit: Die erzeugte Listbox besitzt die Styles-klasse `„select_a_salut"`. | |
| `A-Salutation_complete` | 100 | Die vollständige Anrede. Zur Erzeugung dieser wird die Datei aus der Sektion `<Basic>`, Parameter SalutationDat verwendet. | |
| `A-Title_list` | 100 | Generiert automatisch eine Listbox mit Titeln. Dabei wird die Datei aus der Sektion `<Basic>`, Parameter TitleDat verwendet. | Die erzeugte Listbox besitzt die Styles-klasse `„select_a_title"`. |
| `A-Country_list` | 100 | Generiert automatisch eine Listbox mit Ländern. Dabei wird die Datei aus der Sektion `<Basic>`, Parameter CountryDat verwendet. | Die erzeugte Listbox besitzt die Styles-klasse `„select_a_country"`. |
| `A-DateOfBirth_list` | 100 | Generiert automatisch drei Listboxen zur Auswahl des Geburtsdatums. | Die erzeugten Listboxen besitzen die Styles-klasse `„select_a_dateofbirth"`. |

#### Tags der optionalen Lieferadresse

Die Tags der Lieferadresse werden analog zu denen der Adressdaten gebildet.

Die Tags der Lieferadresse beginnen alle mit „D-“ und haben die gleiche Bezeichnung wie die zugehörige Sektion in der Konfigurationsdatei.

Es existieren drei Suffixe, die in Kombination mit dem Sektionsnamen einen gültigen Tag ergeben:

| Suffix | Beschreibung |
| - | - |
| **\_value** | Der vom Nutzer eingegebene Wert |
| **\_descr** | Die Beschreibung, wie in der Konfigurationsdatei angegeben |
| **\_name** | Der HTML-Name, wie in der Konfigurationsdatei angegeben. |
| **\_max** | Die in der Konfigurationsdatei angegebene maximale Eingabelänge |
| **\_error** | Fehlerhafte Eingabe:   \* Einfaches Tag: Im Fehlerfall wird das Tag durch „\_error“ ersetzt \* Bereichs-Tag: Im Fehlerfall wird der Bereich angezeigt \* neg. Bereichs-Tag: Im Fehlerfall wird der Bereich nicht angezeigt |

Jedes so erzeugte Tag **unterstützt** dabei **alle drei Arten von Tags**.

```
{D-LastName_value}
  Eingegebener Nachname: ~D-LastName_value~
{/D-LastName_value}
```

Dadurch wird der vom Benutzer eingegebene Nachname, wenn vorhanden, angezeigt.

```
~D-FirstName_descr~:
<input type=“text“ name=“~D-FirstName_name~“ size=32 maxlength="~D-FirstName_max~">
```

Hier wird ein Eingabefeld für den Vornamen erstellt, wobei der HTML-Name wie in der Konfigurationsdatei angegeben eingefügt und die Beschreibung aus der Konfigurationsdatei vorangestellt wird.

Zusätzlich können die Bereichs- und negativen Bereichs-Tags mit dem Suffix `_value` auf bestimmte eingegebene Werte geklammert werden.

```
{D-Country_value(DEU)}
  Dieser Bereich wird nur angezeigt, wenn als Land der Lieferadresse
  Deutschland ausgewählt wurde.
{/D-Country_value(DEU)}
```

Daneben können Zusatzfelder (sog. Suffix-Felder) verwendet werden.

Auch die Tags der Suffix-Felder beginnen mit „D-“ und haben die gleiche Bezeichnung wie die zugehörige Sektion in der Konfigurationsdatei.

Achtung: Im INQUIRY können **maximal 10 Suffix-Felder** (`<D-Suffix1>` bis `<D-Suffix10>`) genutzt werden. Wenn Sie mehr Zusatzfelder einsetzen möchten, müssen diese mit `<+CommonInput>` realisiert werden (Siehe oben **Allgemeine Anfragefelder**).

**Zusätzliche Tags:**

| Tag | Unterstützt | Beschreibung | Besonderheit |
| - | - | - | - |
| `D-Salutation_list` | 100 | Generiert automatisch eine Listbox mit Anreden. Dabei wird die Datei aus der Sektion \<Basic>, Parameter SalutationDat verwendet. | Die erzeugte Listbox besitzt die Styles-klasse „select\_d\_salut“. |
| `D-Salutation_complete` | 100 | Die vollständige Anrede. Zur Erzeugung dieser wiird die Datei aus der Sektion `<Basic>`, Parameter SalutationDat verwendet. | |
| `D-Title_list` | 100 | Generiert automatisch eine Listbox mit Titeln. Dabei wird die Datei aus der Sektion `<Basic>`, Parameter TitleDat verwendet. | Die erzeugte Listbox besitzt die Styles-klasse `„select_d_title"`. |
| `D-Country_list` | 100 | Generiert automatisch eine Listbox mit Ländern. Dabei wird die Datei aus der Sektion `<Basic>`, Parameter CountryDat verwendet. | Die erzeugte Listbox besitzt die Styles-klasse `„select_d_country"`. |
| `D-DateOfBirth_list` | 100 | Generiert automatisch drei Listboxen zur Auswahl des Geburtsdatums. | Die erzeugten Listboxen besitzen die Styles-klasse `„select_d_dateofbirth"`. |

#### Tags von allgemeinen Eingabefeldern

Die Tags der allgemeinen Eingabefelder beginnen alle mit „C-“ und werden aus diesem Prefix, dem HTML-Namen und dem entsprechenden Suffix gebildet.

Es existieren drei Suffixe, die in Kombination mit dem Prefix „C-“ und dem HTML-Namen ein gültiges Tag ergeben:

| Suffix | Beschreibung |
| - | - |
| **\_value** | Der vom Nutzer eingegebene Wert |
| **\_descr** | Die Beschreibung, wie in der Konfigurationsdatei angegeben |
| **\_name** | Der HTML-Name, wie in der Konfigurationsdatei angegeben. |
| **\_max** | Die in der Konfigurationsdatei angegebene maximale Eingabelänge |
| **\_error** | Fehlerhafte Eingabe:   \* Einfaches Tag: Im Fehlerfall wird das Tag durch „\_error“ ersetzt \* Bereichs-Tag: Im Fehlerfall wird der Bereich angezeigt \* neg. Bereichs-Tag: Im Fehlerfall wird der Bereich nicht angezeigt |

Jedes so erzeugte Tag **unterstützt** dabei **alle drei Arten von Tags**.

Konfigurationsdatei:

```
<+CommonInput>
  Allow         	= yes
  Type          	= TextArea
  Name          	= field2
  Descr         	= Bemerkungen
  Required      	= no
</+CommonInput>
```

Template Anfrage:

```
~C-field2_descr~:
<textarea name="~C-field2_name~"></textarea>
```

Template E-Mail:

```
{C-field2_value}
  Usereingabe bei ~C-field2_descr~:
  ~C-field2_value~
{/C-field2_value}

{!C-field2_value}
  User machte keine Angabe zu ~C-field2_descr~
{/!C-field2_value}
```

Hier wird eine Textarea als allgemeines Eingabefeld erstellt, im HTML-Template angezeigt und bei einer Benutzereingabe der Wert bzw. bei keiner Eingabe eine alternative Nachricht in der E-Mail verschickt.

Zusätzlich können die Bereichs- und negativen Bereichs-Tags mit dem Suffix `_value` auf bestimmte eingegebene Werte geklammert werden.

```
{C-field2_value(anfrage)}
  Dieser Bereich wird nur angezeigt, wenn der Kunde im Feld field2 „anfrage“ eingegeben hat.
{/C-field2_value(anfrage)}
```

#### Tags der CAPTCHA-Funktionen

##### Allgemeines Tag

| Tag | Unterstützt | Beschreibung |
| - | - | - |
| `CAPTCHA-Description` | 111 | Gibt die Beschreibung der CAPTCHA-Funktionalität aus.  (Konfigurationsdatei: Abschnitt `<Captcha>`,  Parameter `CaptchaDescription`). |

##### Tags für die Rechenaufgabe und Beispiel

| Tag | Unterstützt | Beschreibung | Besonderheit |
| - | - | - | - |
| `CAPTCHA-Input_name` | 100 | Der HTML-Name des CAPTCHA-Eingabefelds | |
| `CAPTCHA-Input_error` | 111 | Fehlerhafte Eingabe im CAPTCHA-Eingabefeld   \* Einfaches Tag: Im Fehlerfall wird das Tag durch „\_error“ ersetzt \* Bereichs-Tag: Im Fehlerfall wird der Bereich angezeigt \* neg. Bereichs-Tag: Im Fehlerfall wird der Bereich nicht angezeigt | |
| `CAPTCHA-Input_value` | 111 | Der vom Anfragenden eingegebene Wert im CAPTCHA-Eingabefeld | Dieser Wert wird nur **nach korrekter Eingabe** des CAPTCHA- Eingabefelds ausgegeben! |
| `CAPTCHA-Result` | 111 | Die korrekte erwartete CAPTCHA-Eingabe | **NUR ZU TESTZWECKEN VERWENDEN!** |
| `CAPTCHA-ArithmeticOperand1` | 111 | Der erste Operand der Rechenaufgabe | |
| `CAPTCHA-ArithmeticOperand2` | 111 | Der zweite Operand der Rechenaufgabe | |
| `CAPTCHA-ArithmeticOperation` | 111 | Die Rechenoperation der Rechenaufgabe | |

Beispiel:

```
~CAPTCHA-ArithmeticOperand1~
~CAPTCHA-ArithmeticOperation~
~CAPTCHA-ArithmeticOperand2~

=

<input type="text" class="stdinput~CAPTCHA-Input_error~" value="~CAPTCHA-Input_value~" name="~CAPTCHA-Input_name~" size="10" maxlength="10">
```

Hierbei wird das Eingabefeld im Fall einer fehlerhaften Eingabe markiert.

Wurde versucht, das Formular mit richtig gelöster Rechenaufgabe abzusenden, aber andere Eingaben wurden nicht korrekt ausgeführt, muss der Anfragende keine neue Rechenaufgabe lösen, sondern die bereits gelöste Aufgabe wird inklusive korrekt ausgefüllten Eingabefeldes wieder angezeigt.

##### Tags für Google ReCaptcha Version 3 und JavaScript

| Tag | Unterstützt | Beschreibung |
| - | - | - |
| `CAPTCHA-RecaptchaV3SiteKey` | 100 | Site-Key, der von Google bezogen und in `inquiry.config` gesetzt wird |
| `CAPTCHA-RecaptchaV3ApiUrl` | 100 | URL von Google bezogen und in `inquiry.config` gesetzt |
| `CAPTCHA-RecaptchaV3ActionName` | 100 | beispielsweise homepage, login usw., in `inquiry.config` gesetzt |
| `CAPTCHA-RecaptchaV3Error` | 111 | Fehlermeldung von `inquiry.config`, wird im Fehlerfall ausgegeben |
| `CAPTCHA-RecaptchaV3Score` | 111 | Recaptcha Score von Google |
| `CAPTCHA-RecaptchaV3Response` | 111 | technische Antwort von Google, kann zur Fehleranalyse verwendet werden |
| `CAPTCHA-RecaptchaV3ErrorCode` | 111 | interner Fehlercode, kann zur Fehleranalyse verwendet werden |

JavaScript-Code, der auf dem Template eingefügt werden muss:

```
<script src="~CAPTCHA-RecaptchaV3ApiUrl~?render=~CAPTCHA-RecaptchaV3SiteKey~"></script>

<script>
	grecaptcha.ready(function() {
		grecaptcha.execute('~CAPTCHA-RecaptchaV3SiteKey~', {action: '~CAPTCHA-RecaptchaV3ActionName~'}).then(function(token) {
			$("[name='g_recaptcha_token']").val(token);	//Token wird bezogen und sein Wert im input-Element im Formular gespeichert
		});
	});
</script>
```

HTML-Code, der auf dem Formular eingefügt werden muss:

```
<form>
   ...
   <input type="hidden" name="g_recaptcha_token">
   ...
</form>
```

##### Tags für Friendly Captcha

| Tag | Unterstützt | Beschreibung |
| - | - | - |
| `CAPTCHA-FriendlyCaptchaV1ApiUrl` | 111 | URL von Friendly Captcha bezogen und in `inquiry.config` gesetzt |
| `CAPTCHA-FriendlyCaptchaV1ApplicationID` | 111 | ApplicationID aus FriendlyCaptcha Backend |
| `CAPTCHA-FriendlyCaptchaV1Error` | 111 | Fehlermeldung von `inquiry.config`, wird im Fehlerfall ausgegeben |
| `CAPTCHA-FriendlyCaptchaV1Response` | 111 | technische Antwort von Friendly Captcha, kann zur Fehleranalyse verwendet werden |
| `CAPTCHA-FriendlyCaptchaV1ErrorCode` | 111 | interner Fehlercode, kann zur Fehleranalyse verwendet werden |

Code, der auf dem Template eingefügt werden muss:

```
<script
  type="module"
  src="https://cdn.jsdelivr.net/npm/friendly-challenge@0.9.14/widget.module.min.js"
  async
  defer
></script>
<script nomodule src="https://cdn.jsdelivr.net/npm/friendly-challenge@0.9.14/widget.min.js" async defer></script>

<div class="frc-captcha" data-sitekey="~CAPTCHA-FRIENDLYCAPTCHAV1-ApplicationID~" data-puzzle-endpoint="~CAPTCHA-FRIENDLYCAPTCHAV1-APIUrl~" data-start="focus"></div>
```

##### Tags für das CAPTCHA-System captcha.eu

Bitte beachten Sie, dass Sie vor der Integration der Tags in das InquiryPage-Template die entsprechende [Konfiguration in der Formular-Konfiguration](https://dokumentation.websale.de/v8s/upload-modul/formulare-mit-inquiry4/konfigurationsdatei.md#konfiguration-des-captcha-systems-captcha-eu) vorgenommen haben.

| Tag | Unterstützt | Beschreibung |
| - | - | - |
| `CAPTCHA-CaptchaEuPublicKey` | 1110 | Tag für die Ausgabe des in der Konfiguration hinterlegten Public-Keys |
| `CAPTCHA-CaptchaEuValidationURL` | 1110 | Tag für die Ausgabe einer URL für das benötigte CAPTCHA-Javascript |
| `CAPTCHA-CaptchaEuErrorCode` | 1110 | Tag für die Ausgabe der technischen Fehlercode, die dann für die Ausgabe entsprechender Fehlermeldungen oder zum Debuggen verwendet werden können. |
| `CAPTCHA-CaptchaEuError` | 1110 | Tag für die Ausgabe der in der Formular-Konfiguration hinterlegten Fehlermeldungen. |
| `CAPTCHA-CaptchaEuResponse` | 1110 | Tag für die Ausgabe der Server-to-Server Antwort von captcha.eu zum Debuggen. |

Die Integration von [captcha.eu](http://Captcha.eu) erfolgt über ein JavaScript-SDK, das sicherstellt, dass die CAPTCHA-Verifizierung erfolgreich durchgeführt wird, bevor das Formular gesendet wird. Es gibt zwei Möglichkeiten, das CAPTCHA in ein Formular einzubinden:

1. Automatische Überprüfung beim Absenden des Formulars
2. Asynchrone Lösung mit einem versteckten Eingabefeld

**1. Automatische Prüfung beim Absenden (Intercept Submit-Button)**
In dieser Variante wird das Captcha-Skript automatisch beim Absenden des Formulars ausgeführt. Es fängt den Submit-Button ab, prüft das Captcha und sendet das Formular erst nach erfolgreicher Validierung.

```
<script type="text/javascript" src="~CAPTCHA-CaptchaEuValidationURL~"></script>
<script type="text/javascript">
    KROT.setup("~CAPTCHA-CaptchaEuPublicKey~");
    var form = document.getElementById("<ID Ihres Formulars>");
    KROT.interceptForm(form);
</script>
```

**2. Asynchrone Prüfung mit verstecktem Eingabefeld**
Hierbei wird die CAPTCHA-Lösung nach dem Laden der Seite per JavaScript asynchron vom Server abgerufen und in ein verstecktes Feld (`captcha_at_solution`) geschrieben. Beim Absenden des Formulars wird die im Hintergrund gelöste CAPTCHA-Antwort übermittelt.

```
<body>
...
  <form action="~FORM-SSLTemplate(<IHR TEMPLATE>)~" method="POST">
    <input type="hidden" name="captcha_at_solution" id="captcha_at_solution">
    ~INQUIRY-Link~
    ...
    <!-- Ihre Eingabefelder -->
    ...
  </form>
...
  <script type="text/javascript" src="~CAPTCHA-CaptchaEuValidationURL~"></script>
  <script type="text/javascript">
    KROT.setup("~CAPTCHA-CaptchaEuPublicKey~");
    KROT.getSolution()
      .then((solution) => {
      // Die CAPTCHA-Lösung wird als JSON gespeichert
      document.getElementById("captcha_at_solution").value = JSON.stringify(solution);
    });
  </script>
...
</body>
```

#### Tags des PDF-Downloads

| Tag | Unterstützt | Beschreibung | Werte / Beispiele |
| - | - | - | - |
| `PDF-Form` | 111 | Form zur Erzeugung eines PDFs der Anfrage. Wird nur auf der ConfirmPage unterstützt.  Der Bereich wird nicht angezeigt, wenn der Parameter *Allow* in der Sektion *PDF* auf *no* steht. | `{PDF-Form} <form action="~PDF-Form~" method="post">    .... </form> {/PDF-Form}` |
| `PDF-Button` | 111 | Buttonname zur Erzeugung eines PDFs der Anfrage. Wird nur auf der ConfirmPage unterstützt. Der Bereich wird nicht angezeigt, wenn der Parameter *Allow* in der Sektion *PDF* auf *no* steht. Muss innerhalb der PDF-Form stehen. | `{PDF-Form} <form action="~PDF-Form~" method="post">    ...    <input type="submit" name="~PDF-Button~" value="download">    ... </form> {/PDF-Form}` |

#### Tags des Dateiuploads

| Tag | Unterstützt | Beschreibung | Werte / Beispiele |
| - | - | - | - |
| `INQUIRY-Upload` | 011 | Der Bereich wird angezeigt, wenn das WEBSALE-Upload-Modul mit diesem Anfrageformular verwendet werden kann. Dies beinhaltet auch, dass der Upload in der Konfigurationsdatei aktiviert ist (Parameter *Allow* in der Sektion *Upload)* | |
| `UPLOAD-Link` | 100 | Link zum Upload-Modul. Dieser Link kann als Popup oder als iFrame (als iFrame auch innerhalb einer Colorbox) verwendet werden. | |
| `UPLOAD-SSLLink` | 100 | Link zum Upload-Modul im SSL-Modus. Dieser Link kann als Popup oder als iFrame (als iFrame auch innerhalb einer Colorbox) verwendet werden. | |
| `UPLOAD-Data` | 111 | Gibt die Anzahl der hochgeladenen Dateien aus bzw. zeigt an, ob Dateien hochgeladen wurden. | Dieses Tag kann auch als Schleifentag verwendet werden, um Informationen zu den hochgeladenen Dateien anzuzeigen.  Beispiel: Anzeige der hochgeladenen Dateien als Schleife:  `{@UPLOAD-Data} ~UPLOAD-Position~. ~UPLOAD-File~				 {/@UPLOAD-Data}`  Dies erzeugt bei 3 hochgeladenen Dateien (Datei1.txt, Datei2.txt und Datei3.pdf):   1. Datei1.txt 2. Datei2.txt 3. Datei3.pdf |
| `UPLOAD-File` | 100 | Der Dateiname der hochgeladenen Datei. Kann nur innerhalb der Schleife des Tags UPLOAD-Data verwendet werden. | |
| `UPLOAD-Position` | 100 | Die Position der hochgeladenen Datei. Kann nur innerhalb der Schleife des Tags UPLOAD-Data verwendet werden. | |
| `UPLOAD-Descr` | 100 | Die Beschreibung der hochgeladenen Dateien (festgelegt in der Konfigurationsdatei, Sektion *Upload*, Parameter *UploadDescr*) | |
| `UPLOAD-ID` | 111 | Das Einzel-Tag gibt die ID des Uploads aus. | |

#### Design Control Tags

INQUIRY4 unterstützt folgende INQDC-FP-Tags, inkl. Tag-in-Tag-Unterstützung. Hinsichtlich Funktionalität und Arbeitsweise entsprechen diese den DC-FP-Tags im Shop (vgl. WEBSALE-Designer-Dokumentation):

| Tag | Unterstützt | Beschreibung |
| - | - | - |
| `INQDC-FPX` | 111 | X ist frei wählbar, darf aber ausschließlich aus alphanumerischen Zeichen bestehen |
| `INQDC-FPX_set` | 100 | |
| `INQDC-FPX_reset` | 100 | |
| `INQDC-FPX_replace` | 100 | |
| `INQDC-FPX_append` | 100 | |
| `INQDC-FPX_truncate` | 100 | |
| `INQDC-FPX_contains` | 011 | |
| `INQDC-FPX_urlencoding` | 100 | |
| `INQDC-FPX_slice` | 100 | |
| `INQDC-FPX_convertToEncoding` | 100 | |
| `INQDC-FPX_extractTaggedData` | 100 | |
| `INQDC-FPX_length` | 100 | |
| `INQDC-FPX_jsonencoding` | 100 | |
| `INQDC-CompareDigitLT` | 011 | |
| `INQDC-CompareDigitLTE` | 011 | |
| `INQDC-CompareDigitGT` | 011 | |
| `INQDC-CompareDigitGTE` | 011 | |
| `INQDC-CompareDigitIB` | 011 | |
| `INQDC-CompareDigitIBE` | 011 | |
| `INQDC-CompareStringInList` | 011 | |
| `INQDC-IntX` | 111 | X = 1...3 |
| `INQDC-IntX_set` | 100 | |
| `INQDC-IntX_add` | 100 | |
| `INQDC-IntX_sub` | 100 | |
| `INQDC-IntX_mul` | 100 | |
| `INQDC-IntX_div` | 100 | |
| `INQDC-IntX_mod` | 100 | |
| `INQDC-IntX_inc` | 100 | |
| `INQDC-LoopX` | 111 | X = 1...3 |
| `INQDC-LoopX_set` | 100 | |
| `INQDC-LoopX_position` | 100 | |
| `INQDC-DateTime_set` | 100 | |
| `INQDC-DateTime_hours` | 111 | |
| `INQDC-DateTime_minutes` | 111 | |
| `INQDC-DateTime_seconds` | 111 | |
| `INQDC-DateTime_year` | 111 | |
| `INQDC-DateTime_month` | 111 | |
| `INQDC-DateTime_day` | 111 | |
| `INQDC-DateTime_setunixtimestamp` | 100 | |
| `INQDC-DateTime_dayofweek` | 111 | |
| `INQDC-DateTime_unixtimestamp` | 111 | |
| `INQDC-ZeroLoopX` | 111 | |
| `INQDC-ZeroLoopX_set` | 100 | |
| `INQDC-ZeroLoopX_position` | 100 | |
| `INQDC-DynamicLoopX` | 111 | X = 1...3 |
| `INQDC-DynamicLoopX_set` | 100 | |
| `INQDC-DynamicLoopX_settaggeddata` | 100 | |
| `INQDC-DynamicLoopX_setseparator` | 100 | |
| `INQDC-DynamicLoopX_setSeparatorTags` | 100 | |
| `INQDC-DynamicLoopX_position` | 100 | |
| `INQDC-DynamicLoopX_data` | 100 | |

#### Spezielle Tags

Es existieren noch folgende, zusätzliche Tags:

| Tag | Unterstützt | Beschreibung | Werte / Beispiel |
| - | - | - | - |
| `AUTOGENERATE-full` | 100 | Erzeugt automatisch alle Informationen zu einer Anfrage.  Zur Benutzung in E-Mail-Templates vorgesehen. | `~AUTOGENERATE-full~`  Erzeugt folgenden Inhalt in einer E-Mail:  `Generated by Inquiry 4.0, http://www.websale-ag.de -----------------------------------------------------------------  Neue Anfrage / New Inquiry <--- Customer Inquiry ---> ShopID   ihre-ShopIDSubShopID		ihre-SubShopID MallID   ihre-MallID Reference 1180702057381 Subject	Anfrage Date 01.06.2007 Time 14:47 ...  <--- Customer Address ---> Anrede    Herr Firma     Musterfirma ...  <--- Delivery Address ---> Nachname   Mustermann ...  <--- Inquiry ---> - möchte Beratung - Art der Kontaktaufnahme  schriftlich - Anmerkungen  Eine Anregung an die allgemeingültige Anfrage eines allgemeingültigen Anfragenden.  <--- Anhänge ---> ...` |
| `AUTOGENERATE-header` | 100 | Erzeugt automatisch nur den Header einer Anfrage.  Zur Benutzung in E-Mail-Templates vorgesehen. | `~AUTOGENERATE-header~`  Erzeugt folgenden Inhalt in einer E-Mail:  `----------------------------------------------------------------------- Generated by Inquiry 4.0, http://www.websale-ag.de -----------------------------------------------------------------------  Neue Anfrage / New Inquiry  <--- Customer Inquiry ---> ShopID                      	ihre-ShopIDSubShopID		ihre-SubShopIDMallID			ihre-MallID Reference                     	1180702057381 Subject                        	Anfrage Date                           	01.06.2007 Time                           	14:47 Referer                         SubReferer                      IPAdress                      	172.16.1.93` |
| `AUTOGENERATE-addr` | 111 | Erzeugt automatisch nur die Adress-Informationen.  Zur Benutzung in E-Mail-Templates vorgesehen. | `{AUTOGENERATE-addr}   ~AUTOGENERATE-addr~ {/AUTOGENERATE-addr}`  Erzeugt folgenden Inhalt in einer E-Mail:  `<--- Customer Address ---> Anrede   Herr Firma    Musterfirma Titel    Dipl. Ing. ... E-Mail   hans.mustermann@musterdomain.de  <--- Delivery Address ---> ... Vorname  Hans ...` |
| `AUTOGENERATE-common` | 111 | Erzeugt automatisch nur die allgemeinen Anfrageinformationen.  Zur Benutzung in E-Mail-Templates vorgesehen. | `{AUTOGENERATE-common}   ~AUTOGENERATE-common~ {/AUTOGENERATE-common}`  Erzeugt folgenden Inhalt in einer E-Mail:  `<--- Inquiry ---> - möchte Beratung - Angebot Präsentation - Art der Kontaktaufnahme     	schriftlich - mit Anzahl Seiten            	2 - Anmerkungen                  	Eine Anregung an die allgemeingültige Anfrage eines allgemeingültigen Anfragenden.` |
| `AUTOGENERATE-upload` | 111 | Erzeugt automatisch nur die Liste der hochgeladenen Dateien.  Zur Benutzung in E-Mail-Templates vorgesehen. | `{AUTOGENERATE-upload}   ~AUTOGENERATE-upload~ {/AUTOGENERATE-upload}`  Erzeugt folgenden Inhalt in einer E-Mail:  `<--- Anhänge ---> Datei1.txt Datei2.txt Datei3.pdf` |
| `AUTOGENERATE-technical` | 111 | Erzeugt alle Anfrageinformationen in einem Format, welches von technischen Systemen gelesen werden kann.  Zur Benutzung in E-Mail-Templates vorgesehen. | `{AUTOGENERATE-technical}   ~AUTOGENERATE-technical~ {/AUTOGENERATE-technical}`  Erzeugt folgenden Inhalt in einer E-Mail:  `------------------------------------------------ Technical order format ------------------------------------------------  <TechnicalFormat> <Header>    FormatID     = INQUIRY-4    Generator    = INQUIRY-4    Copyright(c) = WEBSALE AG, www.websale-ag.de    Remark       = This File-Format is protected by international copyright laws.    Remark       = Use only with expressed written allowance of WEBSALE AG. </Header>  <ID>    ShopID        = ihre-ShopID   SubShopID		= ihre-SubShopID   MallID		= ihre-MallID    InquiryNumber = 1180702057381    Subject       = Anfrage </ID>  <CustomerAddress>    <Item>       Name        = SalutationCode       Descr       = SalutationCode       Value       = 01    </Item>     <Item>       TechnicalName = A-Company       Name          = firma       Descr         = Firma       Value         = Musterfirma    </Item>    ... </CustomerAddress>  <DeliveryAddress>    ... </DeliveryAddress>  <Inquiry>    <Item>       Name      = beratung       Descr     = - möchte Beratung       Value     = on    </Item>     <Item>       Name      = anmerkungen       Descr     = - Anmerkungen       <value>         Eine Anregung an die allgemeingültige Anfrage eines allgemeingültigen Anfragenden.       </value>    </Item> ... </Inquiry> </TechnicalFormat>` |
| `INFO-ShopID` | 100 | Die beim ersten Aufruf übergebene ShopID. | `~INFO-ShopID~` |
| `INFO-SubShopID` | 100 | Die beim ersten Aufruf übergebene SubShopID. | `~INFO-SubShopID~` |
| `INFO-MallID` | 100 | Die verwendete MallID. | `~INFO-MallID~` |
| `INFO-Reference` | 100 | Die eindeutige Referenznummer der Anfrage. | `~INFO-Reference~` |
| `INFO-Subject` | 100 | Der Betreff der Anfrage-E-Mail.  (Konfigurationsdatei: Sektion \<InquiryEmail>, Parameter:EMailSubject) | `~INFO-Subject~` |
| `INFO-Date` | 100 | Datum der Anfrage. Format: TT.MM.JJJJ | `~INFO-Date~` |
| `INFO-Time` | 100 | Uhrzeit der Anfrage. Format: HH:MM | `~INFO-Time~` |
| `INFO-Referer` | 111 | Der beim ersten Aufruf übergebene Referer | `{INFO-Referer}   ~INFO-Referer~ {/INFO-Referer}` |
| `INFO-Subreferer` | 111 | Der beim ersten Aufruf übergebene SubReferer. | `{INFO-Subreferer}   ~INFO-Subreferer~ {/INFO-Subreferer}` |
| `INFO-IPAddr` | 100 | Die IP-Adresse des Users  Bei Integration eines Inquiry über die ExternInclude-Technologie gibt der Tag immer die Adresse des WEBSALE Servers aus. | `~INFO-IPAddr~` |
| `INFO-ExternIPAddr` | 100 | Die IP-Adresse des Users  Bei Integration eines Inquiry über die ExternInclude-Technologie gibt dieses Tag die IP-Adresse des Users aus. | `~INFO-ExternIPAddr~` |
| `INFO-ExternIPAddrTimeStamp` | 111 | Der zugehörige Zeitstempel bei Verwendung von ExternInclude | `{INFO-ExternIPAddrTimeStamp}   ~INFO-ExternIPAddrTimeStamp~ {/INFO-ExternIPAddrTimeStamp}` |
| `INFO-ExternSessionID` | 111 | SessionID des WEBSALE-Shops bei Verwendung von ExternInclude | `{INFO-ExternSessionID}   ~INFO-ExternSessionID~ {/INFO-ExternSessionID}` |
| `INFO-ATitleCode` | 100 | Der zum Titel der Rechnungsanschrift gehörende Code. | `~INFO-ATitleCode~` |
| `INFO-DTitleCode` | 100 | Der zum Titel der Lieferanschrift gehörende Code. | |
| `INFO-ASalutationCode` | 100 | Der zur Anrede der Rechnungsanschrift gehörende Code. | |
| `INFO-DSalutationCode` | 100 | Der zur Anrede der Lieferanschrift gehörende Code. | |
| `INQUIRY-SendUserEmail_name` | 100 | Der Name des HTML-Elements zur Steuerung der Bestätigungsemail durch den Benutzer wie in der Konfigurationsdatei festgelegt. | |
| `INQUIRY-SendUserEmail_descr` | 100 | Die textuelle Beschreibung des HTML-Elements zur Steuerung der Bestätigungsemail durch den Benutzer wie in der Konfigurationsdatei angegeben. | |
| `INQUIRY-SendUserEmail_value` | 111 | Der vom Benutzer ausgewählte Wert. | |
| `INQUIRY-AlreadySent` | 011 | Hiermit kann auf dem Antworttemplate geklammert werden, ob eine Anfrage bereits abgesendet wurde bzw. der Benutzer zu lange inaktiv war. Fehlt dieser Bereich auf dem Antworttemplate und dieser Fall tritt ein, wird ein Standardfehlertemplate angezeigt. | |
| `INQUIRY-NewInquiryLink` | 111 | WICHTIG: Dieses Tag wird nur angezeigt bzw. der Link erzeugt, wenn INQUIRY4 NICHT im per ExternInclude eingebunden wird!  Soll ein Link dieser Art per ExternInclude eingebunden werden, so kann ein WEBSALE-Link verwendet werden:  `~WS-LoadTpl(<Template mit ExternInclude>)~`  Erzeugt einen Link zum erneuten Aufruf von INQUIRY4 mit der aktuellen Konfiguration. | |
| `INQUIRY-Link` | 100 | Die Form-URL zum Aufruf von INQUIRY4 . | `... <form action="~INQUIRY-Link~" method="POST"> 	... </form> ...` |
| `INQUIRY-ReloadButton` | 100 | Buttonname zum Aktualisieren der Anfrage. Es werden alle eingegebenen Daten aufgenommen und die Liste der hochgeladenen Dateien aktualisiert. Die eingegebenen Daten werden nicht geprüft und die Anfrage wird nicht abgesendet. | |
| `MSG-Notify` | 100 | Zeigt den allgemeinen Fehlertext an. (Konfigurationsdatei: Sektion `<ErrorMessages>`, Parameter Error). | Dieser Text wird nicht beim ersten Aufruf von INQUIRY4 angezeigt. |
| `MSG-Input_error` | 111 | Erzeugt eine detaillierte Liste der fehlerhaften Eingaben. | Es wird eine ul/li Liste erzeugt. Verwendete Stylesheet-Klassen: `″input_error_ul″`, `″input_error_li″`.  Die Reihenfolge der Meldungen in dieser Liste ist dieselbe wie die der zugehörigen Sektionen in der Konfigurationsdatei. |
| `URL-Template` | 100 | Wird durch die URL auf das Template-Verzeichnis ersetzt. | `... <base href=″~URL-Template″> ...` |

### Regeln für ein HTML-E-Mail-Template

Damit eine HTML-E-Mail versendet werden kann, müssen beim Erstellen eines HTML-E-Mail-Templates folgende Regeln beachtet werden:

Die Adressbasis (base href) innerhalb des \<head>-Elements muss vorhanden sein und mit „http\://“ oder ″https\://″ beginnen,

```
<html>
  <head>
		...
		<base href=″http://websale-ag.de″>
		...
  </head>

  <body>
    ...
  </body>

</html>
```

Alle relativen Links und Links zu Bildern oder Style-Dateien müssen in Anführungszeichen stehen.

```
<html>
...
<link rel=″stylesheet″ href=″styles.css″>
...
<img src=″pic1.png″>
…
<a href=″site2.htm″>Link</a>
...
</html>
```

Alle absoluten Links müssen mit ″http\://″ oder ″https\://″ beginnen

Alle Bilder werden als Anhänge mitgeschickt, da das Verlinken von externen Bildern in einer HTML-E-Mail das Risiko, dass diese E-Mail als Spam eingestuft wird, wesentlich erhöht!

## Verwandte Themen

* [Formulare mit INQUIRY4](https://dokumentation.websale.de/v8s/upload-modul/formulare-mit-inquiry4.md)


## Related topics

- [Download-Template: Tags](https://dokumentation.websale.de/v8s/referenz/tags/download-template-tags.md)
- [Templates und Tags für Produktempfehlung](https://dokumentation.websale.de/v8s/produktweiterempfehlung/templates-und-tags-fuer-produktempfehlung.md)
- [Mehrere Adressen: Tags je Template](https://dokumentation.websale.de/v8s/referenz/tags/multiple-adressen.md)
- [DC- (Vergleiche und weitere Tags)](https://dokumentation.websale.de/v8s/referenz/tags/dc/vergleiche.md)
- [Template Engine](https://dokumentation.websale.de/frontend/die-basics/template-engine.md)


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