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

# PRODRATING- (Bewertung abgeben und bestätigen)

> Das Eingabeformular für eine Produktbewertung aufbauen, Eingabefehler zurückmelden, den Nickname klären und die Bewertung per Doppelbestätigung über E-Mail freigeben.

Eine Produktbewertung entsteht in mehreren Schritten: der Käufer füllt das Formular aus, das Modul prüft die Eingaben, bei Bedarf klärt es den Nickname, und zum Schluss bestätigt der Käufer seine Bewertung über einen Link in einer E-Mail. Für jeden dieser Schritte gibt es ein eigenes Template des Produktbewertungs-Moduls.

| Template | Rolle |
| - | - |
| Edit | das Eingabeformular |
| Confirm | die Bestätigungsseite nach dem Absenden |
| ConfirmMail | die E-Mail mit dem Bestätigungslink |
| MailValidation | die Seite, auf der der Link aus der E-Mail landet |

Diese Seite beschreibt die Tags dieser vier Templates. Die Anzeige vorhandener Bewertungen und das Ändern des Nicknames haben eigene Seiten.

* Wegweiser: [Beschreibung des Produktbewertungs-Moduls](https://dokumentation.websale.de/v8s/websale-produktbewertung/beschreibung-des-produktbewertungs-moduls.md)
* Referenz: [PRODRATING- (Bewertungen anzeigen)](https://dokumentation.websale.de/v8s/referenz/tags/prodrating/bewertung-abgeben-und-bestaetigen.md)
* Referenz: [PRODRATING- (Nickname ändern)](https://dokumentation.websale.de/v8s/referenz/tags/prodrating/bewertung-abgeben-und-bestaetigen.md)

Das Produktbewertungs-Modul ist ein eigenes Modul mit eigenen Templates. Diese Templates laufen entweder direkt oder über `WS-ExtInclude` eingebunden im Shop. Welche der beiden Betriebsarten Sie verwenden, ändert bei einigen Tags das Verhalten. Die betroffenen Stellen sind unten jeweils benannt.

## Das Formular aufbauen

Das Eingabeformular braucht ein Ziel und sechs Felder: Nickname, E-Mail-Adresse, Überschrift, Kommentar, Punktzahl und den Absendeknopf.

| Tag | Liefert |
| - | - |
| `PRODRATING-LinkSubmitComment` | das Ziel des Formulars |
| `PRODRATING-Subject_input` | den HTML-Namen des Felds für die Überschrift |
| `PRODRATING-Subject_value` | den bisherigen Inhalt der Überschrift |
| `PRODRATING-Comment_input` | den HTML-Namen des Felds für den Kommentar |
| `PRODRATING-Comment_value` | den bisherigen Inhalt des Kommentars |
| `PRODRATING-Rating_input` | den HTML-Namen des Felds für die Punktzahl |

Nickname und E-Mail-Adresse kommen aus dem Adressdaten-Präfix.

Referenz: `A-NickName_input`, `A-NickName_value`, `A-E-Mail_input` und `A-E-Mail_value` auf der Seite [A- (Rechnungsadresse)](https://dokumentation.websale.de/v8s/referenz/tags/a-rechnungsadresse.md)

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<form name="bewertung" method="post" action="~PRODRATING-LinkSubmitComment~">
   <input type="text" name="~A-NickName_input~" value="~A-NickName_value~">
   <input type="text" name="~A-E-Mail_input~" value="~A-E-Mail_value~">
   <input type="text" name="~PRODRATING-Subject_input~" value="~PRODRATING-Subject_value~">
   <textarea name="~PRODRATING-Comment_input~">~PRODRATING-Comment_value~</textarea>
   <input type="submit" value="Bewertung abschicken">
</form>
```

> [!WARNING]
>
> `PRODRATING-LinkSubmitComment` verhält sich je nach Betriebsart unterschiedlich. Läuft das Template direkt, gibt das Tag eine Adresse aus, die Sie in das `action`-Attribut setzen. Läuft es über `WS-ExtInclude`, gibt dasselbe Tag stattdessen mehrere versteckte Formularfelder aus. Dann gehört es **in** das Formular und nicht in das `action`-Attribut, und als Ziel verwenden Sie das Shoptemplate.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<form name="bewertung" method="post" action="~FORM-Template(tpl_read_prod_rating.htm)~">
   ~PRODRATING-LinkSubmitComment~
   ...
</form>
```

Die Überschrift fasst maximal 256 Zeichen, der Kommentar maximal 10.000 Zeichen.

Im Include-Betrieb gibt das Shopsystem die beiden `_value`-Tags HTML-sicher aus. Direkt betrieben erscheint der Inhalt unverändert. Verlassen Sie sich deshalb nicht darauf, dass eingegebener Text in jedem Fall maskiert ist.

## Die Punktzahl

Die Bewertung reicht von einem bis zehn Punkten. Für jeden Punktwert gibt es einen HTML-Wert und ein Bild, dazu den aktuell gewählten Wert in zwei Fassungen.

| Tag | Liefert |
| - | - |
| `PRODRATING-RatingPoint1` … `PRODRATING-RatingPoint10` | den HTML-Wert für einen bis zehn Punkte |
| `PRODRATING-RatingPoint1Image` … `PRODRATING-RatingPoint10Image` | die Bildadresse für einen bis zehn Punkte |
| `PRODRATING-Rating_value` | die gewählte Punktzahl als Zahl |
| `PRODRATING-Rating_htmlvalue` | die gewählte Punktzahl als HTML-Wert |
| `PRODRATING-RatingActualPointImage` | die Bildadresse zur gewählten Punktzahl |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<fieldset>
   <label>
      <img src="~PRODRATING-RatingPoint1Image~" alt="1 Punkt">
      <input type="radio" name="~PRODRATING-Rating_input~" value="~PRODRATING-RatingPoint1~">
   </label>
   <label>
      <img src="~PRODRATING-RatingPoint2Image~" alt="2 Punkte">
      <input type="radio" name="~PRODRATING-Rating_input~" value="~PRODRATING-RatingPoint2~">
   </label>
   ...
</fieldset>
```

`PRODRATING-Rating_value` ist die reine Zahl, `PRODRATING-Rating_htmlvalue` der Wert, den das Formular übermittelt. Für ein vorbelegtes Auswahlfeld brauchen Sie den HTML-Wert, für eine Anzeige die Zahl.

Wie viele Punkte Sie anbieten, legen Sie über die Zahl der Felder im Template fest. Das Modul kennt zehn, ein Template mit fünf Sternen verwendet schlicht nur `PRODRATING-RatingPoint1` bis `PRODRATING-RatingPoint5`.

Die Bilder zu den Punktwerten und das Bild zur Durchschnittsnote werden im Abschnitt `ProductRatingImages` beziehungsweise `AdvancedProductRatingImages` der Konfiguration festgelegt.

* Referenz: [Abschnitt `ProductRatingImages`](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/produkte-katalog-und-suche#productratingimages)
* Referenz: [Abschnitt `AdvancedProductRatingImages`](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/produkte-katalog-und-suche#advancedproductratingimages)

## Eingabefehler zurückmelden

Stimmt etwas an den Eingaben nicht, zeigt das Modul das auf drei Wegen an: als Text, als Liste und feldweise als Kennzeichen für die Gestaltung.

| Tag | Liefert |
| - | - |
| `PRODRATING-InputError` | den Fehlertext aus der Konfiguration |
| `PRODRATING-InputErrorList` | eine Liste der fehlerhaften Eingaben |
| `PRODRATING-Nickname_error_flag` | `ok` oder `err` für das Nickname-Feld |
| `PRODRATING-Email_error_flag` | `ok` oder `err` für das E-Mail-Feld |
| `PRODRATING-Rating_error_flag` | `ok` oder `err` für die Punktzahl |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PRODRATING-InputError}
   <p class="fehler">~PRODRATING-InputError~</p>
   ~PRODRATING-InputErrorList~
{/PRODRATING-InputError}

<div class="feld input_~PRODRATING-Nickname_error_flag~">
   <input type="text" name="~A-NickName_input~" value="~A-NickName_value~">
</div>
```

Die drei `_error_flag`-Tags geben nichts weiter aus als die beiden Zeichenketten `ok` und `err`. Gedacht sind sie als Namensbestandteil einer CSS-Klasse, so wie im Beispiel. Sie hängen das Kennzeichen an einen festen Klassennamen an und gestalten dann `input_ok` und `input_err` unterschiedlich.

Die Klammerung `PRODRATING-InputError` greift nicht danach, ob ein Fehlertext hinterlegt ist, sondern danach, ob die Eingabe fehlerhaft war. Ein leerer Fehlertext in der Konfiguration blendet den Bereich also nicht aus, er zeigt ihn leer an.

`PRODRATING-Nickname_error_flag` meldet auch dann `err`, wenn der Käufer gerade die Zusendung seines Nicknames angefordert hat. Das ist kein Eingabefehler, sondern ein Hinweis, dass an dieser Stelle noch etwas zu tun ist.

Der Fehlertext stammt aus dem Parameter `Error` der Modulkonfiguration.

## Mehrfachbewertungen

Ist im Shop nur eine Bewertung je Person und Produkt erlaubt, blendet eine Klammerung das Formular aus und erklärt den Grund.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{!PRODRATING-MultipleInput_error}
   <form name="bewertung" method="post" action="~PRODRATING-LinkSubmitComment~">
      ...
   </form>
{/!PRODRATING-MultipleInput_error}

{PRODRATING-MultipleInput_error}
   <p>Sie haben dieses Produkt bereits bewertet.</p>
{/PRODRATING-MultipleInput_error}
```

`PRODRATING-MultipleInput_error` gibt es nur als Klammerung. Legen Sie das ganze Formular in den negativen Bereich, sonst kann der Käufer eine zweite Bewertung abschicken, die anschließend abgewiesen wird.

## Der Nickname

Bewertungen erscheinen unter einem Nickname. Eine E-Mail-Adresse ist immer an genau einen Nickname gebunden. Gibt der Käufer eine Adresse ein, die bereits unter einem anderen Nickname geführt wird, bietet das Modul zwei Wege an: den vorhandenen Nickname per E-Mail zusenden lassen oder ihn ändern.

| Tag | Aufgabe |
| - | - |
| `PRODRATING-SendNicknameButton` | Klammerung um den Bereich für die Zusendung |
| `PRODRATING-SendNicknameButton_input` | HTML-Name des Knopfes für die Zusendung |
| `PRODRATING-NicknameMailRequested` | Klammerung, greift nach der Anforderung |
| `PRODRATING-ChangeNickname_button` | HTML-Name des Knopfes zum Ändern |
| `PRODRATING-MinimumNicknameLength` | Mindestlänge eines Nicknames |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PRODRATING-SendNicknameButton}
   <p>Diese E-Mail-Adresse wird bereits unter einem anderen Nickname verwendet.</p>
   <input type="submit" name="~PRODRATING-SendNicknameButton_input~" value="Nickname zusenden">
   <input type="submit" name="~PRODRATING-ChangeNickname_button~" value="Nickname ändern">
{/PRODRATING-SendNicknameButton}

{PRODRATING-NicknameMailRequested}
   <p>Wir haben Ihnen Ihren Nickname zugeschickt. Bitte tragen Sie ihn oben ein.</p>
{/PRODRATING-NicknameMailRequested}
```

`PRODRATING-SendNicknameButton` greift nur, wenn die eingegebene E-Mail-Adresse gültig ist **und** nicht zu dem eingegebenen Nickname passt. Genau dann ist der Hinweis sinnvoll, vorher nicht.

`PRODRATING-MinimumNicknameLength` ist auf allen Templates des Moduls zulässig und eignet sich für einen Hinweis neben dem Eingabefeld.

Der Knopf zum Ändern führt auf das Template ChangeNickname. Dessen Tags stehen auf einer eigenen Seite.

## Die abgeschickte Bewertung anzeigen

Auf den Templates Confirm, ConfirmMail und MailValidation zeigen Sie dem Käufer, was er abgeschickt hat.

| Tag | Liefert |
| - | - |
| `PRODRATING-ID` | die eindeutige Kennung der Bewertung |
| `PRODRATING-Subject_value` | die Überschrift |
| `PRODRATING-Comment_value` | den Kommentar |
| `PRODRATING-Rating_value` | die Punktzahl |
| `PRODRATING-RatingActualPointImage` | das Bild zur Punktzahl |
| `PRODRATING-Date` | den Zeitstempel der Bewertung |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<p>Vielen Dank für Ihre Bewertung.</p>

<dl>
   <dt>Überschrift</dt><dd>~PRODRATING-Subject_value~</dd>
   <dt>Kommentar</dt><dd>~PRODRATING-Comment_value~</dd>
   <dt>Bewertung</dt><dd><img src="~PRODRATING-RatingActualPointImage~" alt="~PRODRATING-Rating_value~ von 10"></dd>
</dl>
```

### Das Datum für Suchmaschinen

Für Mikrodaten brauchen Suchmaschinen das Datum in einzelnen Bestandteilen.

| Tag | Liefert |
| - | - |
| `PRODRATING-Date_day()` | den Tag des Bewertungsdatums |
| `PRODRATING-Date_month()` | den Monat des Bewertungsdatums |
| `PRODRATING-Date_year` | das Jahr des Bewertungsdatums |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<meta itemprop="datePublished"
      content="~PRODRATING-Date_year~-~PRODRATING-Date_month(true)~-~PRODRATING-Date_day(true)~">
```

> [!WARNING]
>
> Verwenden Sie bei Tag und Monat immer das Argument `true`. Ohne Argument und mit `false` füllt das Modul einstellige Werte nicht mit einer Null, sondern mit einem **Leerzeichen** auf. Für eine Datumsangabe in Mikrodaten ist das unbrauchbar, und auch in der Anzeige entsteht eine sichtbare Lücke.

`PRODRATING-Date_year` gibt das Jahr immer vierstellig aus. Ein Argument wird zwar angenommen, aber nicht ausgewertet.

Wegweiser: Mikrodaten für Suchmaschinen und Rich Snippets

## Die Bestätigung per E-Mail

Damit niemand unter fremdem Namen bewertet, schickt das Modul eine E-Mail mit einem Bestätigungslink. Erst nach dem Klick darauf zählt die Bewertung.

| Tag | Gehört auf | Aufgabe |
| - | - | - |
| `PRODRATING-MailConfirmLink` | ConfirmMail | der Bestätigungslink |
| `PRODRATING-RatingAlreadyConfirmed` | MailValidation | Klammerung für den zweiten Klick |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
Bitte bestätigen Sie Ihre Bewertung:
~PRODRATING-MailConfirmLink~
```

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{!PRODRATING-RatingAlreadyConfirmed}
   <p>Danke für die Bestätigung Ihrer Bewertung.</p>
{/!PRODRATING-RatingAlreadyConfirmed}

{PRODRATING-RatingAlreadyConfirmed}
   <p>Sie haben diese Bewertung bereits bestätigt.</p>
{/PRODRATING-RatingAlreadyConfirmed}
```

> [!WARNING]
>
> `PRODRATING-MailConfirmLink` muss im Mailtemplate stehen. Ohne diesen Link kommt der Käufer nicht an die Bestätigung, und die Bewertung bleibt unveröffentlicht.

Ein Bestätigungslink lässt sich mehrfach anklicken. `PRODRATING-RatingAlreadyConfirmed` unterscheidet den ersten Klick von jedem weiteren, damit die Seite nicht zweimal dasselbe Dankeschön zeigt.

## Zurück in den Shop

| Tag | Führt zu |
| - | - |
| `PRODRATING-LinkToWebsale` | der Produktansicht im Shop |
| `PRODRATING-ReadComments` | der Liste der vorhandenen Bewertungen |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<a href="~PRODRATING-LinkToWebsale~">Zurück zum Produkt</a>
<a href="~PRODRATING-ReadComments~">Vorhandene Bewertungen lesen</a>
```

Produktnummer und Produktindex stehen auf allen Templates dieser Seite über `PR-Number` und `PR-ProdIndex` zur Verfügung. Weitere Produktdaten holen Sie sich mit `PR-AdvData()`.

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

## Allgemeine Fehlermeldung

`PRODRATING-Error` gibt die allgemeine Fehlermeldung des Moduls aus und greift als Klammerung, wenn eine vorliegt. Es ist auf den Templates Edit und ChangeNickname zulässig.

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

## Die Tags im Überblick

| Tag | Einzel-Tag | Bereichs-Tag | negatives Bereichs-Tag | Schleifen-Tag | Templates |
| - | - | - | - | - | - |
| `PRODRATING-Error` | ja | ja | ja | – | Edit, ChangeNickname |
| `PRODRATING-LinkSubmitComment` | ja | – | – | – | Edit |
| `PRODRATING-Subject_input` | ja | ja | ja | – | Edit |
| `PRODRATING-Subject_value` | ja | ja | ja | – | Edit, Confirm, ConfirmMail, MailValidation, List |
| `PRODRATING-Comment_input` | ja | ja | ja | – | Edit |
| `PRODRATING-Comment_value` | ja | ja | ja | – | Edit, Confirm, ConfirmMail, MailValidation, List |
| `PRODRATING-Rating_input` | ja | ja | ja | – | Edit |
| `PRODRATING-Rating_value` | ja | ja | ja | – | Edit, Confirm, ConfirmMail, MailValidation, List |
| `PRODRATING-Rating_htmlvalue` | ja | ja | ja | – | Edit, Confirm, MailValidation, List |
| `PRODRATING-RatingPoint1` … `10` | ja | ja | ja | – | Edit, Confirm, MailValidation, List |
| `PRODRATING-RatingPoint1Image` … `10Image` | ja | ja | ja | – | Edit, Confirm, MailValidation, List |
| `PRODRATING-RatingActualPointImage` | ja | ja | ja | – | Confirm, MailValidation, List |
| `PRODRATING-InputError` | ja | ja | ja | – | Edit, ChangeNickname |
| `PRODRATING-InputErrorList` | ja | ja | ja | – | Edit, ChangeNickname |
| `PRODRATING-Nickname_error_flag` | ja | – | – | – | Edit |
| `PRODRATING-Email_error_flag` | ja | – | – | – | Edit |
| `PRODRATING-Rating_error_flag` | ja | – | – | – | Edit |
| `PRODRATING-MultipleInput_error` | – | ja | ja | – | Edit |
| `PRODRATING-SendNicknameButton` | – | ja | ja | – | Edit, ChangeNickname |
| `PRODRATING-SendNicknameButton_input` | ja | ja | ja | – | Edit, ChangeNickname |
| `PRODRATING-NicknameMailRequested` | – | ja | ja | – | Edit, ChangeNickname |
| `PRODRATING-ChangeNickname_button` | ja | – | – | – | Edit |
| `PRODRATING-MinimumNicknameLength` | ja | – | – | – | alle |
| `PRODRATING-ID` | ja | ja | ja | – | Confirm, ConfirmMail, MailValidation, List |
| `PRODRATING-Date` | ja | ja | ja | – | Confirm, MailValidation, List |
| `PRODRATING-Date_day()` | ja | ja | ja | – | Confirm, MailValidation, List |
| `PRODRATING-Date_month()` | ja | ja | ja | – | Confirm, MailValidation, List |
| `PRODRATING-Date_year` | ja | ja | ja | – | Confirm, MailValidation, List |
| `PRODRATING-MailConfirmLink` | ja | – | – | – | ConfirmMail |
| `PRODRATING-RatingAlreadyConfirmed` | – | ja | ja | – | MailValidation |
| `PRODRATING-LinkToWebsale` | ja | ja | ja | – | Edit, Confirm, MailValidation, List, ChangeNickname |
| `PRODRATING-ReadComments` | ja | – | – | – | Edit, Confirm, MailValidation |

Die `_input`-Tags geben feste HTML-Namen aus und sind damit nie leer. Ihre Klammerung greift deshalb immer und bringt keinen Gewinn.

## Verwandte Themen

* Wegweiser: [Beschreibung des Produktbewertungs-Moduls](https://dokumentation.websale.de/v8s/websale-produktbewertung/beschreibung-des-produktbewertungs-moduls.md)
* Wegweiser: [Produktbewertungs-Modul konfigurieren](https://dokumentation.websale.de/v8s/websale-produktbewertung/produktbewertungs-modul-konfigurieren.md)
* Referenz: PRODRATING- (Bewertungen anzeigen)
* Referenz: PRODRATING- (Nickname ändern)
* Referenz: [RATEREMINDMAIL- (Bewertungserinnerung)](https://dokumentation.websale.de/v8s/referenz/tags/rateremindmail-bewertungserinnerung.md)


## Related topics

- [RATEREMINDMAIL- (Bewertungserinnerung)](https://dokumentation.websale.de/v8s/referenz/tags/rateremindmail-bewertungserinnerung.md)
- [Materialien Produktbewertung](https://dokumentation.websale.de/v8s/materialien/materialien-produktbewertung.md)
- [Bewertungskonfiguration prodrating.config](https://dokumentation.websale.de/v8s/referenz/konfigurationen/bewertungskonfiguration-prodrating-config.md)
- [E-PRODRATING-EKOMI_ (eKomi Produktbewertung)](https://dokumentation.websale.de/v8s/referenz/tags/e-prodrating-ekomi.md)
- [Bewertungen beim Produkt anzeigen](https://dokumentation.websale.de/v8s/websale-produktbewertung/bewertungen-beim-produkt-anzeigen.md)


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