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

# ProductRating

> ProductRating-Aktionen für Produktbewertungen: Bewertungen durch eingeloggte Kunden erstellen, bearbeiten und wieder löschen lassen.

In diesem Abschnitt werden die verfügbaren Aktionen im Bereich Produktbewertungen beschrieben. Mit diesen Aktionen können Bewertungen erstellt, bearbeitet und gelöscht werden.

***

## Aktionen im Überblick

| **Aktion**            | **Beschreibung**                             |
| --------------------- | -------------------------------------------- |
| `ProductRatingAdd`    | Erstellt eine neue Produktbewertung.         |
| `ProductRatingUpdate` | Bearbeitet eine bestehende Produktbewertung. |
| `ProductRatingDelete` | Löscht eine bestehende Produktbewertung.     |

***

## Aktionen

### ProductRatingAdd

Mit dieser Aktion wird eine neue Bewertung für ein Produkt erstellt. Der Kunde muss dafür eingeloggt sein.

**Anwendungsbeispiel**\
Nutzbar auf der Produktdetailseite oder in der Bestellhistorie, um eingeloggten Kunden die Möglichkeit zu geben, ein gekauftes Produkt zu bewerten.

**Parameter**

| **Name**      | **Beschreibung**                                        |
| ------------- | ------------------------------------------------------- |
| `productId`   | Die ID des Produkts, das bewertet werden soll.          |
| `orderId`     | Die ID der Bestellung, zu der die Bewertung gehört.     |
| `points`      | Die Bewertung in Punkten (z.B. 1-5 Sterne).             |
| `subject`     | Der Titel der Bewertung.                                |
| `description` | Der Bewertungstext.                                     |
| `anonymous`   | Gibt an, ob die Bewertung anonym abgegeben werden soll. |

**Fehlercodes**

| **Fehlercode**        | **Beschreibung**                                                          |
| --------------------- | ------------------------------------------------------------------------- |
| `notLoggedIn`         | Der Benutzer ist nicht eingeloggt.                                        |
| `missingProductId`    | Parameter `productId` fehlt.                                              |
| `missingOrderId`      | Parameter `orderId` fehlt.                                                |
| `missingPoints`       | Parameter `points` fehlt.                                                 |
| `ratingAlreadyExists` | Für dieses Produkt und diese Bestellung existiert bereits eine Bewertung. |

**Zugehörige Module, Variablen & Methoden**

* [\$wsProductRating](/frontend/referenz/module/wsproductrating)
* [\$wsProductRating.checkRatingExistence()](/frontend/referenz/module/wsproductrating#\$wsproductrating-checkratingexistence)
* [\$wsProductRating.loadAllProductRatings()](/frontend/referenz/module/wsproductrating#\$wsproductrating-loadallproductratings)
* [\$wsAccount.isLoggedIn](/frontend/referenz/module/wsAccount#\$wsaccount-isloggedin)

**Beispiel** das zeigt, wie ein eingeloggter Kunde ein Produkt mit Sternebewertung, Titel und Kommentar bewerten kann, inklusive Erfolgsausgabe.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $myActionProductRatingAdd = $wsActions.create("ProductRatingAdd") }}
<form method="post" action="{{= $wsViews.current.url() }}">
    <input type="hidden" name="wscsrf" value="{{= $myActionProductRatingAdd.csrf }}">
    <input type="hidden" name="wsact" value="{{= $myActionProductRatingAdd.id }}">
    <input type="hidden" name="productId" value="{{= $myProduct.id }}">
    <input type="hidden" name="orderId" value="{{= $myOrderId }}">
    <input type="hidden" name="points" value="{{= $myActionProductRatingAdd.fields.points | ifNull(1) }}">
    <input type="text" name="subject">
    <textarea name="description"></textarea>
    <button type="submit">Bewertung abgeben.</button>
</form>
```

***

### ProductRatingUpdate

Mit dieser Aktion wird eine bestehende Produktbewertung des eingeloggten Kunden bearbeitet.

**Anwendungsbeispiel**\
Nutzbar auf der Produktdetailseite oder im Kundenkonto, wenn ein Kunde seine abgegebene Bewertung nachträglich anpassen möchte.

**Parameter**

| **Name**      | **Beschreibung**                                              |
| ------------- | ------------------------------------------------------------- |
| `productId`   | Die ID des Produkts, dessen Bewertung bearbeitet werden soll. |
| `orderId`     | Die ID der Bestellung, zu der die Bewertung gehört.           |
| `points`      | Die neue Bewertung in Punkten.                                |
| `subject`     | Der neue Titel der Bewertung.                                 |
| `description` | Der neue Bewertungstext.                                      |
| `anonymous`   | Gibt an, ob die Bewertung anonym abgegeben werden soll.       |

**Fehlercodes**

| **Fehlercode**     | **Beschreibung**                                                       |
| ------------------ | ---------------------------------------------------------------------- |
| `notLoggedIn`      | Der Benutzer ist nicht eingeloggt.                                     |
| `missingProductId` | Parameter `productId` fehlt.                                           |
| `missingOrderId`   | Parameter `orderId` fehlt.                                             |
| `invalidRating`    | Die Bewertung existiert nicht oder gehört nicht zu diesem Kundenkonto. |

**Zugehörige Module, Variablen & Methoden**

* [\$wsProductRating](/frontend/referenz/aktionen/productrating)
* [\$wsProductRating.loadSingleRating()](/frontend/referenz/module/wsproductrating#\$wsproductrating-loadsinglerating)
* [\$wsProductRating.loadRatingByAccount()](/frontend/referenz/module/wsproductrating#\$wsproductrating-loadratingbyaccount)
* [\$wsAccount.isLoggedIn](/frontend/referenz/module/wsAccount#\$wsaccount-isloggedin)

**Beispiel** das zeigt, wie ein Kunde eine bestehende Bewertung bearbeiten kann, mit vorausgefüllten Feldern.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $myActionProductRatingUpdate = $wsActions.create("ProductRatingUpdate") }}
{{ var $myRating = $wsProductRating.loadSingleRating($myProduct, $myOrderId) }}
<form method="post" action="{{= $wsViews.current.url() }}">
    <input type="hidden" name="wscsrf" value="{{= $myActionProductRatingUpdate.csrf }}">
    <input type="hidden" name="wsact" value="{{= $myActionProductRatingUpdate.id }}">
    <input type="hidden" name="productId" value="{{= $myProduct }}">
    <input type="hidden" name="orderId" value="{{= $myOrderId }}">
    <input type="hidden" name="points" value="{{= $myRating.points | ifNull(1) }}">
    <input type="text" name="subject" value="{{= $myRating.subject | ifNull('') }}">
    <textarea name="description">{{= $myRating.description | ifNull('') }}</textarea>
    <button type="submit">Bewertung aktualisieren.</button>
</form>
```

***

### ProductRatingDelete

Mit dieser Aktion wird eine bestehende Produktbewertung des eingeloggten Kunden gelöscht.

**Anwendungsbeispiel**\
Nutzbar auf der Produktdetailseite oder im Kundenkonto, wenn ein Kunde seine abgegebene Bewertung entfernen möchte.

**Parameter**

| **Name**    | **Beschreibung**                                            |
| ----------- | ----------------------------------------------------------- |
| `productId` | Die ID des Produkts, dessen Bewertung gelöscht werden soll. |
| `orderId`   | Die ID der Bestellung, zu der die Bewertung gehört.         |

**Fehlercodes**

| **Fehlercode**     | **Beschreibung**                                                       |
| ------------------ | ---------------------------------------------------------------------- |
| `notLoggedIn`      | Der Benutzer ist nicht eingeloggt.                                     |
| `missingProductId` | Parameter `productId` fehlt.                                           |
| `missingOrderId`   | Parameter `orderId` fehlt.                                             |
| `invalidRating`    | Die Bewertung existiert nicht oder gehört nicht zu diesem Kundenkonto. |

**Zugehörige Module, Variablen & Methoden**

* [\$wsProductRating](/frontend/referenz/aktionen/productrating)
* [\$wsProductRating.loadRatingByAccount()](/frontend/referenz/module/wsproductrating#\$wsproductrating-loadratingbyaccount)
* [\$wsAccount.isLoggedIn](/frontend/referenz/module/wsAccount#\$wsaccount-isloggedin)

**Beispiel** das zeigt, wie eine Bewertung über einen Button gelöscht wird.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $myActionProductRatingDelete = $wsActions.create("ProductRatingDelete") }}
<form method="post" action="{{= $wsViews.current.url() }}">
    <input type="hidden" name="wscsrf" value="{{= $myActionProductRatingDelete.csrf }}">
    <input type="hidden" name="wsact" value="{{= $myActionProductRatingDelete.id }}">
    <input type="hidden" name="productId" value="{{= $myProduct.id }}">
    <input type="hidden" name="orderId" value="{{= $myOrderId }}">
    <button type="submit">Bewertung löschen.</button>
</form>
```


## Related topics

- [Storefront API Kundenbewertungen](/schnittstellen/storefront-api/storefront-api-kundenbewertungen.md)
- [general - Allgemeine Shopeinstellungen](/konfiguration/general-allgemeine-shopeinstellungen.md)
- [actions - Produkte](/konfiguration/actions-fehlertexte-e-mails/actions-produkte.md)
- [API-Referenz Produktbewertungen](/schnittstellen/admin-interface-api/api-referenz-produktbewertungen.md)
- [$wsProductRating - Produktbewertungen](/frontend/referenz/module/wsproductrating.md)
