Best Answer Marcus Gesing , 07 May 2023 - 08:56
Best Answer Marcus Gesing , 07 May 2023 - 08:56
Geschrieben: 05 May 2023 - 08:56
Hallo zusammen,
um keine Änderungen am Core vorzunehmen, würden wir unseren SmartStore gerne über ein Modul erweitern.
Das Modul soll weitere Produktinformationen aus einer eigenen Datenbank Tabelle ermöglichen und natürlich ohne die Klasse Product zu verändern.
Da es sich bei der Klasse ProductDetailsModel um eine partielle Klasse handelt, wäre es möglich diese zu erweitern. Leider lässt sich eine partielle Klasse nur im selben Assembly erweitern und somit für uns nicht möglich.
Eine weitere Möglichkeit wäre die Implementierung eines eigenen Controllers, doch wie können wir den Controller so integrieren, dass der Controller beim Abruf des Produkts angesprochen wird und die Daten übergibt?
Oder gibt es eine andere Möglichkeit, um weitere Produktinformationen zu ermöglichen?
Danke!
Viele Grüße,
TobiasF
Geschrieben: 05 May 2023 - 13:35
Hi,
Ihr braucht ein eigenes Modul, dieses Modul braucht dann das Interface IActivatableWidget.
Dann braucht Ihr eine SmartViewComponent, die Ihr bsp in productdetails_bottom anzeigen lassen könnt. (Stichwort InvokeAsync)
Das ist eigentlich ganz schön hier beschrieben: https://smartstore.g...-viewcomponents
Geschrieben: 05 May 2023 - 14:45
Hi daniel@streetec,
danke für die Rückmeldung!
Wir würden das ungern über ein Widget lösen, da die Daten sonst nur im Widget zur Verfügung stehen, aber nicht im gesamten View.
Einen View haben wir über unser Modul bereits erfolgreich eingebunden. Nun geht es darum, die Daten für unsere Verwendung anzupassen.
An die Razor Views wird das Object "ProductDetailsModel" übergeben und hier müssten weitere Variablen hinzugefügt werden.
Oder es gibt eine andere Möglichkeit einen zusätzlichen Controller anzusprechen?
Die Daten müssten aber so abgerufen werden, dass sie im View zur Verfügung stehen.
Viele Grüße,
TobiasF
Geschrieben: 06 May 2023 - 23:08
Hallo Tobias,
das selbe Problem hatte ich auch.
Meine Lösung (bis jetzt) ist, dass ich mir ein erweitertes Model für die Produkte gemacht habe (abgeleitete Klasse mit zusätzlichen Properties). Dann mappe ich die Daten im entsprechenden IAsyncActionFilter auf meine Klasse, füge meine Daten hinzu und übergebe das an den View, der dann meine Klasse haben will.
Funktioniert aber leider nicht überall, AJAX-Calls im Warenkorb z.B. kann man so nicht abfangen, da muss der View noch 2x gerendert werden (einmal eben mit den Original-Daten und einmal mit meinen Zusatzdaten).
MfG
Chris
Geschrieben: 07 May 2023 - 08:56 Best Answer
Marcus Gesing
Smartstore AG
Geschrieben: 08 May 2023 - 06:50
"An die Razor Views wird das Object "ProductDetailsModel" übergeben und hier müssten weitere Variablen hinzugefügt werden."Die View-Models leiten von ModelBase ab, welches CustomProperties bereitstellt: "Use this property to store any custom value for your models."
Danke für die Lösung!