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

# Grundlagen und Technik

> Die technische Grundlage der Shopkonfiguration shop.config: Grundeinstellungen im Abschnitt Basic, Domains, Templates, Design- und Include-Technik, Sitzungen und CSRF-Schutz, SEO-Einstellungen und die Ableitung von Referern.

Die Shopkonfiguration shop.config hält die kaufmännischen Vorgaben eines Shops und alle Texte, die im Shop erscheinen. Jeder Subshop hat eine eigene shop.config, und genau dadurch lassen sich Subshops zielgruppen- und länderspezifisch zuschneiden. Im deutschen Shop steht dort Nachnahme und DHL, im englischen weder das eine noch das andere, dafür UPS. Bearbeitet wird die Datei im Online-Servicebereich.

Diese Seite behandelt die technische Grundlage: Was weiß der Shop über sich selbst, unter welcher Domain läuft er, welche Templates verwendet er, wie werden Inhalte eingebunden und wie verhält er sich gegenüber Suchmaschinen.

Für Subshops mit sprach- oder zielgruppenabhängigen Konfigurationen steht im Online-Servicebereich die Textpflege-Plattform zur Verfügung. Damit führen Sie Übersetzungen und Textänderungen an einer Stelle durch und übernehmen sie automatisiert in die einzelnen Konfigurationen.

Die übrigen Abschnitte der shop.config stehen auf diesen Seiten:

| Seite | Inhalt |
| - | - |
| Texte und Meldungen | Schaltflächen, Überschriften, Hinweis- und Fehlermeldungen |
| Kunde, Anmeldung und Kundenkonto | Anmeldung, Passwortregeln, Kundenkonto, Kundendatenfelder |
| Adressen und Eingabeprüfungen | Adressfelder, Suffixfelder, Eingabeprüfungen |
| Zahlungsarten | alle Zahlungsarten und ihre Abhängigkeiten |
| Versand und Lieferung | Versandarten, Lieferanten, Liefertermine, Teillieferung |
| Preise, Steuern und Währung | Mehrwertsteuer, Währungen, Preisformat, Bonuspunkte |
| Warenkorb und Bestellprozess | Warenkorb, Bestellbedingungen, Bestelloptionen |
| Produkte, Katalog und Suche | Kategorien, Sortierung, Suche, Lagerbestand, Bewertungen |
| E-Mails | alle vom Shop versendeten E-Mails |
| Externe Dienste und Schnittstellen | Einwilligungen, Captchas, Tracking, Upload, Schnittstellen |

## Basic

Der Abschnitt `Basic` hält die übergreifenden Grundeinstellungen des Shops. Er ist der einzige Abschnitt, ohne den ein Shop nicht läuft, denn hier steht die Hauptdomain.

Die Reihenfolge der Parameter in der Konfiguration spielt keine Rolle. Die folgenden Abschnitte ordnen sie nach Themen statt alphabetisch.

### Shop ein- und ausschalten, Testbetrieb

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Basic>
   ShopActive-Allow                             = yes
   TestModePassword                             = on
   TestModeAuthentication                       =
   TestModeBasicAuth                            =
   ClosedTestShop-Bypass-BasicAuth              =
   ClosedTestShop-Bypass-UserAgentContains-List =
</Basic>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `ShopActive-Allow` | Schaltet den kompletten Shop ein oder aus beziehungsweise in den allgemeinen Testmodus. | `yes`, `no`, `test`. Standard `yes` |
| `TestModePassword` | Das Passwort, das im Aufrufparameter `test=` angegeben werden muss, um den Testbetrieb für die laufende Sitzung einzuschalten. | beliebige Zeichenkette. Standard `on` |
| `TestModeAuthentication` | Schaltet dem Testmodus eine HTTP-Basisauthentifizierung vor. | `BasicAuth`. Standard leer |
| `TestModeBasicAuth` | Zugangsdaten für diese Basisauthentifizierung. | Zeichenkette |
| `ClosedTestShop-Bypass-BasicAuth` | Zugangsdaten, mit denen ein geschlossener Testshop ohne weitere Prüfung betreten wird. | Zeichenkette |
| `ClosedTestShop-Bypass-UserAgentContains-List` | Liste von Zeichenketten im User-Agent, die einen geschlossenen Testshop passieren dürfen, gedacht für Suchmaschinen-Bots. | kommaseparierte Liste |

Sie gehören zu geschlossenen Testshops und werden üblicherweise gemeinsam mit WEBSALE eingerichtet.

Wegweiser: [Shop aktivieren/deaktivieren](https://dokumentation.websale.de/v8s/einstellungen/shop-aktivieren-oder-deaktivieren.md), [Testmodi des Shops ein-/ausschalten](https://dokumentation.websale.de/v8s/domains/testmodi-des-shops-ein-ausschalten.md)

### Sprache, Zeichensatz und Datum

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Basic>
   ShopLanguage       = DEU
   Charset            = ISO-8859-1
   DateFormat         = LittleEndian
   ConvertMailsToUTF8 = no
   CatPathDelimiter   =
</Basic>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `ShopLanguage` | Sprache des Shops. | dreistelliger Code nach ISO 3166, Spalte A3, beispielsweise `DEU`, `GBR`, `FRA` |
| `Charset` | Zeichensatz, in dem die Shopseiten erstellt werden. | gültiger ISO-Code |
| `DateFormat` | Anzeigeformat für Datumsangaben. | `LittleEndian` (28.07.2009), `MiddleEndian` (07-28-2009), `BigEndian` (2009-07-28). Standard `LittleEndian` |
| `ConvertMailsToUTF8` | Versendet die E-Mails des Shops UTF-8-kodiert statt im Zeichensatz aus `Charset`. | `yes`, `no`, `test`. Standard `no` |
| `CatPathDelimiter` | Trennzeichen zwischen den Kategorien bei der Ausgabe des vollständigen Kategoriepfades. | beliebige Zeichenkette. Standard » |

> [!WARNING]
>
> Ein nicht erkannter Wert bei `DateFormat` führt nicht zu einer Fehlermeldung, sondern stillschweigend zu `LittleEndian`. Ein Tippfehler fällt dadurch erst an der Datumsausgabe auf.

Wenn Sie DKIM nutzen, setzen Sie `ConvertMailsToUTF8` auf `yes`. Nur dann ist die DKIM-Signaturberechnung auch bei Sonderzeichen fehlerfrei. Mit `test` prüfen Sie die Umstellung zunächst im allgemeinen Testmodus.

Wegweiser: [Sprache, Zeichensatz, Datumsformat vorgeben](https://dokumentation.websale.de/v8s/einstellungen/sprache-zeichensatz-und-datumsformat.md), [E-Mails in UTF-8 versenden](https://dokumentation.websale.de/v8s/e-mails/e-mails-in-utf-8-versenden.md)

### Domain und Links

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Basic>
   Domain-!                     = www.ihrshop.de
   EncodeAmpersandInLinks-Allow = yes
   hreflang                     =
   mediacode                    =
   TargetSystems                = stationary
</Basic>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `Domain-!` | Hauptdomain, unter der der Shop aufgerufen wird. | gültiger Domainname |
| `EncodeAmpersandInLinks-Allow` | Ersetzt in Links das `&` durch `&amp;`. | `yes`, `no`. Standard `yes` |
| `hreflang` | hreflang-Attribut dieses Subshops. | beispielsweise `de-DE` |
| `mediacode` | Mediacode des Subshops. | beispielsweise `only screen and (max-width: 640px)` |
| `TargetSystems` | Legt fest, ob die Shopinhalte und die TopRank-Seiten für stationäre oder für mobile Systeme erzeugt werden. | `stationary`, `mobile`. Standard `stationary` |

> [!WARNING]
>
> Die Hauptdomain muss mit dem hinterlegten SSL-Zertifikat übereinstimmen. Weichen beide voneinander ab, verschickt das Shopsystem eine kritische Fehlermeldung an WEBSALE. Sprechen Sie eine Änderung der Hauptdomain deshalb immer vorher mit Ihrem WEBSALE Ansprechpartner ab.
>
> Fehlt `Domain-!`, dann meldet das Shopsystem einen Konfigurationsfehler. Beachten Sie außerdem, dass `ihrshop.de` und `www.ihrshop.de` zwei verschiedene Domains sind. Sollen beide funktionieren, tragen Sie die zweite Schreibweise im Abschnitt `AddDomains` nach.

Wegweiser: [Domains für Shop-Aufruf konfigurieren](https://dokumentation.websale.de/v8s/domains/grundlagen-domains-und-shop-aufruf.md), [SEO-Optimierung mit TopRank](https://dokumentation.websale.de/v8s/seo/seo-optimierung-mit-toprank.md), [Automatische Erzeugung des hreflang-Attributs](https://dokumentation.websale.de/v8s/schnittstellen/marketing-seo-und-portale/ws-hreflang-verlinkungen.md)

### Startseite, Kategorien und Produktanzeige

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Basic>
   DefaultTopCatIndex                                       =
   ShowSingleProductOnCategoryPage                          = yes
   NewProductDays                                           = 30
   UseDefaultDepVarIndex-Allow                              = no
   UseFreeSetProductPlacement-Allow                         = no
   HideProductsWithUnknownProdNumbersInCatAdvDataLists-List =
   HideForRating-Allow                                      = no
   HideForAgeRestricted-Allow                               = no
</Basic>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `DefaultTopCatIndex` | Standard-Hauptkategorie, solange keine gewählt wurde, beispielsweise beim Shop-Start. | Kategorieindex |
| `ShowSingleProductOnCategoryPage` | Steuert das Verhalten bei Kategorien mit nur einem Produkt. `yes` zeigt das Kategorie-Template, `no` springt direkt auf das Produkt-Template. | `yes`, `no`. Standard `yes` |
| `NewProductDays` | Wie viele Tage nach dem Anlagedatum ein Produkt als neu gilt. | Ganzzahl bis 365. Standard 30 |
| `UseDefaultDepVarIndex-Allow` | Verwendet die in den Produktdaten hinterlegte Vorauswahl der abhängigen Variantenkombination. | `yes`, `no`, `test`. Standard `no` |
| `UseFreeSetProductPlacement-Allow` | Erlaubt mehrere Set-Produkte auf einer Seite und das Ablegen in den Warenkorb von dort aus, beispielsweise über `PR-LoadData`. | `yes`, `no`, `test`. Standard `no` |
| `HideProductsWithUnknownProdNumbersInCatAdvDataLists-List` | Blendet Produkte aus, deren Produktnummer nicht mehr existiert. | kommaseparierte Liste von `CAT-AdvData`-Listen |
| `HideForRating-Allow` | Blendet Produkte aus, die für die Bewertung gesperrt sind. | `yes`, `no`. Standard `no` |
| `HideForAgeRestricted-Allow` | Blendet altersbeschränkte Produkte aus. | `yes`, `no`. Standard `no` |

### Sitzung, Cookies und Bestellabschluss

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Basic>
   KeepSessionAfterOrder-Allow                    = no
   DesignCookieDays                               = 30
   RefererCookieDays                              = 30
   AffiliateCookieDays                            = 30
   SetRefererCookie                               = no
   OnlinePriceTimeoutInSec                        = 180
   OnlinePriceNotifyPriceUpdateAtPlaceOrder-Allow = yes
   DeliveryRequiredForOrder-Allow                 = no
   OrderHistoryAllSubShops-Allow                  = no
   SavedBasket-SkipProdValidityCheck              = no
   MemoListPaging-Allow                           = no
   PrimeShoppingDefaultPeriodOfNotice             = 30
</Basic>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `KeepSessionAfterOrder-Allow` | Behält die Sitzung nach einer Bestellung bei, statt sie zu schließen. | `yes`, `no`. Standard `no` |
| `DesignCookieDays` | Lebensdauer der Design-Cookies in Tagen. | Ganzzahl. Standard 30 |
| `RefererCookieDays` | Lebensdauer der Referer- und Subreferer-Cookies in Tagen. | Ganzzahl. Standard 30 |
| `AffiliateCookieDays` | Lebensdauer der Affiliate-Cookies in Tagen. | Ganzzahl. Standard 30 |
| `SetRefererCookie` | Speichert den Referer im Cookie und liest ihn bei Folgebesuchen wieder aus. | `yes`, `no`. Standard `no` |
| `OnlinePriceTimeoutInSec` | Wie lange ein Online-Preis im Warenkorb gültig bleibt. | Sekunden. Standard 180 |
| `OnlinePriceNotifyPriceUpdateAtPlaceOrder-Allow` | Bei `yes` wird die Bestellung mit abgelaufenem Online-Preis nicht abgeschlossen, der Preis wird aktualisiert und der Käufer bleibt auf der Bestellübersicht. Bei `no` wird stillschweigend mit dem neuen Preis abgeschlossen. | `yes`, `no`. Standard `yes` |
| `DeliveryRequiredForOrder-Allow` | Macht die Wahl einer Versandart zur Pflicht, um den Bestellvorgang fortzusetzen. | `yes`, `no`. Standard `no` |
| `OrderHistoryAllSubShops-Allow` | Bezieht die Bestellhistorie auf alle Subshops statt nur auf den gerade angemeldeten. | `yes`, `no`. Standard `no` |
| `SavedBasket-SkipProdValidityCheck` | Überspringt beim Laden eines gespeicherten Warenkorbs die Prüfung, ob die Produkte noch existieren. | `yes`, `no`. Standard `no` |
| `MemoListPaging-Allow` | Schaltet die Blätterfunktion für die Merkliste ein. | `yes`, `no`. Standard `no` |
| `PrimeShoppingDefaultPeriodOfNotice` | Standard-Kündigungsfrist zum Laufzeitende eines Prime-Pakets, wenn in den Produktdaten keine hinterlegt ist. | Tage. Standard 30 |

> [!WARNING]
>
> Schalten Sie `KeepSessionAfterOrder-Allow` nur dann auf `yes`, wenn der Shop eine gut sichtbare Abmeldefunktion hat. Standardmäßig wird die Sitzung aus Sicherheitsgründen nach jeder Bestellung geschlossen. Die Ausnahme sind typischerweise B2B-Shops mit Stammkunden, die mehrmals täglich bestellen.
>
> Ohne `SavedBasket-SkipProdValidityCheck` löscht das Shopsystem ein nicht mehr existierendes Produkt beim Laden automatisch aus dem gespeicherten Warenkorb. Mit `yes` bleibt die Position stehen, und der Käufer sieht ein Produkt, das er nicht bestellen kann.

Wegweiser: [Logout, Nach Bestellung eingeloggt bleiben, Online-Preise, Bestellhistorie, Speicherbarer Warenkorb, Prime-Shopping](https://dokumentation.websale.de/v8s/kundenkonto/anmeldung-registrierung.md#logout)

### Schnellbestellung

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Basic>
   IgnoreFastOrderConfiguration-Allow         = no
   FastOrderPreSelectConditionsAccepted-Allow = yes
</Basic>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `IgnoreFastOrderConfiguration-Allow` | Bei `yes` wird die Schnellbestellung ohne Aktivierung durch den Käufer angeboten. | `yes`, `no`. Standard `no` |
| `FastOrderPreSelectConditionsAccepted-Allow` | Wählt das Kontrollkästchen zum Akzeptieren der AGB bei der Schnellbestellung vor. | `yes`, `no`. Standard `yes` |

Wegweiser: [Schnellbestellung](https://dokumentation.websale.de/v8s/weitere-funktionen-im-bestellprozess-kontext/schnellbestellung.md)

### Tracking-Schnittstelle

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Basic>
   DataAnalysis-Allow              = no
   DataAnalysis-AlwaysSendBasket   = no
   DataAnalysis-AddFile1           =
   DataAnalysis-AddFile2           =
   DataAnalysis-JSID               =
   DataAnalysis-BaseHrefForJSID    =
   DataAnalysis-TargetCurrencyCode =
   AdvStatisticsID                 =
</Basic>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `DataAnalysis-Allow` | Schaltet die Tracking-Schnittstelle ein. Zusätzlich wird die Datei ws\_analyse.js benötigt. | `yes`, `no`. Standard `no` |
| `DataAnalysis-AlwaysSendBasket` | Gibt die Warenkorb-Informationen auf jeder Seite aus. Manche Tracking-Dienstleister brauchen das. | `yes`, `no`. Standard `no` |
| `DataAnalysis-AddFile1`, `DataAnalysis-AddFile2` | Zusätzliche JavaScript-Dateien, die am Ende jeder trackbaren Seite vor dem schließenden body-Element eingebunden werden. | Pfad relativ zu benutzer/templates/*subshopid* |
| `DataAnalysis-JSID` | Kennung einer Gruppierung. Ist sie gesetzt, wird die Gruppierung anstelle von ws\_analyse.js eingebunden. | Gruppierungs-ID, beispielsweise `tracking` |
| `DataAnalysis-BaseHrefForJSID` | Relativer Basispfad, der dem Pfad der Gruppierungsdatei vorangestellt wird, beispielsweise bei Mastershops. | Pfad, beispielsweise `/$WS/master/js/subshop/` |
| `DataAnalysis-TargetCurrencyCode` | Fremdwährung, die an die Tracking-Schnittstelle übergeben wird. | dreistelliger Code nach ISO 4217, beispielsweise `CHF` |
| `AdvStatisticsID` | Kennung für die erweiterte Statistik. | Zeichenkette |

> [!WARNING]
>
> Ein allgemeiner Hinweis auf Cookies oder Tracking genügt rechtlich nicht. Der Besucher muss aktiv bestätigen, dass er mit der Verwendung einverstanden ist, und voreingestellte Zustimmungen sind unzulässig. Zustimmungspflichtige Funktionen brauchen deshalb immer ein Opt-In. Die Einzelheiten klären Sie mit Ihrem Datenschutzbeauftragten.

Wegweiser: Tracking-Schnittstelle freischalten, Tracking-Schnittstelle mit PageSpeed-Tool. Referenz: [WS-ExternalStatistics](https://dokumentation.websale.de/v8s/referenz/tags/ws/merkzettel-vergleich-upload-und-externe-dienste.md#die-tags-im-uberblick)

### Weiterempfehlung, Glossar und Bewertungen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Basic>
   ProdRecmdReferer-Txt             = PROD_RECMD
   Glossary-Allow                   = no
   GlossarySupportHTMLEncoding-Allow = no
   AddProdRatingSubShopList         =
   AddPIASubShopList                =
</Basic>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `ProdRecmdReferer-Txt` | Zeichenkette, die bei einem Link auf ein empfohlenes Produkt anstelle des Standard-Referers verwendet wird. | beliebige Zeichenkette. Standard `PROD_RECMD` |
| `Glossary-Allow` | Schaltet das Glossar-Modul ein. | `yes`, `no`. Standard `no` |
| `GlossarySupportHTMLEncoding-Allow` | Erlaubt dem Glossar, auch HTML-kodierte Texte zu erkennen. | `yes`, `no`. Standard `no` |
| `AddProdRatingSubShopList` | Subshops, deren Produktbewertungen mitverwendet werden. | kommaseparierte Liste von Subshop-Kennungen |
| `AddPIASubShopList` | Dasselbe für ProductsInAction. | kommaseparierte Liste von Subshop-Kennungen |

Wegweiser: Funktion "Produkt weiterempfehlen" integrieren, [Glossar einbinden](https://dokumentation.websale.de/v8s/interaktive-funktionen/glossar.md), [Bewertungen Subshop-übergreifend verwenden](https://dokumentation.websale.de/v8s/websale-produktbewertung/bewertungen-subshopuebergreifend-verwenden.md)

### Externe Systeme und Zahlungsdienstleister

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Basic>
   ExternalUserDataExchangePW            =
   SecureBasicDataPW                     =
   UseSecureBasicDataWithoutNumber-Allow = no
   CtopLanguageCode                      = de
   TeleCashLanguageCode                  = de_DE
   TeleCashButtonName                    =
   OgoneLanguageCode                     = de_DE
</Basic>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `ExternalUserDataExchangePW` | Steuert Kodierung und Verschlüsselung der an externe Systeme übergebenen Kundendaten. Leer bedeutet nur hexkodiert, `NOHEX` bedeutet unkodiert, eine 16-stellige Zeichenkette wird als Blowfish-Passwort verwendet und das Ergebnis zusätzlich hexkodiert. | leer, `NOHEX` oder 16-stellige alphanumerische Zeichenkette |
| `SecureBasicDataPW` | Passwort für die abgesicherte Übergabe der Stammdaten. | Zeichenkette |
| `UseSecureBasicDataWithoutNumber-Allow` | Erlaubt die abgesicherte Stammdatenübergabe auch ohne Kundennummer. | `yes`, `no`. Standard `no` |
| `CtopLanguageCode` | Sprache der externen Eingabeseite für Kreditkartendaten bei Computop. | Sprachcode, siehe die Liste unten. Standard `de` |
| `TeleCashLanguageCode` | Sprache der TeleCash-Seiten bei der Schnittstelle TeleCash Connect 2.0. | `de_DE`, `en_US`, `en_EN`. Standard `de_DE` |
| `TeleCashButtonName` | Beschriftung der Schaltfläche, die zur TeleCash-Zahlung führt. | Zeichenkette. Standard `Weiter zur Bezahlung` |
| `OgoneLanguageCode` | Sprache der Ogone-Seiten. | Sprachcode. Standard `de_DE` |

Verfügbare Sprachcodes für `CtopLanguageCode`: `al` Albanisch, `at` Österreichisch, `cz` oder `cs` Tschechisch, `de` Deutsch, `dk` Dänisch, `en` Englisch, `es` Spanisch, `fi` Finnisch, `fr` Französisch, `gr` Griechisch, `hu` Ungarisch, `it` Italienisch, `jp` Japanisch, `nl` Holländisch, `no` Norwegisch, `pl` Polnisch, `pt` Portugiesisch, `ro` Rumänisch, `ru` Russisch, `se` Schwedisch, `sk` Slowakisch, `sl` Slowenisch, `tr` Türkisch, `zh` vereinfachtes Chinesisch.

Wegweiser: [Externe Includes verwenden](https://dokumentation.websale.de/v8s/externe-dienste/externe-inhalte-einbinden.md), Zahlungsart "Kreditkarte"

### Veraltete Parameter

| Parameter | Hinweis |
| - | - |
| `CookieDetectionMethod` | Wird nicht mehr ausgewertet. Der Shop liefert keine Fassung ohne Cookies mehr aus, eine Prüfung auf Cookie-Unterstützung erübrigt sich damit. Frühere Werte waren `javascript` und `redirect`. |
| `DCFPXEncryptBlowfishPW` | Verschlüsselungspasswort für die DC-FPX-Tags, immer 16 Zeichen lang. Verwenden Sie stattdessen `DC-FPX_encrypt` beziehungsweise `DC-SPX_encrypt` und den Abschnitt `DesignControl`. |

Entfernen Sie veraltete Parameter beim nächsten Durchgang durch die Konfiguration. Sie stören den Betrieb nicht, aber sie wecken beim Lesen den Eindruck, dort sei etwas eingestellt.

Referenz: [DC-FPX\_encrypt, DC-SPX\_encrypt](https://dokumentation.websale.de/v8s/referenz/tags/dc/parameter.md#die-tags-im-uberblick)

## AddDomains

Legt zusätzliche Domains fest, unter denen der Shop erreichbar ist, und ob diese auf die Hauptdomain umgeleitet werden.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<AddDomains>
   Redirect-Allow = yes
   +Domain        = ihrshop.de
   +Domain        = www.ihr-shop.de
   +Domain        = ihr-shop.de
</AddDomains>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `Redirect-Allow` | Leitet Aufrufe über eine der aufgeführten Domains auf die Hauptdomain um. | `yes`, `no`. Standard `yes` |
| `+Domain` | Eine zusätzliche Domain. Je Domain eine eigene Zeile, bis zu 100 Einträge. | gültiger Domainname |

Mit `Domain-! = www.ihrshop.de` im Abschnitt `Basic` und der Konfiguration oben wird der Aufruf über [www.ihrshop.de](http://www.ihrshop.de) unverändert angenommen. Die drei aufgeführten Domains werden dorthin umgeleitet. Jede andere Domain wird abgelehnt.

> [!WARNING]
>
> Der Abschnitt wird seit der Umstellung aller Shops auf SSL-Only nicht mehr benötigt. Zusätzliche Domains hinterlegt die WEBSALE Systemadministration direkt auf dem Server. Wenden Sie sich für weitere Domains an Ihren WEBSALE Ansprechpartner.

Ein Hostname wird strikt beachtet. `ihrshop.de` und `www.ihrshop.de` sind zwei verschiedene Einträge. Sollen beide Schreibweisen funktionieren, brauchen Sie zwei Zeilen.

Wegweiser: Domains für Shop-Aufruf konfigurieren

## Templates

Weist jedem Shopzustand seine Template-Datei zu. Alle Templates liegen unterhalb von benutzer/templates. Der Name hinter dem Gleichheitszeichen ist der Dateiname und frei wählbar, die Reihenfolge der Zeilen spielt keine Rolle.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Templates>
   Start       = ws_start.htm
   Category    = ws_category.htm
   Product     = ws_product.htm
   Basket      = ws_basket.htm
   PayDeliv    = ws_pay_deliv.htm
   PlaceOrder  = ws_place_order.htm
   Confirm     = ws_confirm.htm
   Login       = ws_login.htm
   UserAccount = ws_user_account.htm
   Notify      = ws_notify.htm
</Templates>
```

### Der Weg durch den Shop

| Parameter | Template für |
| - | - |
| `Start` | die Startseite des Shops |
| `Category` | die Anzeige von Kategorien. Im WSPManager lässt sich zu jeder Kategorie ein abweichendes Template hinterlegen |
| `Product` | die Anzeige eines einzelnen Produkts. Auch hier ist je Kategorie ein abweichendes Template möglich |
| `Search` | die Suchergebnisse und die Eingabe der erweiterten Suchkriterien |
| `Basket` | den Warenkorb |
| `PayDeliv` | die Eingabe von Zahlungs- und Versandart |
| `PlaceOrder` | die Bestellübersicht |
| `Confirm` | die Bestätigungsseite nach dem Absenden der Bestellung |
| `Notify` | wichtige Meldungen |
| `SubShopAccessDenied` | den Fall, dass der Käufer keine Berechtigung für diesen Subshop hat |

### Anmeldung und Kundenkonto

| Parameter | Template für |
| - | - |
| `Login` | die Anmeldung beim Aufgeben der Bestellung |
| `LoginStart` | die Anmeldung beim Shop-Start bei geschlossenen Shops |
| `Logout` | die Abmeldung |
| `UserAccount` | das Kundenkonto |
| `AddressManage` | die Verwaltung der Rechnungsadresse |
| `DelivAddressManage` | die Verwaltung der Lieferadressen |
| `CombinedAddress` | die Abfrage von Rechnungs- und Lieferadresse auf einem Template im Checkout |
| `MultiDeliveryManage` | die Verwaltung mehrerer Lieferadressen für eine Bestellung |
| `BankManage` | die Verwaltung der Bankdaten |
| `CreditCardManage` | die Verwaltung der Kreditkartendaten |
| `AutoLoginManage` | die Verwaltung des gespeicherten Logins |
| `MultipleAccountsOverview` | die Mehrfachkontenübersicht |
| `ConnectedExternAccountsOverview` | die Anzeige der verbundenen externen Konten |
| `TFAVerify`, `TFAManage` | die Prüfung und die Verwaltung der Zwei-Faktor-Anmeldung |
| `PasskeyVerify`, `PasskeyManage` | die Prüfung und die Verwaltung von Passkeys |
| `UserSearch` | die Kundensuche des SuperUsers |

### Zusatzfunktionen

| Parameter | Template für |
| - | - |
| `MemoList` | die Merkliste |
| `Wishlist`, `WishlistAdmin` | die Anzeige und die Verwaltung der Wunschliste |
| `SavedBasketsManage` | die Verwaltung der speicherbaren Warenkörbe |
| `ProductComparison` | den Produktvergleich |
| `ProductRecmd`, `ProductRecmdConfirm` | die Weiterempfehlung eines Produkts und die Bestätigung danach |
| `OrderHistory` | die Bestellhistorie |
| `ReOrder` | die wiederbestellbaren Produkte |
| `AutoOrderManage` | die Verwaltung automatischer Bestellungen |
| `Subscription` | das Abo-Modul |
| `PrimePackagesManage` | die Anzeige und Verwaltung gebuchter Prime-Pakete |
| `Offers` | kundenspezifische Angebote |
| `DirectOrder` | die Direktbestellung aus Katalogen |
| `FastOrderConfiguration` | die Konfiguration der Schnellbestellung |
| `BonusPoints` | die Anzeige der Bonuspunkte |
| `GlossaryIndex`, `GlossaryDescr` | den Index aller Glossarbegriffe und die Beschreibung eines Begriffs |
| `InventoryRegister`, `InventoryRegisterConfirm` | die Hinterlegung der Kontaktdaten bei BackInStockMail und die Bestätigung |
| `Upload`, `UploadStart`, `UploadSendLink` | das Upload-Modul, dessen Einstieg und den Upload-Link-Versand im Kundenkonto |
| `Download`, `ExternalDownload` | das Download-Modul |
| `EBook` | die E-Book-Ausgabe |
| `CustStatList`, `CustStatError` | die Kundenstatistik und deren Fehlerfall |
| `AffilStat` | das Partnerprogramm, Anzeige der über den Partner-Link bestellten Produkte |

### Technische Templates

| Parameter | Template für |
| - | - |
| `FastIncludes` bis `FastIncludes4` | Inhalte, die über die FastInclude-Technik eingebettet werden |
| `FastIncludes_<ID>` | dasselbe mit frei vergebener Kennung, bis zu 15 Dateien |
| `BasketAjaxSuccess`, `BasketAjaxError` | Erfolg und Fehler beim Ablegen von Produkten per AJAX |
| `BasketPDF`, `ConfirmPDF`, `ProductPDF`, `InstantVoucherPDF` | die PDF-Ausgabe von Warenkorb, Bestätigungsseite, Produktdetailansicht und Kaufgutschein |
| `CustomizedBasketPositionOrderData01` bis `05` | bis zu fünf Templates, die zusätzliche Daten für die Bestelldaten erzeugen |
| `SpecialHandlingNoRedirectInfoFound` | die Auffangseite, wenn keine Weiterleitung auf ein Ersatzprodukt oder eine Ersatzkategorie möglich ist |
| `SessionLockedForOnlineclearing` | den Hinweis, dass die Sitzung während eines Online-Bezahlvorgangs gesperrt ist |
| `PaymentPending`, `PayPalCheckoutPending` | die Wartezustände bei Online-Zahlungen |
| `PayPalPlusDoCheckout` | die Zahlungsart PayPal PLUS |
| `Paymetric3DSecure`, `PaymetricHosted` | die Paymetric-Anbindung |
| `PPCVaultManage` | die Verwaltung hinterlegter PayPal-Checkout-Zahlungsmittel |
| `RPDE_Labelprint`, `RPDE_LabelprintNew` | die Anbindung von Labelprint24 |
| `ChangeExternalProduct` | das Ändern eines extern verwalteten Produkts |

> [!WARNING]
>
> Fehlt `SpecialHandlingNoRedirectInfoFound` oder existiert die Datei nicht, dann leitet das Shopsystem in diesen Fällen auf die Startseite um. Das ist kein Fehler, aber der Besucher landet dann ohne Erklärung auf der Startseite statt auf einer Seite, die ihm sagt, was mit dem Produkt passiert ist.
>
> Bei `FastIncludes_<ID>` sind 15 Einträge die harte Grenze. Weitere Zeilen werden stillschweigend übergangen, und eine bereits vergebene Kennung wird ebenfalls übergangen statt überschrieben. Es gewinnt also der erste Eintrag, nicht der letzte.

Die folgenden Parameter wertet das Shopsystem ebenfalls aus: `Wishlist`, `WishlistAdmin`, `AutoOrderManage`, `TFAVerify`, `TFAManage`, `PasskeyVerify`, `PasskeyManage`, `PaymentPending`, `PayPalCheckoutPending`, `PaymetricHosted`, `PPCVaultManage`, `RPDE_LabelprintNew`, `EBook`, `UploadStart`, `UserSearch`, `ExternalDownload` und `ChangeExternalProduct`.

Wegweiser: [Wiederverwendung: Includes](https://dokumentation.websale.de/v8s/templates/wiederverwendung-includes.md)

## DesignControl

Hinterlegt die Kennungen und Geheimnisse, mit denen die DesignControl-Tags Daten signieren und verschlüsseln. Passwörter gehören aus Sicherheitsgründen nicht ins Template, sondern hierher. Im Template wird nur die Kennung angegeben.

Dahinter steht ein einfacher Gedanke: Daten, die über einen ungesicherten Weg an ein fremdes System gehen, sollen unterwegs nicht verändert werden können. Der Sender hasht sie mit einem gemeinsamen Geheimnis, der Empfänger prüft den Hash.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<DesignControl>
   <+Hash>
      ID     = datenuebertragungax24
      Secret = Jp4xullRcy6DXTPSTKBGXAvGGTaT04ii
   </+Hash>
   <+Encrypt>
      ID = datenuebertragungbc13
      PW = cuW%uH-zy6xzir-763$YMjo
   </+Encrypt>
</DesignControl>
```

| Unterabschnitt | Parameter | Zweck |
| - | - | - |
| `+Hash` | `ID` | Frei vergebene Kennung, möglichst alphanumerisch. Muss innerhalb des Abschnitts eindeutig sein |
| `+Hash` | `Secret` | Geheime Zeichenfolge zur Erzeugung des Hashs. Darf leer bleiben |
| `+Encrypt` | `ID` | Frei vergebene Kennung, eindeutig innerhalb des Abschnitts |
| `+Encrypt` | `PW` | Passwort zur Verschlüsselung. Mindestens acht Zeichen, Groß- und Kleinbuchstaben, Ziffern und Sonderzeichen |

> [!WARNING]
>
> Ein `+Encrypt`-Eintrag ohne `PW` wird übergangen, ein `+Hash`-Eintrag ohne `Secret` dagegen angelegt. Ein Eintrag ohne `ID` wird in beiden Fällen übergangen, in allen Fällen ohne Fehlermeldung. Prüfen Sie deshalb nach dem Einrichten im Template, ob das Tag tatsächlich einen Wert liefert.

Die Zahl der Einträge ist begrenzt. Ist das Limit erreicht, protokolliert das Shopsystem einen Fehler und liest keine weiteren Einträge mehr ein.

Referenz: [DC-FPX\_hash(), DC-SPX\_hash(), DC-FPX\_encrypt(), DC-SPX\_encrypt()](https://dokumentation.websale.de/v8s/referenz/tags/dc/parameter.md#die-tags-im-uberblick)

## ContentControlLoadTemplates

Listet die Templates auf, bei denen sich über ContentControl der HTTP-Statuscode und der ausgelieferte Inhalt beeinflussen lassen.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<ContentControlLoadTemplates>
   +Entry = tpl_cms.htm
</ContentControlLoadTemplates>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `+Entry` | Ein Template. Je Template eine eigene Zeile. | Dateiname, beispielsweise `tpl_cms.htm` |

Wegweiser: Weiterleitungskonzept für Inhalte aus Drittsystemen

## ImageLinks

Ersetzt die vom Shopsystem erzeugten Schaltflächen-Icons durch eigene Grafiken. Alle Dateien liegen in benutzer/navigation/grafiken.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<ImageLinks>
   PageNumbersBack = page_numbers_back.gif
   PageNumbersNext = page_numbers_next.gif
</ImageLinks>
```

| Parameter | Zweck |
| - | - |
| `PageNumbersBack` | Schaltfläche zum Zurückblättern in Kategorie- und Produktlisten |
| `PageNumbersNext` | Schaltfläche zum Vorwärtsblättern |

Wegweiser: Vorgegebene Grafiken ändern

## PDFGenerator

Legt die Dateinamen fest, unter denen die erzeugten PDF-Dateien beim Käufer ankommen.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PDFGenerator>
   ProductPDFFilename        = produkt_~ProductNumber~.pdf
   BasketPDFFilename         = ihr-warenkorb.pdf
   ConfirmPDFFilename        = bestellung_~OrderNumber~.pdf
   InstantVoucherPDFFilename = gutschein.pdf
</PDFGenerator>
```

| Parameter | Zweck | Besonderheit |
| - | - | - |
| `ProductPDFFilename` | Dateiname der PDF-Ausgabe der Produktdetailansicht | Das lokale Tag `ProductNumber` wird durch die Produktnummer ersetzt. Fehlt sie, tritt der Produktindex an ihre Stelle |
| `BasketPDFFilename` | Dateiname der PDF-Ausgabe des Warenkorbs | |
| `ConfirmPDFFilename` | Dateiname der PDF-Ausgabe der Bestätigungsseite | Das lokale Tag `OrderNumber` wird durch die Auftragsnummer ersetzt |
| `InstantVoucherPDFFilename` | Dateiname der PDF-Ausgabe des Kaufgutscheins | |

> [!WARNING]
>
> Der PDF-Generator kann keine CMYK-Dateien verarbeiten. Das betrifft vor allem Kaufgutscheine, bei denen Druckvorlagen zum Einsatz kommen.

Die beiden lokalen Tags `ProductNumber` und `OrderNumber` gelten nur innerhalb dieser Parameter und haben mit den Template-Tags des Shops nichts zu tun.

Wegweiser: [PDF Anzeige der Produkt-Detailansicht, PDF Anzeige des Warenkorbs, PDF Anzeige der Bestätigungsseite, Kaufgutscheine zum Ausdrucken](https://dokumentation.websale.de/v8s/produkte/pdf-anzeige-der-produkt-detailansicht.md)

## ShopTimeouts

Füllt die Auswahlliste, über die der Käufer den Timeout seiner Sitzung selbst bestimmt. Systemweit beträgt der Timeout standardmäßig zwei Stunden.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<ShopTimeouts>
   10m = 10 Minuten
   20m = 20 Minuten
   30m = 30 Minuten
   1h  = 1 Stunde
   2h  = 2 Stunden
</ShopTimeouts>
```

Links vom Gleichheitszeichen steht der Wert, rechts die Beschriftung in der Auswahlliste. Die Einheit `m` steht für Minuten, `h` für Stunden.

Wegweiser: Timeout für automatisches Logout festlegen

## CSRF-Protection

Steuert, wie der Shop auf einen fehlenden oder abweichenden Antiforge-Token reagiert. Der Token verhindert, dass eine fremde Seite im Namen des angemeldeten Käufers Formulare abschickt.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<CSRF-Protection>
   Behavior-AntiforgeTokenIsDiffering = CheckForValidReferer
   Behavior-AntiforgeTokenIsMissing   = CheckForValidReferer
   Reaction-AntiforgeCheckFailed      = DiscardAllInput
</CSRF-Protection>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `Behavior-AntiforgeTokenIsDiffering` | Verhalten, wenn ein Token vorhanden ist, aber nicht dem gespeicherten entspricht. | `CheckForValidReferer`, `Decline-NoFallback`. Standard `CheckForValidReferer` |
| `Behavior-AntiforgeTokenIsMissing` | Verhalten, wenn der Token fehlt. | `CheckForValidReferer`, `Decline-NoFallback`. Standard `CheckForValidReferer` |
| `Reaction-AntiforgeCheckFailed` | Reaktion des Shops, sobald ein Fehler erkannt ist. | `403-Forbidden`, `DiscardAllInput`. Standard `DiscardAllInput` |

`CheckForValidReferer` prüft als zweite Stufe, ob der übermittelte Referer und die Shop-Adresse voneinander abweichen, und erkennt erst dann einen Fehler. `Decline-NoFallback` verzichtet auf diese zweite Prüfung, der Fehler steht also sofort fest.

`403-Forbidden` sendet den entsprechenden HTTP-Status. `DiscardAllInput` sendet keinen eigenen Status, ignoriert aber sämtliche Eingaben des Aufrufs und speichert nichts davon.

Die Funktion lässt sich für einen Shop durch die WEBSALE Technik abschalten. Wenden Sie sich dafür an Ihren WEBSALE Ansprechpartner.

## TopRank

Hält die Einstellungen für die TopRank-HTML-Seiten, die XML-Sitemaps, die SEO-URLs und die Ausgabe von `WS-RobotCanonical`.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<TopRank>
   SEO-URLs-Allow                                = no
   SEO-URLs-InvalidURLWithoutRedirectInformation = 301
   TopRankDir                                    =
   SiteMapDir                                    =
   UseSeoNameForCategoryLink-Allow               = yes
   SuppressCatIndexInRobotCanonical              = no
   SuppressPageInRobotCanonical                  = no
   AddShopAndSubshopIDInRobotCanonical           = no
   SpecialHandlingNoRedirectInfoFound-Allow      = yes
   UseMinifiedCSSAndJS                           = yes
   ActivatePermanentDirectJSCSSTest              = no
</TopRank>
```

### SEO-URLs und Verzeichnisse

| Parameter | Zweck | Werte |
| - | - | - |
| `SEO-URLs-Allow` | Schaltet die SEO-URLs ein beziehungsweise in den Testmodus. | `yes`, `no`, `test`. Standard `no` |
| `SEO-URLs-InvalidURLWithoutRedirectInformation` | HTTP-Statuscode für ungültige, unbekannte oder alte URLs, zu denen keine Weiterleitungsinformation vorliegt. | `301`, `401`, `404`. Standard `301` |
| `TopRankDir` | Verzeichnis für die HTML-TopRank-Seiten, relativ zum übergeordneten Verzeichnis des Shopverzeichnisses. Leer bedeutet .../artikel parallel zum Shopverzeichnis. | Verzeichnisname, beispielsweise `english/artikel` |
| `SiteMapDir` | Verzeichnis für die XML-Sitemaps, relativ zum Wurzelverzeichnis des Shops. Leer bedeutet das Wurzelverzeichnis selbst. | Verzeichnisname, beispielsweise `english` |
| `UseSeoNameForCategoryLink-Allow` | Verwendet den SEO-Kategorienamen für den sprechenden Teil von Kategorie-Links. | `yes`, `no`. Standard `yes` |

> [!WARNING]
>
> Suchmaschinen akzeptieren in einer Sitemap nur Links, die auf dasselbe oder ein tieferliegendes Verzeichnis zeigen. Liegt die Sitemap zu tief, werden die Links darin ignoriert. Setzen Sie `SiteMapDir` deshalb nur, wenn die Wurzel der Domain nicht mit dem Verzeichnis zusammenfällt, in dem das Shopverzeichnis liegt.

### Canonical-Anweisung

| Parameter | Zweck | Werte |
| - | - | - |
| `SuppressCatIndexInRobotCanonical` | Lässt den Kategorieindex auf der Einzelproduktansicht aus der Canonical-Anweisung weg. | `yes`, `no`. Standard `no` |
| `SuppressPageInRobotCanonical` | Lässt die Seitennummer auf der Kategorieansicht aus der Canonical-Anweisung weg. | `yes`, `no`. Standard `no` |
| `AddShopAndSubshopIDInRobotCanonical` | Nimmt Shop- und Subshop-Kennung in die Canonical-Anweisung auf. | `yes`, `no`. Standard `no` |

`SuppressCatIndexInRobotCanonical` wirkt zugleich auf die Sitemaps. Mit `yes` kommen nur die kanonischen Produkt-URLs hinein, was der Empfehlung von Google entspricht. Mit `no` wird für jede Kategorie, in der ein Produkt steht, eine eigene URL geschrieben.

`AddShopAndSubshopIDInRobotCanonical` brauchen Sie nur, wenn sich mehrere Subshops eine Domain teilen. Setzen Sie ihn in den Subshops, die nicht der Hauptsubshop dieser Domain sind. Im Regelfall bekommt jeder Subshop eine eigene Domain, dann bleibt der Parameter auf `no`.

### Weiterleitung und Auslieferung

| Parameter | Zweck | Werte |
| - | - | - |
| `SpecialHandlingNoRedirectInfoFound-Allow` | Mit `no` wird bei nicht mehr verfügbaren Produkten und Kategorien eine 404-Seite ausgeliefert, statt auf die Auffangseite oder die Startseite umzuleiten. | `yes`, `no`. Standard `yes` |
| `UseMinifiedCSSAndJS` | Verwendet die minifizierten CSS- und JavaScript-Dateien. | `yes`, `no`. Standard `yes` |
| `ActivatePermanentDirectJSCSSTest` | Bindet CSS und JavaScript dauerhaft per Direktzugriff ein, sodass Änderungen sofort sichtbar werden. | `yes`, `no`. Standard `no` |

> [!WARNING]
>
> `ActivatePermanentDirectJSCSSTest = yes` umgeht die Gruppierung und damit die Zwischenspeicherung. Das ist beim Aufbau eines Shops hilfreich, kostet im Produktivbetrieb aber Ladezeit. Nehmen Sie den Parameter vor dem Go-Live wieder heraus.

### Unterabschnitt LinkOptimization

Entfernt überflüssige Parameter aus den erzeugten URLs. Der Unterabschnitt gehört zu `TopRank` und steht nicht für sich allein.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<TopRank>
   <LinkOptimization>
      Allow = yes
      <RemovableStartPageParameters>
         +Entry = ref
         +Entry = subref
      </RemovableStartPageParameters>
      <RemovableCategoryPageParameters>
         +Entry = ref
         +Entry = subref
      </RemovableCategoryPageParameters>
      <RemovableProductPageParameters>
         +Entry = ref
         +Entry = subref
      </RemovableProductPageParameters>
      <RemovableLoadTemplatePageParameters>
         +Entry = ref
         +Entry = subref
      </RemovableLoadTemplatePageParameters>
   </LinkOptimization>
</TopRank>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `Allow` | Schaltet die Basisoptimierung der URLs und die Parameterentfernung ein. | `yes`, `no`, `test`. Standard `no` |
| `RemovableStartPageParameters` | Parameter, die aus der Startseiten-URL entfernt werden. Je Parameter eine `+Entry`-Zeile. | Parameternamen. Empfohlen `ref` und `subref` |
| `RemovableCategoryPageParameters` | dasselbe für Kategorie-URLs | Parameternamen |
| `RemovableProductPageParameters` | dasselbe für Produkt-URLs | Parameternamen |
| `RemovableLoadTemplatePageParameters` | dasselbe für URLs mit Load-Parameter | Parameternamen |

`Allow` ist nur für die Umstellung von herkömmlichen URLs auf SEO-URLs von Bedeutung. Sobald SEO-URLs aktiv sind, setzt das Shopsystem den Parameter intern auf `yes`, weil die Funktion dort zwingend gebraucht wird.

### Veralteter Parameter

| Parameter | Hinweis |
| - | - |
| `SiteMapDomain` | Wird nicht mehr unterstützt. Entfernen Sie den Parameter aus der Konfiguration und stellen Sie stattdessen sicher, dass `Domain-!` im Abschnitt `Basic` gesetzt ist. |

Wegweiser: [SEO-Optimierung mit TopRank, Canonical-Anweisung in HTML-Head erzeugen, SEO-URLs, URL- und Link-Optimierung, CSS, JavaScript und jQuery](https://dokumentation.websale.de/v8s/seo/seo-optimierung-mit-toprank.md)

## SEOProductFields

Schaltet die SEO-Felder für Produkte frei und legt fest, ob der SEO-Produktname in Links und im Canonical verwendet wird.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<SEOProductFields>
   Allow            = no
   Link-Allow       = no
   LegacyLink-Allow = yes
   Template         = incl_product_seo.htm
   <Password>
      +Entry =
   </Password>
</SEOProductFields>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `Allow` | Erlaubt das Pflegen der SEO-Felder und ihre Verwendung im Template. | `yes`, `no`. Standard `no` |
| `Link-Allow` | Verwendet den SEO-Produktnamen für die Linkbildung und für den Canonical. | `yes`, `no`. Standard `no` |
| `LegacyLink-Allow` | Verwendet den SEO-Produktnamen auch bei V8-Links. | `yes`, `no`, `test`. Standard `yes` |
| `Template` | Template des externen Moduls, wenn der SEO-Content im SEO-Modus des Shops gepflegt wird. | Dateiname, beispielsweise `incl_product_seo.htm` |
| `Password` mit `+Entry` | Bis zu 500 Passwörter für den Aufruf des Shops im SEO-Modus. Je Passwort eine eigene Zeile. | beliebiges Passwort |

> [!WARNING]
>
> `LegacyLink-Allow` wirkt nur, solange `Link-Allow = yes` gesetzt ist. Steht `Link-Allow` auf `no`, dann bleibt `LegacyLink-Allow` wirkungslos, auch wenn der Standardwert `yes` etwas anderes nahelegt.

Wegweiser: [SEO-Content für Produkte](https://dokumentation.websale.de/v8s/seo/seo-content-fuer-produkte.md)

## SEOProductFields-Text

Hält die Fehlermeldungen, die beim Pflegen der SEO-Felder erscheinen. Jede Meldung wird von einem eigenen Tag ausgegeben.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<SEOProductFields-Text>
   ErrorConnectedSubshop    =
   ErrorFieldTooLong        =
   ErrorMainCatIndexTooLong =
   ErrorNameAlreadyExists   =
   ErrorNameTooLong         =
</SEOProductFields-Text>
```

| Parameter | Erscheint, wenn | Ausgegeben durch |
| - | - | - |
| `ErrorConnectedSubshop` | die Daten nur im Haupt-Subshop bearbeitet werden können | `E-PSEO_Error` |
| `ErrorFieldTooLong` | die Eingabe in ein SEO-Produktfeld länger als 4000 Zeichen ist | `E-PSEO_Error_Field1…20` |
| `ErrorMainCatIndexTooLong` | die Eingabe im Hauptkategorieindex länger als 255 Zeichen ist | `E-PSEO_Error_MainCatIndex` |
| `ErrorNameAlreadyExists` | bereits ein Produkt denselben SEO-Produktnamen trägt | `E-PSEO_Error_Name` |
| `ErrorNameTooLong` | der SEO-Produktname länger als 127 Zeichen ist | `E-PSEO_Error_Name` |

`ErrorNameAlreadyExists` und `ErrorNameTooLong` werden beide über `E-PSEO_Error_Name` ausgegeben. Formulieren Sie die beiden Texte deshalb so, dass der Redakteur an der Meldung selbst erkennt, welcher der beiden Fälle vorliegt.

Wegweiser: [SEO-Content für Produkte](https://dokumentation.websale.de/v8s/seo/seo-content-fuer-produkte.md)

## LinkNameEncoding

Legt fest, wie der sprechende Teil einer URL kodiert wird.

Standardmäßig werden deutsche Umlaute in lesbare Ersatzzeichen umgewandelt und nicht in UTF-8-Ersatzzeichen. Dadurch entstehen für Warenwirtschaftssysteme und Zahlungsdienstleister keine besonderen Anforderungen. Die Standardregeln sind bereits hinterlegt, Sie bearbeiten den Abschnitt also nur, wenn weitere Shopsprachen oder Anforderungen externer Systeme dazukommen.

Wegweiser: Codierung des sprechenden URL-Teils

## RefererDerivation

Leitet aus dem HTTP-Referer oder aus dem Pfad der aufgerufenen URL einen WEBSALE Referer und optional einen Subreferer ab. Damit lassen sich eingehende Besuche nach Herkunft gruppieren, ohne dass jeder Link einen eigenen Parameter tragen muss.

Der Aufbau folgt zwei Stufen: Eine `+RefererRule` bestimmt den Referer und verweist optional über eine Kennung auf ein `+SubRefererRuleSet`, das den Subreferer bestimmt.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<RefererDerivation>
   <+RefererRule>
      Source               = HTTPReferer
      Type                 = Contains
      Value                = bing
      SetReferer           = Microsoft Bing
      UseSubRefererRuleSet = def
   </+RefererRule>

   <+SubRefererRuleSet>
      ID                = def
      DefaultSubReferer = BRAND-DEFAULT
      <+SubRefererRule>
         Source        = Path
         Type          = Contains
         Value         = /mein-shop
         SetSubReferer = BRAND Mein Shop
      </+SubRefererRule>
   </+SubRefererRuleSet>
</RefererDerivation>
```

Jeder Unterabschnitt darf beliebig oft vorkommen.

### Unterabschnitt +RefererRule

| Parameter | Zweck | Werte |
| - | - | - |
| `Source` | Worauf sich die Regel bezieht. | `HTTPReferer`, `Path` |
| `Type` | Ob die Zeichenkette aus `Value` enthalten sein muss oder exakt übereinstimmen muss. | `Contains`, `ExactMatch` |
| `Value` | Die zu prüfende Zeichenkette. | beispielsweise `bing` |
| `SetReferer` | Der WEBSALE Referer, der bei erfolgreicher Prüfung weitergegeben wird. | beispielsweise `Microsoft Bing` |
| `UseSubRefererRuleSet` | Kennung des Regelsatzes, der bei erfolgreicher Prüfung für den Subreferer gilt. | alphanumerische Kennung |

### Unterabschnitt +SubRefererRuleSet

| Parameter | Zweck | Werte |
| - | - | - |
| `ID` | Kennung, über die `UseSubRefererRuleSet` auf diesen Regelsatz verweist. | alphanumerische Kennung |
| `DefaultSubReferer` | Subreferer, der gilt, wenn keine der enthaltenen Regeln greift. | beliebige Zeichenkette |

### Unterabschnitt +SubRefererRule

| Parameter | Zweck | Werte |
| - | - | - |
| `Source` | Worauf sich die Regel bezieht. | `HTTPReferer`, `Path` |
| `Type` | Ob die Zeichenkette aus `Value` enthalten sein muss oder exakt übereinstimmen muss. | `Contains`, `ExactMatch` |
| `Value` | Die zu prüfende Zeichenkette. | beispielsweise `/mein-shop` |
| `SetSubReferer` | Der Subreferer, der bei erfolgreicher Prüfung weitergegeben wird. | beliebige Zeichenkette |

Wegweiser: Regeln zur automatischen Ableitung von Referern

## MediaDataBase

Konfiguriert die Lieferbarkeitsanzeige für Produkte aus der Mediendatenbank, also für Bücher, CDs und Videos, die über die Koch, Neff und Volckmar GmbH bestellt werden.

Das Shopsystem sucht zu einem Produkt zuerst den `+InventoryCode`-Unterabschnitt mit passendem Code und passender Quelle. Findet es keinen, weil beim Produkt kein Lieferstatus-Code hinterlegt ist, dann greift der erste `+InventoryDefault`-Unterabschnitt mit passender Quelle.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<MediaDataBase>
   <+InventoryDefault>
      Source = KNV
      Status = green
      Text   = lieferbar innerhalb 1-2 Tagen
   </+InventoryDefault>

   <+InventoryCode>
      Code   = 07
      Source = KNV
      Status = red
      Text   = vergriffen, keine Neuauflage
   </+InventoryCode>

   <+InventoryCode>
      Code   = 11
      Source = KNV
      Status = yellow
      Text   = Neuauflage, lieferbar ab ~PR-AvailInfoTime~
   </+InventoryCode>
</MediaDataBase>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `Code` | Lieferstatus-Code, der beim Produkt gespeichert ist. Nur in `+InventoryCode`. | Die verfügbaren Codes sind für alle Shops gemeinsam konfiguriert, eine aktuelle Liste erhalten Sie auf Anfrage |
| `Source` | Quelle, aus der die Produkte importiert wurden. | `KNV`, `VLB` |
| `Status` | Ampelstatus für die Anzeige. | `green`, `yellow`, `red`, `red-orderable` |
| `Text` | Lieferbarkeitstext zu diesem Status. | Text. Das Tag `PR-AvailInfoTime` setzt eine in den Produktdaten hinterlegte Zeitangabe ein |

Auf dieser Seite sind die Beispiele auf `red` und `yellow` geändert, weil Status und Text sonst widersprüchliche Signale geben.


## Related topics

- [ContentControl- (Weiterleitungskonzept für Inhalte aus Drittsystemen)](https://dokumentation.websale.de/v8s/referenz/tags/contentcontrol.md)
- [DC- (Freie Parameter und Session-Parameter)](https://dokumentation.websale.de/v8s/referenz/tags/dc/parameter.md)
- [CBPOD- (Anreichern von Bestelldaten)](https://dokumentation.websale.de/v8s/referenz/tags/cbpod.md)
- [Download-Produkte anbieten](https://dokumentation.websale.de/v8s/produkte/download-produkte-anbieten.md)
- [EJD- (JSON-Schnittstelle)](https://dokumentation.websale.de/v8s/referenz/tags/ejd.md)


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