Hey zusammen,
ich bin gerade dabei ein SW6.5 Plugin zu erstellen, welches das Menü um einen Punkt erweitert und dort eine entsprechende Auflistung erzeugen soll.
Aufgelistet werden soll dort eine Tabelle mit folgenden Informationen:
Artikelname | Artikelnummer | Aktiv | Bewertungen (gesamt)
Sprich ich möchte alle (Haupt-)Artikel - also ohne Varianten - darstellen und deren Gesamtzahl an Bewertungen.
Das Menü habe ich entsprechend erweitert und die Darstellung auf folgende Art und Weise realisiert:
In der index.js habe ich folgendes:
[...]
computed: {
productRepository() {
return this.repositoryFactory.create('product');
},
productCriteria() {
return new Criteria()
.addAggregation(
Criteria.terms('reviewCounter', 'product.id', null, null, Criteria.count('reviewCount', 'product.productReviews.id'))
)
.addFilter(
Criteria.equals('parentId', null)
)
},
columns() {
return this.getColumns();
}
},
created() {
this.repository = this.productRepository;
this.repository.search(this.productCriteria, Shopware.Context.api).then(products => {
this.products = products;
this.rebuild(this.products)
});
},
methods: {
rebuild(products) {
let buckets = products.aggregations.reviewCounter.buckets;
products.forEach( product => {
let obj = buckets.find(o => o.key === product.id);
product.totalReviews = obj.reviewCount.count;
});
},
[...]
}
[...]
In der entsprechenden html.twig das folgende:
[...]
<sw-entity-listing
v-if="products"
:items="products"
:repository="repository"
:showSelection="true"
:columns="columns"
:allowDelete="false"
@update-records="rebuild"
>
[...]
<template #column-reviewCount="{ item }">
{{ item.totalReviews }}
</template>
</sw-entity-listing>
[...]
Das ganze funktioniert so weit auch, jedoch kann ich auf diese Art und weiße natürlich die Spalte mit den Gesamtzahl der Bewertungen nicht sortieren im Frontend (durch Klick auf den Spalten Titel).
Wenn ich die productReviews als Association hole, erhalte ich natürlich viel zu viele unnötige Informationen der Bewertungen, wobei ich ja nur die Gesamtzahl benötige. Hierbei könnte ich über die length
dann die Gesamtzahl der jeweiligen Bewertungen herausholen.
Ein Count auf die Associations durchzuführen hab ich nicht hinbekommen bzw. nur so, dass er mir die Gesamtzahl aller Bewertungen ausgespuckt hat, nicht jedoch die Gesamtzahl des jeweiligen Artikels.
Gibt es da keine bessere / schönere Möglichkeit direkt an die Zahl der Bewertungen des jeweiligen Artikels zu kommen?
Ich stehe irgendwie ein wenig auf dem Schlauch aktuell.
Währe über Tipps und / oder Vorschläge dankbar.