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

# Top-30-Produkte

> Wie Sie eingeloggten Käufern in WEBSALE V8s ihre meistgekauften Produkte als Top-Liste anzeigen und direkt wieder bestellbar machen.

Die Top-Liste zeigt einem eingeloggten Käufer die Produkte, die er selbst am meisten gekauft hat. Von dort legt er sie mit wenigen Klicks erneut in den Warenkorb. Der typische Ort dafür ist die Kundenkontoübersicht `ws_user_account.htm`.

Wie viele Produkte gespeichert werden, legen Sie selbst fest. "Top 30" ist nur der gebräuchlichste Zuschnitt.

## Funktionsweise

### Sortierung nach Warenwert

Die Liste ist nach Warenwert absteigend sortiert, nicht nach Bestellhäufigkeit. Der Warenwert ergibt sich aus Preis mal Bestellmenge über den gesamten Auswertungszeitraum.

| Produkt | Preis | Bestellmenge | Warenwert |
| - | - | - | - |
| A | 10 EUR | 5 | 50 EUR |
| B | 1 EUR | 10 | 10 EUR |

Produkt A steht damit vor Produkt B, obwohl B häufiger bestellt wurde.

Das heißt nicht, dass hochpreisige Produkte grundsätzlich vorn stehen. Würde Produkt B hundertmal bestellt, läge sein Warenwert bei 100 EUR und es stünde vor Produkt A.

### Voraussetzungen beim Käufer

Der Käufer muss eingeloggt sein und mindestens ein Produkt gekauft haben. Für Gäste und für Neukunden bleibt die Liste leer.

### Aktualisierung

Die Übersicht wird alle 20 Minuten aktualisiert, sofern in der Zwischenzeit Bestellungen eingegangen sind.

> [!WARNING]
>
> Die Auswertung beginnt mit der Integration. Bestellungen, die vorher eingegangen sind, fließen nicht ein. Direkt nach der Aktivierung ist die Liste deshalb auch bei langjährigen Kunden leer und füllt sich erst im laufenden Betrieb.

## Schritt 1: Freischaltung

Eine Freischaltung durch WEBSALE ist nicht nötig.

## Schritt 2: Shopkonfiguration anpassen

Die Einstellungen stehen in der `global.config`. Legen Sie diese im Online-Servicebereich im Dienst "Konfiguration" an, falls sie noch nicht existiert, und ergänzen Sie den Abschnitt `<[TopSeller](/v8s/referenz/konfigurationen/shopkonfiguration-global-config#topseller)>`.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<TopSeller>
   Allow        = yes
   MaxAge       = 730
   ProductCount = 30
</TopSeller>
```

| Parameter | Bedeutung |
| - | - |
| `Allow` | nur `yes` aktiviert die Funktion |
| `MaxAge` | Auswertungszeitraum in Tagen, `730` entspricht zwei Jahren |
| `ProductCount` | Anzahl der je Kunde gespeicherten Produkte |

`ProductCount` bestimmt, wie viele Produkte je Kunde **gespeichert** werden. Wie viele davon im Shop erscheinen, legen Sie im Template fest und können dort einen kleineren Wert wählen.

> [!WARNING]
>
> Ändern Sie `MaxAge` oder `ProductCount`, baut der Shop die Top-Seller-Daten neu auf. Setzen Sie `Allow` auf einen anderen Wert als `yes`, werden die gesammelten Daten gelöscht. Ein versehentliches Abschalten kostet also die gesamte bisher aufgebaute Historie.

## Schritt 3: Template erweitern

Angesprochen wird die Liste über den Pseudo-Kategorieindex `$TopProd`.

Im folgenden Beispiel erscheinen Name, Preis und Link sowie drei Kennzahlen zur bisherigen Bestellhistorie.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{CAT-AdvData($TopProd,30)}
   {@PR-Data}
      <a href="~PR-Link~">~PR-Name~</a>
      ~PR-Price~ ~WS-Currency~

      Zuletzt bestellt am
      ~DC-DateTime_setunixtimestamp($PR-TopProd_LastOrderedUnixTimestamp$)~
      ~DC-DateTime_day(true)~.~DC-DateTime_month(true)~.~DC-DateTime_year(true)~

      Bisher bestellte Menge: ~PR-TopProd_OrderedNumberCount~
      Bisheriger Warenwert: ~PR-TopProd_OrderedValueSum~ ~WS-Currency~
   {/@PR-Data}
{/CAT-AdvData($TopProd,30)}
```

Das zweite Argument begrenzt die Ausgabe. Es kann nur kleiner sein als `ProductCount`, nicht größer.

### Die Kennzahlen-Tags

| Tag | Inhalt |
| - | - |
| [`PR-TopProd_OrderedNumberCount`](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten) | bisher bestellte Gesamtmenge dieses Produkts |
| [`PR-TopProd_OrderedValueSum`](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten) | bisheriger Gesamtwarenwert dieses Produkts |
| [`PR-TopProd_LastOrderedUnixTimestamp`](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten) | Zeitpunkt der letzten Bestellung als Unix-Zeitstempel |

Alle drei sind nur innerhalb der Schleife gültig. Außerhalb liefern sie kein Ergebnis.

Alle drei lassen sich auch als Klammerung verwenden. Der Bereich erscheint dann nur, wenn der Wert über null liegt.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PR-TopProd_LastOrderedUnixTimestamp}
   Zuletzt bestellt am ...
{/PR-TopProd_LastOrderedUnixTimestamp}
```

### Zeitstempel umrechnen

`PR-TopProd_LastOrderedUnixTimestamp` liefert die Sekunden seit dem 1. Januar 1970, 00:00 Uhr UTC, bezogen auf die Serverzeit. Für die Anzeige rechnen Sie den Wert mit den `DC-DateTime_`-Tags um: Das erste Tag übernimmt den Zeitstempel, die folgenden geben die einzelnen Bestandteile aus.

## Produktvarianten aus der Liste bestellbar machen

Der Shop behandelt die Top-Produkte wie eine Produktliste. Produkte mit abhängigen Varianten lassen sich aus einer Liste heraus normalerweise nicht direkt in den Warenkorb legen, weil die Variantenauswahl fehlt.

Mit zwei Ergänzungen am Template geht es trotzdem.

### Variantenauswahl im Template freigeben

Ergänzen Sie im Kopf des Templates, auf dem die Top-Liste steht, folgende Angabe. Sie steht in einem HTML-Kommentar, damit sie nicht im Quelltext des Shops erscheint.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<!--{WS-Config}
ShowAllDepVariations-Allow   = yes
{/WS-Config}-->
```

Referenz: [WS-Config](https://dokumentation.websale.de/v8s/referenz/tags/ws/shop-seite-und-technik.md#die-tags-im-uberblick)

### Varianten im Listeneintrag mitgeben

Geben Sie innerhalb der Schleife die Variantenauswahl aus. Sichtbar sein muss sie nicht, sie wird aber gebraucht, damit die Bestellung die Variante kennt.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{CAT-AdvData($TopProd,30)}
   {@PR-Data}
      ...
      {PR-DepVariations}
         <div class="display_none">~PR-DepVariations~</div>
      {/PR-DepVariations}
      ...
   {/@PR-Data}
{/CAT-AdvData($TopProd,30)}
```

Referenz: [PR-DepVariations](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten.md)

## Verwandte Themen

* Wegweiser: [Zuletzt angesehene Produkte anzeigen](https://dokumentation.websale.de/v8s/marketing-produkte/zuletzt-angesehene-produkte-anzeigen.md)
* Wegweiser: [Mehrverkauf](https://dokumentation.websale.de/v8s/marketing-produkte/mehrverkauf.md)


## Related topics

- [Shopkonfiguration global.config](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-global-config.md)
- [Grundlagen und Technik](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/grundlagen-und-technik.md)
- [TopRank-HTML-Seiten](https://dokumentation.websale.de/v8s/referenz/tags/toprank-html-seiten.md)
- [SEO-Optimierung mit TopRank](https://dokumentation.websale.de/v8s/seo/seo-optimierung-mit-toprank.md)
- [Kategoriedaten ausgeben](https://dokumentation.websale.de/v8s/referenz/tags/cat/kategoriedaten.md)


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