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

# Kaufgutscheine mit mehreren Motiven anbieten

> Den Käufer zwischen mehreren Gutscheinmotiven wählen lassen und das gewählte Motiv bis in die PDF-Datei durchreichen.

Kaufgutscheine zum Ausdrucken erscheinen standardmäßig alle im selben Layout. Soll der Käufer zwischen mehreren Motiven wählen können, etwa einem für Geburtstage und einem für Weihnachten, legen Sie **je Motiv ein eigenes Produkt** an und reichen den Dateinamen des Motivs bis in das PDF-Template durch.

![Kaufgutscheine mit mehreren Motiven](https://mintcdn.com/websaleag-44ee7ea6/HEgVg_TjwqZgFr_g/images/20180417_kaufgutschein-mehrere-motive.png?fit=max\&auto=format\&n=HEgVg_TjwqZgFr_g\&q=85\&s=4f78f0cc2332e05b979ac04ae580898d)

## Was dieses Beispiel zusätzlich braucht

Diese Seite beschreibt nur die Unterschiede. Alles Übrige, von der Freischaltung über das Anlegen der Gutscheinprodukte bis zur Fehlermeldung, steht auf der Seite zur Grundfunktion und gilt unverändert.

Wegweiser: [Kaufgutscheine zum Ausdrucken](https://dokumentation.websale.de/v8s/gutscheine-anbieten/kaufgutscheine-zum-ausdrucken.md)

| Was | Wo |
| - | - |
| je Motiv ein eigenes Produkt, dazu ein Produktdatenfeld für den Dateinamen | neu, siehe unten |
| das Feld in den Warenkorb übernehmen | neu, siehe unten |
| Download-Link um das Motiv ergänzen | ersetzt Schritt 7 der Grundfunktion |
| Motiv im PDF-Template ausgeben | ergänzt Schritt 8.2 der Grundfunktion |
| Download-Link in der Bestellhistorie ergänzen | ersetzt Schritt 10 der Grundfunktion |

## Ein Produkt je Motiv

Die Gutscheinprodukte sind bis auf das Motiv identisch. Für drei Motive legen Sie drei Produkte mit denselben Einstellungen an, auch mit demselben Inhalt im Feld `InstantVoucherProduct`.

Dazu kommt ein freies Produktdatenfeld, das den Dateinamen des Motivs aufnimmt, im Folgenden `IS_ZUSATZ00`. Die Bilddateien legen Sie unter `benutzer/navigation/grafiken` ab.

Hinterlegen Sie dort zusätzlich ein Standardmotiv, beispielsweise `img_instantVoucher_default.jpg`. Das PDF-Template greift darauf zurück, wenn kein Motiv übergeben wurde.

> [!WARNING]
>
> Die Motive landen in einer Datei, die der Käufer ausdruckt. Stellen Sie sie deshalb in Druckauflösung bereit, als Anhaltspunkt 150 dpi bezogen auf die gedruckte Größe. Ein Bildschirmbild mit 72 dpi sieht auf Papier ausgefranst aus.

Der Name `IS_ZUSATZ00` kommt auf dieser Seite in jedem Codebeispiel vor. Wenn Sie das Feld anders benennen, passen Sie alle Stellen an.

## Das Motiv in den Warenkorb übernehmen

Ein freies Produktdatenfeld steht im Warenkorb und in der Bestellung nur zur Verfügung, wenn es dafür freigegeben ist. Ergänzen Sie es in der `shop.config`:

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<AdditionalProductFieldsInBasket>
   +Field = IS_ZUSATZ00
</AdditionalProductFieldsInBasket>
```

> [!WARNING]
>
> Ohne diesen Eintrag bleiben die Tags `BASKET-PR-AF-IS_ZUSATZ00` und `OH-P-AF-IS_ZUSATZ00` in den folgenden Beispielen leer. Der Käufer bekommt dann immer das Standardmotiv, und zwar ohne jede Fehlermeldung.

Referenz: [Abschnitt AdditionalProductFieldsInBasket](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/warenkorb-und-bestellprozess.md#additionalproductfieldsinbasket) · Wegweiser: Freie Produktfelder im Warenkorb anzeigen

## Den Download-Link um das Motiv ergänzen

Statt des Beispiels aus Schritt 7 der Grundfunktion:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{@BASKET-PR-Data}
   {BASKET-PR-InstantVoucherProduct}
      {BASKET-PR-InstantVoucherProductData}
         {@BASKET-PR-InstantVoucherProductData}
            Gutscheinnummer: ~BASKET-PR-InstantVoucherProductData_VoucherNumber~
            <a href="~WS-Start~~BASKET-PR-InstantVoucherProductData_PDFLinkPart~{BASKET-PR-AF-IS_ZUSATZ00}&amp;otp3=~BASKET-PR-AF-IS_ZUSATZ00~{/BASKET-PR-AF-IS_ZUSATZ00}">
               Gutschein herunterladen
            </a>
         {/@BASKET-PR-InstantVoucherProductData}
      {/BASKET-PR-InstantVoucherProductData}
   {/BASKET-PR-InstantVoucherProduct}
{/@BASKET-PR-Data}
```

| Teil | Aufgabe |
| - | - |
| `{BASKET-PR-AF-IS_ZUSATZ00}…{/…}` | hängt den Parameter nur an, wenn für dieses Produkt überhaupt ein Motiv hinterlegt ist |
| `&amp;otp3=` | übergibt den Dateinamen als freien Parameter an das PDF-Template |

`otp3` ist einer von drei freien Parametern, die WEBSALE V8s an ein Template durchreicht. Im Template lesen Sie ihn mit `WS-OTP3`. Die Ziffer ist frei wählbar, `otp1` und `otp2` funktionieren genauso, solange sie nicht schon für etwas anderes belegt sind.

Referenz: [BASKET-PR-AF-](https://dokumentation.websale.de/v8s/referenz/tags/basket/besondere-produktarten-im-warenkorb.md)"technische ID" · WS-OTPX

## Das Motiv im PDF-Template ausgeben

Im Template aus Schritt 8.2 der Grundfunktion kommt die Ausgabe des Bildes dazu.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
Gutschein
Betrag:     ~INSTANTVOUCHER-Amount~ ~INSTANTVOUCHER-CurrencyCode~ ~INSTANTVOUCHER-CurrencySymbol~
Nummer:     ~INSTANTVOUCHER-VoucherNumber~

{WS-OTP3}
   {DC-CompareStringInList($WS-OTP3$,"motiv_geburtstag.jpg,motiv_weihnachten.jpg,motiv_hochzeit.jpg")}
      <img src="../~WS-OTP3~" alt="Gutscheinmotiv">
   {/DC-CompareStringInList($WS-OTP3$,"motiv_geburtstag.jpg,motiv_weihnachten.jpg,motiv_hochzeit.jpg")}
   {!DC-CompareStringInList($WS-OTP3$,"motiv_geburtstag.jpg,motiv_weihnachten.jpg,motiv_hochzeit.jpg")}
      <img src="../img_instantVoucher_default.jpg" alt="Gutscheinmotiv">
   {/!DC-CompareStringInList($WS-OTP3$,"motiv_geburtstag.jpg,motiv_weihnachten.jpg,motiv_hochzeit.jpg")}
{/WS-OTP3}

{!WS-OTP3}
   <img src="../img_instantVoucher_default.jpg" alt="Gutscheinmotiv">
{/!WS-OTP3}
```

> [!WARNING]
>
> **Prüfen Sie den Wert, bevor Sie ihn in den Pfad schreiben.**
>
> Der Gutscheinteil der Adresse ist verschlüsselt und mit einer Prüfsumme versehen. Der Motivparameter ist es nicht: Er steht offen in der Adresszeile und lässt sich dort durch einen beliebigen anderen Wert ersetzen. Wandert er ungeprüft in das `src`-Attribut, bestimmt der Aufrufer, welche Datei vom Server in die erzeugte PDF-Datei gerät.
>
> Der Abgleich gegen eine Liste der zugelassenen Dateinamen kostet eine Zeile je Motiv und schließt das aus. Pflegen Sie die Liste mit, wenn ein Motiv dazukommt.

Die beiden Klammerungen am Ende fangen den Fall ab, dass gar kein Motivparameter übergeben wurde, beispielsweise bei einem Gutschein aus der Zeit vor der Umstellung. Ohne sie bliebe die Stelle im Gutschein leer.

Referenz: WS-OTPX · [DC-CompareStringInList()](https://dokumentation.websale.de/v8s/referenz/tags/dc/vergleiche.md) · [INSTANTVOUCHER-](https://dokumentation.websale.de/v8s/referenz/tags/instantvoucher-kaufgutscheine.md)

## Den Link in der Bestellhistorie ergänzen

Statt des Beispiels aus Schritt 10 der Grundfunktion:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{@OH-S-Item}
   ~DC-FP1_set($OH-P-AF-IS_ZUSATZ00$)~
   {@OH-S-InstantVoucherProduct}
      <a href="~WS-EnsureNextLinkContainsURLParams~~WS-Start~~OH-P-PDFLinkPart~&amp;otp3=~DC-FP1~">
         Gutschein ausdrucken
      </a>
      Gutscheinnummer: ~OH-P-Number~
   {/@OH-S-InstantVoucherProduct}
{/@OH-S-Item}
```

Der Umweg über den freien Parameter `DC-FP1` ist nötig, weil das Motiv an der Position hängt und innerhalb der Gutscheinschleife nicht mehr zur Verfügung steht. Deshalb wird es davor einmal zwischengespeichert.

`WS-EnsureNextLinkContainsURLParams` stellt sicher, dass die erzeugte Adresse überhaupt einen Parameterteil bekommt, an den sich der Motivparameter anhängen lässt.

> [!WARNING]
>
> Auch hier gilt die Prüfung aus dem vorigen Abschnitt. Sie findet im PDF-Template statt und deckt beide Wege ab, den aus der Bestellbestätigung und den aus der Bestellhistorie.

Referenz: [OH-P-AF-](https://dokumentation.websale.de/v8s/referenz/tags/oh-bestellhistorie.md)"technische ID" · [DC-FPX\_set()](https://dokumentation.websale.de/v8s/referenz/tags/dc/parameter.md#die-tags-im-uberblick) · [WS-EnsureNextLinkContainsURLParams](https://dokumentation.websale.de/v8s/referenz/tags/ws/shop-seite-und-technik.md#die-tags-im-uberblick) · [WS-Start](https://dokumentation.websale.de/v8s/referenz/tags/basket/gutscheine-im-warenkorb.md#kaufgutscheine-als-produkt)

## Verwandte Themen

* Wegweiser: [Kaufgutscheine zum Ausdrucken](https://dokumentation.websale.de/v8s/gutscheine-anbieten/kaufgutscheine-zum-ausdrucken.md)
* Wegweiser: [Gutscheine anlegen oder importieren](https://dokumentation.websale.de/v8s/gutscheine-anbieten/gutscheine-anlegen-oder-importieren.md)
* Wegweiser: [Freie Produktfelder im Warenkorb anzeigen](https://dokumentation.websale.de/v8s/warenkorb/freie-produktfelder-im-warenkorb-anzeigen.md)
* Referenz: [INSTANTVOUCHER-](https://dokumentation.websale.de/v8s/referenz/tags/instantvoucher-kaufgutscheine.md)


## Related topics

- [Anwendungsbeispiele](https://dokumentation.websale.de/v8s/anwendungsbeispiele/anwendungsbeispiele.md)
- [Kaufgutscheine zum Ausdrucken](https://dokumentation.websale.de/v8s/gutscheine-anbieten/kaufgutscheine-zum-ausdrucken.md)
- [Gutscheine mit mehreren Währungen](https://dokumentation.websale.de/v8s/gutscheine-anbieten/gutscheine-mit-mehreren-waehrungen.md)
- [Gutscheine anbieten: Übersicht](https://dokumentation.websale.de/v8s/gutscheine-anbieten/gutscheine-anbieten-uebersicht.md)
- [INSTANTVOUCHER- (Kaufgutscheine zum Ausdrucken)](https://dokumentation.websale.de/v8s/referenz/tags/instantvoucher-kaufgutscheine.md)


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