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

# Download-Template: Tags

> Die Tags des Download-Templates: Fehlermeldung, Eingabe der Download-ID, Liste der Bestellungen und Liste der Download-Dateien.

Verkauft ein Shop Download-Produkte, bekommt der Käufer nach der Bestellung eine Download-ID. Damit ruft er eine eigene Seite auf, auf der seine Dateien zum Herunterladen bereitstehen. Diese Seite ist das Download-Template.

Das Template enthält **vier Abschnitte**, von denen der Shop jeweils nur einen anzeigt. Welcher es ist, entscheidet sich aus dem Aufruf: mit gültiger Download-ID, ohne ID, nach der Anmeldung im Shop oder nach einem Fehler.

Wegweiser: [Download-Produkte anbieten](https://dokumentation.websale.de/v8s/produkte/download-produkte-anbieten.md)

| Abschnitt | Wird angezeigt |
| - | - |
| `DownloadError` | wenn ein Download nicht möglich war |
| `DownlIdInput` | wenn der Aufruf ohne Download-ID erfolgte |
| `OrderList` | wenn ein angemeldeter Käufer seine Bestellungen mit Download-Produkten aufruft |
| `ArticleList` | wenn die Dateien einer Bestellung angezeigt werden |

> [!WARNING]
>
> Die Tags dieses Templates tragen kein Präfix. `Msg`, `OrderNumber` oder `File` heißen genau so und gelten nur hier. Mit den gleichnamigen Tags anderer Templates haben sie nichts zu tun.

Jeder Abschnitt wird als Bereich geklammert. Was außerhalb aller vier Bereiche steht, beispielsweise Kopf- und Fußzeile, erscheint immer.

## Der Aufbau des Templates

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{DownloadError}
   <!-- Ein Download war nicht möglich -->
{/DownloadError}

{DownlIdInput}
   <!-- Der Käufer soll seine Download-ID eingeben -->
{/DownlIdInput}

{OrderList}
   <!-- Die Bestellungen des angemeldeten Käufers -->
{/OrderList}

{ArticleList}
   <!-- Die Dateien einer Bestellung -->
{/ArticleList}
```

## DownloadError: der Fehlerfall

Dieser Abschnitt erscheint, wenn ein angeforderter Download nicht ausgeliefert wurde, beispielsweise weil die Anzahl der erlaubten Downloads erschöpft oder der Zeitraum abgelaufen ist.

| Tag | Liefert |
| - | - |
| `DownloadID` | die Download-ID |
| `PrdName` | den Namen des Produkts |
| `ErrMsg` | die Fehlermeldung |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{DownloadError}
   <h1>Download nicht möglich</h1>
   <p>~ErrMsg~</p>
   <p>Betroffenes Produkt: ~PrdName~ (Download-ID ~DownloadID~)</p>
{/DownloadError}
```

Der Text in `ErrMsg` stammt aus den Fehlermeldungen des Download-Moduls. In den Meldungen zur überschrittenen Anzahl und zum abgelaufenen Zeitraum dürfen die Platzhalter `~maxdownloads~` und `~expdt~` stehen. Der Shop ersetzt sie durch die erlaubte Anzahl beziehungsweise das Ablaufdatum.

## DownlIdInput: die Eingabe der Download-ID

Dieser Abschnitt erscheint, wenn die Seite ohne Download-ID aufgerufen wurde oder die angegebene ID nicht stimmt. Der Käufer bekommt dann ein Eingabefeld.

| Tag | Liefert |
| - | - |
| `Msg` | einen allgemeinen Hinweistext |
| `DownloadID` | die zuletzt angegebene Download-ID |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{DownlIdInput}
   <p>~Msg~</p>
   <form method="post">
      <label for="downloadid">Ihre Download-ID</label>
      <input type="text" id="downloadid" name="DownloadId" value="~DownloadID~">
      <button type="submit">Weiter</button>
   </form>
{/DownlIdInput}
```

`Msg` enthält im Fehlerfall den Hinweis auf die ungültige ID und ist sonst leer. Ein eigener Einleitungstext gehört deshalb fest ins Template und nicht in dieses Tag.

> [!WARNING]
>
> Zwischen zwei Download-Versuchen wartet der Shop bewusst eine Sekunde, damit sich Download-IDs nicht durchprobieren lassen. Bauen Sie deshalb keine automatischen Wiederholungen in das Formular ein.

## OrderList: die Bestellungen des Käufers

Dieser Abschnitt erscheint, wenn ein im Shop angemeldeter Käufer seine Bestellungen mit Download-Produkten aufruft.

| Tag | Liefert |
| - | - |
| `Msg` | einen allgemeinen Hinweistext |
| `Orders` | die Schleife über die Bestellungen |
| `NoOrders` | greift, wenn es keine Bestellung mit Download-Produkten gibt |
| `OrderNumber` | die Bestellnummer |
| `OrderDateTime` | Datum und Uhrzeit |
| `ShowArtsUrl` | die Adresse, unter der die Dateien dieser Bestellung erscheinen |
| `DownloadAllowed` | greift, wenn mindestens eine Datei noch heruntergeladen werden darf |
| `DownloadDone` | greift, wenn mindestens eine Datei bereits heruntergeladen wurde |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{OrderList}
   <p>~Msg~</p>

   {NoOrders}
      <p>Sie haben noch keine Bestellung mit Download-Produkten.</p>
   {/NoOrders}

   <ul>
      {@Orders}
         <li>
            <a href="~ShowArtsUrl~">Bestellung ~OrderNumber~ vom ~OrderDateTime~</a>
            {DownloadAllowed}<span class="offen">Downloads möglich</span>{/DownloadAllowed}
            {DownloadDone}<span class="erledigt">bereits heruntergeladen</span>{/DownloadDone}
         </li>
      {/@Orders}
   </ul>
{/OrderList}
```

> [!WARNING]
>
> `Orders` ist ein reines Schleifen-Tag und wird mit `{@Orders}` geöffnet. Eine einfache Klammerung `{Orders}` bleibt wirkungslos. Für die Frage, ob es überhaupt Bestellungen gibt, ist `NoOrders` da.

`OrderDateTime` ist der Zeitpunkt, zu dem die Download-Produkte in die Download-Verwaltung aufgenommen wurden. Das ist in der Regel der Bestellzeitpunkt, muss ihm aber nicht auf die Sekunde entsprechen.

`DownloadAllowed` und `DownloadDone` schließen sich nicht aus. Eine Bestellung mit mehreren Dateien kann beides zugleich sein.

## ArticleList: die Dateien einer Bestellung

Dieser Abschnitt zeigt die Download-Produkte einer Bestellung.

| Tag | Liefert |
| - | - |
| `Msg` | einen allgemeinen Hinweistext |
| `OrderNumber` | die Bestellnummer |
| `DownloadID` | die Download-ID |
| `Articles` | die Schleife über die Produkte |
| `PrdName` | den Produktnamen |
| `PrdNumber` | die Produktnummer |
| `PrdThumbnailURL` | die Adresse des Vorschaubildes |
| `File` | den Dateinamen |
| `FileSize` | die Dateigröße in passender Einheit |
| `DownloadsDone` | die Anzahl der bereits erfolgten Downloads |
| `Downloads` | die Anzahl der erlaubten Downloads |
| `ValidDateTime` | den Zeitpunkt, bis zu dem heruntergeladen werden darf |
| `DownloadAllowed` | greift, wenn die Datei noch heruntergeladen werden darf |
| `DownloadUrl` | die Adresse, die den Download startet |
| `Back` | greift, wenn der Aufruf aus `OrderList` kam |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{ArticleList}
   <p>~Msg~</p>
   <h1>Bestellung ~OrderNumber~</h1>

   <table>
      {@Articles}
         <tr>
            <td>
               {PrdThumbnailURL}<img src="~PrdThumbnailURL~" alt="">{/PrdThumbnailURL}
            </td>
            <td>
               ~PrdName~<br>
               <small>~PrdNumber~</small>
            </td>
            <td>~File~ (~FileSize~)</td>
            <td ~ddwrnclass~>~DownloadsDone~ von ~Downloads~</td>
            <td ~vdwrnclass~>~ValidDateTime~</td>
            <td>
               {DownloadAllowed}
                  <a href="~DownloadUrl~">Herunterladen</a>
               {/DownloadAllowed}
               {!DownloadAllowed}
                  <span>nicht mehr verfügbar</span>
               {/!DownloadAllowed}
            </td>
         </tr>
      {/@Articles}
   </table>

   {Back}
      <a href="javascript:history.back()">Zurück zur Übersicht</a>
   {/Back}
{/ArticleList}
```

> [!WARNING]
>
> Auch `Articles` ist ein reines Schleifen-Tag und wird mit `{@Articles}` geöffnet.

### Was die Zähler wirklich ausgeben

`Downloads` und `ValidDateTime` geben nicht immer eine Zahl beziehungsweise ein Datum aus. Ist die Anzahl unbegrenzt, steht dort der Text für "unbegrenzt", ebenso beim Zeitraum. Wurde der Download gestoppt, steht in `ValidDateTime` der Text für "gestoppt". Rechnen Sie im Template deshalb nicht mit diesen Werten.

`FileSize` gibt einen Bindestrich aus, wenn die Datei auf dem Server nicht mehr vorhanden ist. Das ist der schnellste Weg, ein verschwundenes Download-Produkt zu erkennen.

`File` enthält nur den Dateinamen ohne Verzeichnis, und `DownloadUrl` ist nur dann gefüllt, wenn der Download tatsächlich noch erlaubt ist. Setzen Sie den Link deshalb innerhalb von `{DownloadAllowed}`.

### Erschöpfte und abgelaufene Downloads hervorheben

Zwei weitere Tags liefern eine fertige CSS-Klasse für den Warnfall.

| Tag | Liefert |
| - | - |
| `ddwrnclass` | ein `class`-Attribut, wenn die erlaubte Anzahl erreicht ist |
| `vdwrnclass` | ein `class`-Attribut, wenn der Zeitraum abgelaufen ist |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<td ~ddwrnclass~>~DownloadsDone~ von ~Downloads~</td>
<td ~vdwrnclass~>~ValidDateTime~</td>
```

Die Tags geben das vollständige Attribut aus, also `class='warning'`, und sonst nichts. Sie gehören deshalb ohne eigenen Attributnamen direkt in das öffnende Element.

## Die Tags im Überblick

| Tag | Abschnitt | Einzel-Tag | Bereichs-Tag | negatives Bereichs-Tag | Schleifen-Tag |
| - | - | - | - | - | - |
| `DownloadError` | Template | – | ja | ja | – |
| `DownlIdInput` | Template | – | ja | ja | – |
| `OrderList` | Template | – | ja | ja | – |
| `ArticleList` | Template | – | ja | ja | – |
| `DownloadID` | DownloadError, DownlIdInput, ArticleList | ja | – | – | – |
| `PrdName` | DownloadError, ArticleList | ja | – | – | – |
| `ErrMsg` | DownloadError | ja | – | – | – |
| `Msg` | DownlIdInput, OrderList, ArticleList | ja | – | – | – |
| `Orders` | OrderList | – | – | – | ja |
| `NoOrders` | OrderList | – | ja | ja | – |
| `OrderNumber` | OrderList, ArticleList | ja | – | – | – |
| `OrderDateTime` | OrderList, ArticleList | ja | – | – | – |
| `ShowArtsUrl` | OrderList | ja | – | – | – |
| `DownloadAllowed` | OrderList, ArticleList | – | ja | ja | – |
| `DownloadDone` | OrderList | – | ja | ja | – |
| `Articles` | ArticleList | – | – | – | ja |
| `PrdNumber` | ArticleList | ja | – | – | – |
| `PrdThumbnailURL` | ArticleList | ja | ja | ja | – |
| `File` | ArticleList | ja | – | – | – |
| `FileSize` | ArticleList | ja | – | – | – |
| `DownloadsDone` | ArticleList | ja | – | – | – |
| `Downloads` | ArticleList | ja | – | – | – |
| `ValidDateTime` | ArticleList | ja | – | – | – |
| `DownloadUrl` | ArticleList | ja | – | – | – |
| `ddwrnclass` | ArticleList | ja | – | – | – |
| `vdwrnclass` | ArticleList | ja | – | – | – |
| `Back` | ArticleList | – | ja | ja | – |

Zulässig sind alle Tags ausschließlich im Download-Template, jeweils innerhalb des angegebenen Abschnitts.

## Verwandte Themen

* Wegweiser: [Download-Produkte anbieten](https://dokumentation.websale.de/v8s/produkte/download-produkte-anbieten.md)
* Wegweiser: [Upload-Modul](https://dokumentation.websale.de/v8s/upload-modul/upload-modul.md)
* Wegweiser: [Kundenkonto](https://dokumentation.websale.de/v8s/zahlungsarten-anlegen/kundenkonto.md)


## Related topics

- [Download-Produkte anbieten](https://dokumentation.websale.de/v8s/produkte/download-produkte-anbieten.md)
- [Tags und Templates](https://dokumentation.websale.de/v8s/upload-modul/formulare-mit-inquiry4/tags-und-templates.md)
- [Kaufgutscheine zum Ausdrucken](https://dokumentation.websale.de/v8s/gutscheine-anbieten/kaufgutscheine-zum-ausdrucken.md)
- [Mehrere Adressen: Tags je Template](https://dokumentation.websale.de/v8s/referenz/tags/multiple-adressen.md)
- [Templates und Tags für Produktempfehlung](https://dokumentation.websale.de/v8s/produktweiterempfehlung/templates-und-tags-fuer-produktempfehlung.md)


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